> For the complete documentation index, see [llms.txt](https://docs.scaleconnect.com.au/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.scaleconnect.com.au/api/rest-api/scaleapp-rest-api/models.md).

# Models

## The UserInfoDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"UserInfoDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique user identifier (UUID)"},"uid":{"type":"string","description":"Firebase authentication UID"},"name":{"type":"string","description":"User display name","nullable":true},"email":{"type":"string","description":"User email address","format":"email","nullable":true},"phoneNumber":{"type":"string","description":"Phone number in E.164 format","nullable":true},"createdAt":{"type":"string","description":"Timestamp when the user account was created","format":"date-time"},"updatedAt":{"type":"string","description":"Timestamp when the user account was last updated","format":"date-time"}},"required":["id","uid","name","email","phoneNumber","createdAt","updatedAt"]}}}}
```

## The UserAuthInfoDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"UserAuthInfoDto":{"type":"object","properties":{"uid":{"type":"string","description":"Firebase authentication UID"},"email":{"type":"string","description":"User email address","format":"email"},"phoneNumber":{"type":"string","description":"Phone number in E.164 format","nullable":true},"emailVerified":{"type":"boolean","description":"Whether the email has been verified"}},"required":["uid","email","phoneNumber","emailVerified"]}}}}
```

## The AuthMeResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"AuthMeResponseDto":{"type":"object","properties":{"user":{"description":"User database information","allOf":[{"$ref":"#/components/schemas/UserInfoDto"}]},"auth":{"description":"Firebase authentication information","allOf":[{"$ref":"#/components/schemas/UserAuthInfoDto"}]}},"required":["user","auth"]},"UserInfoDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique user identifier (UUID)"},"uid":{"type":"string","description":"Firebase authentication UID"},"name":{"type":"string","description":"User display name","nullable":true},"email":{"type":"string","description":"User email address","format":"email","nullable":true},"phoneNumber":{"type":"string","description":"Phone number in E.164 format","nullable":true},"createdAt":{"type":"string","description":"Timestamp when the user account was created","format":"date-time"},"updatedAt":{"type":"string","description":"Timestamp when the user account was last updated","format":"date-time"}},"required":["id","uid","name","email","phoneNumber","createdAt","updatedAt"]},"UserAuthInfoDto":{"type":"object","properties":{"uid":{"type":"string","description":"Firebase authentication UID"},"email":{"type":"string","description":"User email address","format":"email"},"phoneNumber":{"type":"string","description":"Phone number in E.164 format","nullable":true},"emailVerified":{"type":"boolean","description":"Whether the email has been verified"}},"required":["uid","email","phoneNumber","emailVerified"]}}}}
```

## The CustomTokenRequestDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CustomTokenRequestDto":{"type":"object","properties":{"uid":{"type":"string","description":"Firebase user UID to generate custom token for"}},"required":["uid"]}}}}
```

## The CustomTokenResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CustomTokenResponseDto":{"type":"object","properties":{"customToken":{"type":"string","description":"Firebase custom authentication token"}},"required":["customToken"]}}}}
```

## The PhoneTokenRequestDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PhoneTokenRequestDto":{"type":"object","properties":{"phoneNumber":{"type":"string","description":"Phone number in E.164 format (e.g., +61412345678)","pattern":"^\\+[1-9]\\d{1,14}$"}},"required":["phoneNumber"]}}}}
```

## The IdTokenResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"IdTokenResponseDto":{"type":"object","properties":{"idToken":{"type":"string","description":"Firebase ID token that can be used for authentication"}},"required":["idToken"]}}}}
```

## The BrokerProfileSummaryDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"BrokerProfileSummaryDto":{"type":"object","properties":{"id":{"type":"number"},"first_name":{"type":"string"},"last_name":{"type":"string"},"email":{"type":"string"},"phone_number":{"type":"string"}},"required":["id","first_name","last_name","email","phone_number"]}}}}
```

## The AccountInfoSummaryDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"AccountInfoSummaryDto":{"type":"object","properties":{"account_type":{"type":"string"},"trading_name":{"type":"string"},"aggregator":{"type":"string"},"number_of_clients":{"type":"number"}},"required":["account_type","trading_name","aggregator","number_of_clients"]}}}}
```

## The SchedulingSettingsSummaryDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"SchedulingSettingsSummaryDto":{"type":"object","properties":{"clientReadinessAction":{"type":"string"},"leadTimeMonths":{"type":"number"},"meetingTrigger":{"type":"string"},"reviewFrequency":{"type":"string"}},"required":["clientReadinessAction","leadTimeMonths","meetingTrigger","reviewFrequency"]}}}}
```

## The TeamMemberSummaryDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"TeamMemberSummaryDto":{"type":"object","properties":{"id":{"type":"string"},"role":{"type":"string"},"joinedAt":{"format":"date-time","type":"string"},"user":{"type":"object"}},"required":["id","role","joinedAt","user"]}}}}
```

## The TeamSummaryDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"TeamSummaryDto":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"members":{"type":"array","items":{"$ref":"#/components/schemas/TeamMemberSummaryDto"}}},"required":["id","name","members"]},"TeamMemberSummaryDto":{"type":"object","properties":{"id":{"type":"string"},"role":{"type":"string"},"joinedAt":{"format":"date-time","type":"string"},"user":{"type":"object"}},"required":["id","role","joinedAt","user"]}}}}
```

## The BrokerAuthMeResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"BrokerAuthMeResponseDto":{"type":"object","properties":{"user":{"description":"User database information","allOf":[{"$ref":"#/components/schemas/UserInfoDto"}]},"auth":{"description":"Firebase authentication information","allOf":[{"$ref":"#/components/schemas/UserAuthInfoDto"}]},"profile":{"description":"Broker profile summary","nullable":true,"allOf":[{"$ref":"#/components/schemas/BrokerProfileSummaryDto"}]},"accountInfo":{"description":"Broker account info summary","nullable":true,"allOf":[{"$ref":"#/components/schemas/AccountInfoSummaryDto"}]},"schedulingSettings":{"description":"Scheduling bot settings summary","nullable":true,"allOf":[{"$ref":"#/components/schemas/SchedulingSettingsSummaryDto"}]},"team":{"description":"Broker team summary","nullable":true,"allOf":[{"$ref":"#/components/schemas/TeamSummaryDto"}]}},"required":["user","auth"]},"UserInfoDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique user identifier (UUID)"},"uid":{"type":"string","description":"Firebase authentication UID"},"name":{"type":"string","description":"User display name","nullable":true},"email":{"type":"string","description":"User email address","format":"email","nullable":true},"phoneNumber":{"type":"string","description":"Phone number in E.164 format","nullable":true},"createdAt":{"type":"string","description":"Timestamp when the user account was created","format":"date-time"},"updatedAt":{"type":"string","description":"Timestamp when the user account was last updated","format":"date-time"}},"required":["id","uid","name","email","phoneNumber","createdAt","updatedAt"]},"UserAuthInfoDto":{"type":"object","properties":{"uid":{"type":"string","description":"Firebase authentication UID"},"email":{"type":"string","description":"User email address","format":"email"},"phoneNumber":{"type":"string","description":"Phone number in E.164 format","nullable":true},"emailVerified":{"type":"boolean","description":"Whether the email has been verified"}},"required":["uid","email","phoneNumber","emailVerified"]},"BrokerProfileSummaryDto":{"type":"object","properties":{"id":{"type":"number"},"first_name":{"type":"string"},"last_name":{"type":"string"},"email":{"type":"string"},"phone_number":{"type":"string"}},"required":["id","first_name","last_name","email","phone_number"]},"AccountInfoSummaryDto":{"type":"object","properties":{"account_type":{"type":"string"},"trading_name":{"type":"string"},"aggregator":{"type":"string"},"number_of_clients":{"type":"number"}},"required":["account_type","trading_name","aggregator","number_of_clients"]},"SchedulingSettingsSummaryDto":{"type":"object","properties":{"clientReadinessAction":{"type":"string"},"leadTimeMonths":{"type":"number"},"meetingTrigger":{"type":"string"},"reviewFrequency":{"type":"string"}},"required":["clientReadinessAction","leadTimeMonths","meetingTrigger","reviewFrequency"]},"TeamSummaryDto":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"members":{"type":"array","items":{"$ref":"#/components/schemas/TeamMemberSummaryDto"}}},"required":["id","name","members"]},"TeamMemberSummaryDto":{"type":"object","properties":{"id":{"type":"string"},"role":{"type":"string"},"joinedAt":{"format":"date-time","type":"string"},"user":{"type":"object"}},"required":["id","role","joinedAt","user"]}}}}
```

## The BrokerDetailsDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"BrokerDetailsDto":{"type":"object","properties":{"brokerSupabaseId":{"type":"string","description":"Broker's Supabase ID"},"brokerId":{"type":"number","description":"Broker profile ID","nullable":true},"firstName":{"type":"string","description":"Broker's first name","nullable":true},"lastName":{"type":"string","description":"Broker's last name","nullable":true},"name":{"type":"string","description":"Broker's full name","nullable":true},"email":{"type":"string","description":"Broker's email address","nullable":true},"phoneNumber":{"type":"string","description":"Broker's phone number","nullable":true},"companyName":{"type":"string","description":"Broker's company name","nullable":true}},"required":["brokerSupabaseId","brokerId","firstName","lastName","name","email","phoneNumber","companyName"]}}}}
```

## The BrokerCreatedUserDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"BrokerCreatedUserDto":{"type":"object","properties":{"userId":{"type":"string","description":"User ID of the broker-created user entry"},"createdAt":{"format":"date-time","type":"string","description":"When the user entry was created"},"name":{"type":"string","description":"User's name if personal details exist","nullable":true},"broker":{"description":"Details of the broker who created this user entry","allOf":[{"$ref":"#/components/schemas/BrokerDetailsDto"}]}},"required":["userId","createdAt","name","broker"]},"BrokerDetailsDto":{"type":"object","properties":{"brokerSupabaseId":{"type":"string","description":"Broker's Supabase ID"},"brokerId":{"type":"number","description":"Broker profile ID","nullable":true},"firstName":{"type":"string","description":"Broker's first name","nullable":true},"lastName":{"type":"string","description":"Broker's last name","nullable":true},"name":{"type":"string","description":"Broker's full name","nullable":true},"email":{"type":"string","description":"Broker's email address","nullable":true},"phoneNumber":{"type":"string","description":"Broker's phone number","nullable":true},"companyName":{"type":"string","description":"Broker's company name","nullable":true}},"required":["brokerSupabaseId","brokerId","firstName","lastName","name","email","phoneNumber","companyName"]}}}}
```

## The BrokerConnectionsResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"BrokerConnectionsResponseDto":{"type":"object","properties":{"brokerCreatedUsers":{"description":"List of broker-created user entries for the authenticated user's phone number","type":"array","items":{"$ref":"#/components/schemas/BrokerCreatedUserDto"}},"connectedBrokers":{"description":"List of brokers connected to the current user","type":"array","items":{"$ref":"#/components/schemas/BrokerDetailsDto"}}},"required":["brokerCreatedUsers","connectedBrokers"]},"BrokerCreatedUserDto":{"type":"object","properties":{"userId":{"type":"string","description":"User ID of the broker-created user entry"},"createdAt":{"format":"date-time","type":"string","description":"When the user entry was created"},"name":{"type":"string","description":"User's name if personal details exist","nullable":true},"broker":{"description":"Details of the broker who created this user entry","allOf":[{"$ref":"#/components/schemas/BrokerDetailsDto"}]}},"required":["userId","createdAt","name","broker"]},"BrokerDetailsDto":{"type":"object","properties":{"brokerSupabaseId":{"type":"string","description":"Broker's Supabase ID"},"brokerId":{"type":"number","description":"Broker profile ID","nullable":true},"firstName":{"type":"string","description":"Broker's first name","nullable":true},"lastName":{"type":"string","description":"Broker's last name","nullable":true},"name":{"type":"string","description":"Broker's full name","nullable":true},"email":{"type":"string","description":"Broker's email address","nullable":true},"phoneNumber":{"type":"string","description":"Broker's phone number","nullable":true},"companyName":{"type":"string","description":"Broker's company name","nullable":true}},"required":["brokerSupabaseId","brokerId","firstName","lastName","name","email","phoneNumber","companyName"]}}}}
```

## The ImportBrokerUserDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ImportBrokerUserDto":{"type":"object","properties":{"brokerUserId":{"type":"string","description":"User ID of the broker-created user to import"}},"required":["brokerUserId"]}}}}
```

## The BrokerConnectionResultDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"BrokerConnectionResultDto":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the operation was successful"},"message":{"type":"string","description":"Message describing the result"},"activeUserId":{"type":"string","description":"The user ID that is now active","nullable":true}},"required":["success","message","activeUserId"]}}}}
```

## The LinkBrokerDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"LinkBrokerDto":{"type":"object","properties":{"brokerSupabaseId":{"type":"string","description":"Supabase ID of the broker to link to"}},"required":["brokerSupabaseId"]}}}}
```

## The CreateBrokerUserDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CreateBrokerUserDto":{"type":"object","properties":{"brokerId":{"type":"string","description":"The broker identifier (Clerk user ID or database user ID). Optional - if not provided, uses the authenticated user's Clerk ID to find the broker's database user ID."},"userId":{"type":"string","description":"The user ID to link to the broker"},"teamId":{"type":"string","description":"The team the client is added to. Optional - defaults to the broker's primary team. Must be a team the broker owns or is a member of."}},"required":["userId"]}}}}
```

## The LinkByPhoneDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"LinkByPhoneDto":{"type":"object","properties":{"phone1":{"type":"string","description":"Primary client phone number in E.164 format"},"phone2":{"type":"string","description":"Secondary client phone number in E.164 format (optional, for joint accounts)"}},"required":["phone1"]}}}}
```

## The BrokerDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"BrokerDto":{"type":"object","properties":{"userId":{"type":"string","description":"id of broker"},"first_name":{"type":"string","description":"first name of broker"},"last_name":{"type":"string","description":"last name of broker"},"email":{"type":"string","description":"email of broker"},"phone_number":{"type":"string","description":"phone number of broker"}},"required":["userId","first_name","last_name","email","phone_number"]}}}}
```

## The UpdateAccountInfoDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"UpdateAccountInfoDto":{"type":"object","properties":{"account_type":{"type":"string","description":"Account Type (optional).","enum":["solo","admin","member"]},"trading_name":{"type":"string","description":"Trading name (optional)."},"aggregator":{"type":"string","description":"Aggregator (optional)."},"number_of_clients":{"type":"number","description":"Number of clients (optional)."}}}}}}
```

## The UpdateBrokerDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"UpdateBrokerDto":{"type":"object","properties":{"first_name":{"type":"string","description":"first name of broker (optional)."},"last_name":{"type":"string","description":"last name of broker (optional)."},"email":{"type":"string","description":"email of broker (optional)."},"phone_number":{"type":"string","description":"phone number of broker (optional)."},"accountInfo":{"description":"Account info details of broker to create or update alongside the profile (optional).","allOf":[{"$ref":"#/components/schemas/UpdateAccountInfoDto"}]},"accountInfoId":{"type":"number","description":"AccountInfo id (optional)."}}},"UpdateAccountInfoDto":{"type":"object","properties":{"account_type":{"type":"string","description":"Account Type (optional).","enum":["solo","admin","member"]},"trading_name":{"type":"string","description":"Trading name (optional)."},"aggregator":{"type":"string","description":"Aggregator (optional)."},"number_of_clients":{"type":"number","description":"Number of clients (optional)."}}}}}}
```

## The AccountInfoDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"AccountInfoDto":{"type":"object","properties":{"account_type":{"type":"string","description":"Account Type","enum":["solo","admin","member"]},"trading_name":{"type":"string","description":"Trading name. Required for solo/admin accounts; members inherit it from the team their input code resolves to."},"aggregator":{"type":"string","description":"Aggregator. Required for solo/admin accounts; omitted when joining a team as a member."},"number_of_clients":{"type":"number","description":"Number of clients. Optional for members joining an existing team."},"input_code":{"type":"string","description":"Team invite code. When provided, the user is added to the team whose invite_token matches this code. Used when joining a team as a member."}},"required":["account_type"]}}}}
```

## The PersonalProjectionsAndSettingsDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PersonalProjectionsAndSettingsDto":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"},"salaryGrowth":{"type":"number"},"livingExpensesGrowth":{"type":"number"},"capitalGrowth":{"type":"number"},"costEscalation":{"type":"number"},"revenueGrowth":{"type":"number"},"interestRate":{"type":"number"}},"required":["id","createdAt","updatedAt","salaryGrowth","livingExpensesGrowth","capitalGrowth","costEscalation","revenueGrowth","interestRate"]}}}}
```

## The IncomeDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"IncomeDto":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"},"grossSalary":{"type":"number"},"recurringBonuses":{"type":"number"},"sideHustleIncome":{"type":"number"},"oneOffBonus":{"type":"number"}},"required":["id","createdAt","updatedAt","grossSalary","recurringBonuses","sideHustleIncome","oneOffBonus"]}}}}
```

## The ExpenseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ExpenseDto":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"},"date":{"format":"date-time","type":"string"},"endDate":{"format":"date-time","type":"string"},"amount":{"type":"number"},"name":{"type":"string"},"frequency":{"type":"string","enum":["WEEKLY","MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUAL","ANNUAL","ONE_OFF"]},"type":{"type":"string","enum":["LIVING_EXPENSES","COUNCIL_RATES","BODY_CORPORATE_FEES","WATER_AND_ELECTRICITY","MANAGEMENT_FEES","LANDLORDS_INSURANCE","BUILDING_INSURANCE","OFFSET_ACCOUNT_FEE","HECS_HELP_LOAN","OTHERS"]}},"required":["id","createdAt","updatedAt","date","endDate","amount","name","frequency","type"]}}}}
```

## The PersonalExpenseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PersonalExpenseDto":{"type":"object","properties":{"date":{"type":"string","description":"The date when the expense starts"},"endDate":{"type":"string","description":"The end date of the expense period"},"amount":{"type":"number","description":"The amount of the expense"},"name":{"type":"string","description":"The name of the expense"},"frequency":{"type":"string","description":"The frequency of the expense","enum":["WEEKLY","MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUAL","ANNUAL","ONE_OFF"]},"type":{"type":"string","description":"The type of the expense","enum":["LIVING_EXPENSES","COUNCIL_RATES","BODY_CORPORATE_FEES","WATER_AND_ELECTRICITY","MANAGEMENT_FEES","LANDLORDS_INSURANCE","BUILDING_INSURANCE","OFFSET_ACCOUNT_FEE","HECS_HELP_LOAN","OTHERS"]}},"required":["date","endDate","amount","name","frequency","type"]}}}}
```

## The PersonalAssumptionDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PersonalAssumptionDto":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"},"amount":{"type":"number"},"date":{"format":"date-time","type":"string"},"type":{"type":"string","enum":["GROSS_ANUAL_SALARY","LIVING_EXPENSES","HECS_HELP_LOAN","DEPENDENTS","SIDE_HUSTLE_INCOME","RECURRING_BONUSES","PERSONAL_LOANS","PAYG_TAX","MISC_INVESTMENT_CASHFLOWS"]},"frequency":{"type":"string","enum":["WEEKLY","MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUAL","ANNUAL","ONE_OFF"]},"monthPaid":{"type":"number"},"hecsHelpLoan":{"type":"string","enum":["REPAY","ADD"]}},"required":["id","createdAt","updatedAt","amount","date","type","frequency","monthPaid","hecsHelpLoan"]}}}}
```

## The PersonalActualDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PersonalActualDto":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"},"amount":{"type":"number"},"date":{"format":"date-time","type":"string"},"endDate":{"format":"date-time","type":"string"},"frequency":{"type":"string","enum":["WEEKLY","MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUAL","ANNUAL","ONE_OFF"]},"type":{"type":"string","enum":["GROSS_ANUAL_SALARY","LIVING_EXPENSES","HECS_HELP_LOAN","DEPENDENTS","SIDE_HUSTLE_INCOME","RECURRING_BONUSES","ONE_OFF_BONUSES","PERSONAL_LOANS","PAYG_TAX"]}},"required":["id","createdAt","updatedAt","amount","date","endDate","frequency","type"]}}}}
```

## The PersonalLoanDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PersonalLoanDto":{"type":"object","properties":{"loanName":{"type":"string","description":"The name of the loan"},"loanStartDate":{"type":"string","description":"The start date of the loan"},"termInYears":{"type":"number","description":"The term of the loan in years"},"initialAmount":{"type":"number","description":"The initial amount of the loan"},"interestRate":{"type":"number","description":"The interest rate of the loan"},"repaymentAmount":{"type":"number","description":"The repayment amount for the loan"},"frequency":{"type":"string","description":"The frequency of the loan repayments","enum":["MONTHLY","FORTNIGHTLY","WEEKLY","WEEKS_PER_FORTNIGHT"]},"balloonPayment":{"type":"number","description":"The balloon payment amount at the end of the loan term"},"type":{"type":"string","enum":["PERSONAL","CAR","BUSINESS","ASSET_FINANCE"],"description":"PERSONAL | CAR | BUSINESS | ASSET_FINANCE. BUSINESS and ASSET_FINANCE added for Entities & Commercial (the two ported loan modals); Postgres enum extended by migration 1790000000002."},"isExistingLoan":{"type":"boolean","description":"Whether the loan is new (false), existing (true), or left unspecified (null).","nullable":true}},"required":["loanName","loanStartDate","termInYears","initialAmount","interestRate","repaymentAmount","frequency","balloonPayment","type"]}}}}
```

## The CapitalTransactionDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CapitalTransactionDto":{"type":"object","properties":{"amount":{"type":"number","description":"The amount involved in the capital transaction"},"date":{"type":"string","description":"The date of the capital transaction"},"cashProceeds":{"type":"number","description":"The cash proceeds from the capital transaction"},"type":{"type":"string","description":"The type of the capital transaction","enum":["gain","loss"]}},"required":["amount","date","cashProceeds","type"]}}}}
```

## The OwnedEntityDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"OwnedEntityDto":{"type":"object","properties":{"entityId":{"type":"string"},"strategyId":{"type":"string","description":"Strategy (control centre) the entity belongs to."},"entityName":{"type":"string","description":"Workbook INPUTS!199."},"entityType":{"type":"string","description":"Workbook INPUTS!200."},"ownerSlot":{"type":"number","description":"Owner slot 1–5 on the entity (workbook INPUTS!243–247)."},"ownershipPercent":{"type":"number","description":"Owner share % (workbook INPUTS!248–252). Null when not set on the owner row.","nullable":true},"relation":{"type":"string","description":"Relationship label, display only (workbook INPUTS!256–260).","nullable":true},"matchedBy":{"type":"string","description":"How this owner row was matched to the person: `userId` (client_entity_owner.user_id) or `name` (owner full_name equals the person's name; the row has no user_id yet).","enum":["userId","name"]}},"required":["entityId","strategyId","entityName","entityType","ownerSlot","ownershipPercent","relation","matchedBy"]}}}}
```

## The PersonalEntityInputsDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PersonalEntityInputsDto":{"type":"object","properties":{"userSlot":{"type":"number","description":"Model column this person occupies: 1 = User 1 (INPUTS!H18), 2 = User 2 (INPUTS!I18). The person whose details these are is always User 1 in their own model; their partner is User 2. Read-only.","enum":[1,2]},"ownedEntities":{"description":"Active entities this person owns, derived from client_entity_owner (inverse of INPUTS!242–254). Edit via the entity routes.","type":"array","items":{"$ref":"#/components/schemas/OwnedEntityDto"}}},"required":["userSlot","ownedEntities"]},"OwnedEntityDto":{"type":"object","properties":{"entityId":{"type":"string"},"strategyId":{"type":"string","description":"Strategy (control centre) the entity belongs to."},"entityName":{"type":"string","description":"Workbook INPUTS!199."},"entityType":{"type":"string","description":"Workbook INPUTS!200."},"ownerSlot":{"type":"number","description":"Owner slot 1–5 on the entity (workbook INPUTS!243–247)."},"ownershipPercent":{"type":"number","description":"Owner share % (workbook INPUTS!248–252). Null when not set on the owner row.","nullable":true},"relation":{"type":"string","description":"Relationship label, display only (workbook INPUTS!256–260).","nullable":true},"matchedBy":{"type":"string","description":"How this owner row was matched to the person: `userId` (client_entity_owner.user_id) or `name` (owner full_name equals the person's name; the row has no user_id yet).","enum":["userId","name"]}},"required":["entityId","strategyId","entityName","entityType","ownerSlot","ownershipPercent","relation","matchedBy"]}}}}
```

## The SelectPersonalDetailsDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"SelectPersonalDetailsDto":{"type":"object","properties":{"name":{"type":"string"},"email":{"type":"string","default":"gilbert@spritely.co"},"dateOfBirth":{"format":"date-time","type":"string","nullable":true},"citizenship":{"type":"string","enum":["AU"],"default":"AU","nullable":true},"isPermanentAustralianResident":{"type":"boolean"},"maritalStatus":{"type":"string","enum":["SINGLE","MARRIED"],"default":"SINGLE"},"dependents":{"type":"number","default":0},"avatar":{"type":"array","default":["FIRST_HOME_BUYER"],"items":{"type":"string","enum":["FIRST_HOME_BUYER","EXISTING_HOME_OWNER","DOWNSIZER","INVESTOR"]}},"privateHealthCareProvider":{"type":"string"},"hecsHelpLoanOutstanding":{"type":"number","default":0},"currentSavingsForDeposit":{"type":"number","default":0},"personalProjectionsAndSettings":{"type":"array","items":{"$ref":"#/components/schemas/PersonalProjectionsAndSettingsDto"}},"incomes":{"type":"array","items":{"$ref":"#/components/schemas/IncomeDto"}},"expenses":{"type":"array","items":{"$ref":"#/components/schemas/ExpenseDto"}},"personalExpenses":{"type":"array","items":{"$ref":"#/components/schemas/PersonalExpenseDto"}},"personalAssumptions":{"type":"array","items":{"$ref":"#/components/schemas/PersonalAssumptionDto"}},"personalActuals":{"type":"array","items":{"$ref":"#/components/schemas/PersonalActualDto"}},"personalLoans":{"type":"array","items":{"$ref":"#/components/schemas/PersonalLoanDto"}},"capitalTransactions":{"type":"array","items":{"$ref":"#/components/schemas/CapitalTransactionDto"}},"superannuationBalance":{"type":"number","description":"","default":0},"employmentType":{"type":"string","description":""},"creditCardLimit":{"type":"number","description":"","default":0},"entityInputs":{"description":"Entities & Commercial: this person's model column and the active entities they own (read-only, derived from client_entity_owner). Not accepted on POST/PUT — edit ownership through the entity routes.","allOf":[{"$ref":"#/components/schemas/PersonalEntityInputsDto"}]}},"required":["name","email","citizenship","isPermanentAustralianResident","maritalStatus","dependents","avatar","hecsHelpLoanOutstanding","currentSavingsForDeposit","personalProjectionsAndSettings","incomes","expenses","personalExpenses","personalAssumptions","personalActuals","personalLoans","capitalTransactions","superannuationBalance","creditCardLimit","entityInputs"]},"PersonalProjectionsAndSettingsDto":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"},"salaryGrowth":{"type":"number"},"livingExpensesGrowth":{"type":"number"},"capitalGrowth":{"type":"number"},"costEscalation":{"type":"number"},"revenueGrowth":{"type":"number"},"interestRate":{"type":"number"}},"required":["id","createdAt","updatedAt","salaryGrowth","livingExpensesGrowth","capitalGrowth","costEscalation","revenueGrowth","interestRate"]},"IncomeDto":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"},"grossSalary":{"type":"number"},"recurringBonuses":{"type":"number"},"sideHustleIncome":{"type":"number"},"oneOffBonus":{"type":"number"}},"required":["id","createdAt","updatedAt","grossSalary","recurringBonuses","sideHustleIncome","oneOffBonus"]},"ExpenseDto":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"},"date":{"format":"date-time","type":"string"},"endDate":{"format":"date-time","type":"string"},"amount":{"type":"number"},"name":{"type":"string"},"frequency":{"type":"string","enum":["WEEKLY","MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUAL","ANNUAL","ONE_OFF"]},"type":{"type":"string","enum":["LIVING_EXPENSES","COUNCIL_RATES","BODY_CORPORATE_FEES","WATER_AND_ELECTRICITY","MANAGEMENT_FEES","LANDLORDS_INSURANCE","BUILDING_INSURANCE","OFFSET_ACCOUNT_FEE","HECS_HELP_LOAN","OTHERS"]}},"required":["id","createdAt","updatedAt","date","endDate","amount","name","frequency","type"]},"PersonalExpenseDto":{"type":"object","properties":{"date":{"type":"string","description":"The date when the expense starts"},"endDate":{"type":"string","description":"The end date of the expense period"},"amount":{"type":"number","description":"The amount of the expense"},"name":{"type":"string","description":"The name of the expense"},"frequency":{"type":"string","description":"The frequency of the expense","enum":["WEEKLY","MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUAL","ANNUAL","ONE_OFF"]},"type":{"type":"string","description":"The type of the expense","enum":["LIVING_EXPENSES","COUNCIL_RATES","BODY_CORPORATE_FEES","WATER_AND_ELECTRICITY","MANAGEMENT_FEES","LANDLORDS_INSURANCE","BUILDING_INSURANCE","OFFSET_ACCOUNT_FEE","HECS_HELP_LOAN","OTHERS"]}},"required":["date","endDate","amount","name","frequency","type"]},"PersonalAssumptionDto":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"},"amount":{"type":"number"},"date":{"format":"date-time","type":"string"},"type":{"type":"string","enum":["GROSS_ANUAL_SALARY","LIVING_EXPENSES","HECS_HELP_LOAN","DEPENDENTS","SIDE_HUSTLE_INCOME","RECURRING_BONUSES","PERSONAL_LOANS","PAYG_TAX","MISC_INVESTMENT_CASHFLOWS"]},"frequency":{"type":"string","enum":["WEEKLY","MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUAL","ANNUAL","ONE_OFF"]},"monthPaid":{"type":"number"},"hecsHelpLoan":{"type":"string","enum":["REPAY","ADD"]}},"required":["id","createdAt","updatedAt","amount","date","type","frequency","monthPaid","hecsHelpLoan"]},"PersonalActualDto":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"},"amount":{"type":"number"},"date":{"format":"date-time","type":"string"},"endDate":{"format":"date-time","type":"string"},"frequency":{"type":"string","enum":["WEEKLY","MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUAL","ANNUAL","ONE_OFF"]},"type":{"type":"string","enum":["GROSS_ANUAL_SALARY","LIVING_EXPENSES","HECS_HELP_LOAN","DEPENDENTS","SIDE_HUSTLE_INCOME","RECURRING_BONUSES","ONE_OFF_BONUSES","PERSONAL_LOANS","PAYG_TAX"]}},"required":["id","createdAt","updatedAt","amount","date","endDate","frequency","type"]},"PersonalLoanDto":{"type":"object","properties":{"loanName":{"type":"string","description":"The name of the loan"},"loanStartDate":{"type":"string","description":"The start date of the loan"},"termInYears":{"type":"number","description":"The term of the loan in years"},"initialAmount":{"type":"number","description":"The initial amount of the loan"},"interestRate":{"type":"number","description":"The interest rate of the loan"},"repaymentAmount":{"type":"number","description":"The repayment amount for the loan"},"frequency":{"type":"string","description":"The frequency of the loan repayments","enum":["MONTHLY","FORTNIGHTLY","WEEKLY","WEEKS_PER_FORTNIGHT"]},"balloonPayment":{"type":"number","description":"The balloon payment amount at the end of the loan term"},"type":{"type":"string","enum":["PERSONAL","CAR","BUSINESS","ASSET_FINANCE"],"description":"PERSONAL | CAR | BUSINESS | ASSET_FINANCE. BUSINESS and ASSET_FINANCE added for Entities & Commercial (the two ported loan modals); Postgres enum extended by migration 1790000000002."},"isExistingLoan":{"type":"boolean","description":"Whether the loan is new (false), existing (true), or left unspecified (null).","nullable":true}},"required":["loanName","loanStartDate","termInYears","initialAmount","interestRate","repaymentAmount","frequency","balloonPayment","type"]},"CapitalTransactionDto":{"type":"object","properties":{"amount":{"type":"number","description":"The amount involved in the capital transaction"},"date":{"type":"string","description":"The date of the capital transaction"},"cashProceeds":{"type":"number","description":"The cash proceeds from the capital transaction"},"type":{"type":"string","description":"The type of the capital transaction","enum":["gain","loss"]}},"required":["amount","date","cashProceeds","type"]},"PersonalEntityInputsDto":{"type":"object","properties":{"userSlot":{"type":"number","description":"Model column this person occupies: 1 = User 1 (INPUTS!H18), 2 = User 2 (INPUTS!I18). The person whose details these are is always User 1 in their own model; their partner is User 2. Read-only.","enum":[1,2]},"ownedEntities":{"description":"Active entities this person owns, derived from client_entity_owner (inverse of INPUTS!242–254). Edit via the entity routes.","type":"array","items":{"$ref":"#/components/schemas/OwnedEntityDto"}}},"required":["userSlot","ownedEntities"]},"OwnedEntityDto":{"type":"object","properties":{"entityId":{"type":"string"},"strategyId":{"type":"string","description":"Strategy (control centre) the entity belongs to."},"entityName":{"type":"string","description":"Workbook INPUTS!199."},"entityType":{"type":"string","description":"Workbook INPUTS!200."},"ownerSlot":{"type":"number","description":"Owner slot 1–5 on the entity (workbook INPUTS!243–247)."},"ownershipPercent":{"type":"number","description":"Owner share % (workbook INPUTS!248–252). Null when not set on the owner row.","nullable":true},"relation":{"type":"string","description":"Relationship label, display only (workbook INPUTS!256–260).","nullable":true},"matchedBy":{"type":"string","description":"How this owner row was matched to the person: `userId` (client_entity_owner.user_id) or `name` (owner full_name equals the person's name; the row has no user_id yet).","enum":["userId","name"]}},"required":["entityId","strategyId","entityName","entityType","ownerSlot","ownershipPercent","relation","matchedBy"]}}}}
```

## The MeetingTrigger object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"MeetingTrigger":{"type":"object","properties":{"timeFromTarget":{"type":"number","description":""},"targetType":{"type":"string","description":""},"targetFigure":{"type":"number","description":""}}}}}}
```

## The ClientReview object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ClientReview":{"type":"object","properties":{"reviewFrequency":{"type":"string","description":"","enum":["MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUALLY","ANNUAL","ONE_OFF"]},"approvalType":{"type":"string","description":"","enum":["NOTIFY_ME_FIRST","AUTOMATE"]}}}}}}
```

## The BaselinePerformance object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"BaselinePerformance":{"type":"object","properties":{"engagementRate":{"type":"number","description":""},"conversionRate":{"type":"number","description":""},"retentionRate":{"type":"number","description":""},"yearsBetweenLoans":{"type":"number","description":""},"yearsBetweenPurchases":{"type":"number","description":""},"dealsYtd":{"type":"number","description":""},"dealsPerMonth":{"type":"number","description":""},"preConnect":{"type":"number","description":""},"postConnect":{"type":"number","description":""}}}}}}
```

## The Automation object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"Automation":{"type":"object","properties":{"automations":{"type":"number","description":""},"meetingTrigger":{"description":"","allOf":[{"$ref":"#/components/schemas/MeetingTrigger"}]},"clientReview":{"description":"","allOf":[{"$ref":"#/components/schemas/ClientReview"}]},"baselinePerformance":{"description":"","allOf":[{"$ref":"#/components/schemas/BaselinePerformance"}]}}},"MeetingTrigger":{"type":"object","properties":{"timeFromTarget":{"type":"number","description":""},"targetType":{"type":"string","description":""},"targetFigure":{"type":"number","description":""}}},"ClientReview":{"type":"object","properties":{"reviewFrequency":{"type":"string","description":"","enum":["MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUALLY","ANNUAL","ONE_OFF"]},"approvalType":{"type":"string","description":"","enum":["NOTIFY_ME_FIRST","AUTOMATE"]}}},"BaselinePerformance":{"type":"object","properties":{"engagementRate":{"type":"number","description":""},"conversionRate":{"type":"number","description":""},"retentionRate":{"type":"number","description":""},"yearsBetweenLoans":{"type":"number","description":""},"yearsBetweenPurchases":{"type":"number","description":""},"dealsYtd":{"type":"number","description":""},"dealsPerMonth":{"type":"number","description":""},"preConnect":{"type":"number","description":""},"postConnect":{"type":"number","description":""}}}}}}
```

## The CreatePersonalDetailsDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CreatePersonalDetailsDto":{"type":"object","properties":{"name":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"},"email":{"type":"string","default":"will@scaleapp.com.au"},"dateOfBirth":{"format":"date-time","type":"string","nullable":true},"citizenship":{"type":"string","enum":["AU"],"default":"AU","nullable":true},"isPermanentAustralianResident":{"type":"boolean"},"maritalStatus":{"type":"string","enum":["SINGLE","MARRIED"],"default":"SINGLE"},"dependents":{"type":"number","default":0},"avatar":{"type":"array","default":["FIRST_HOME_BUYER"],"items":{"type":"string","enum":["FIRST_HOME_BUYER","EXISTING_HOME_OWNER","DOWNSIZER","INVESTOR"]}},"privateHealthCareProvider":{"type":"string"},"hecsHelpLoanOutstanding":{"type":"number","default":0},"currentSavingsForDeposit":{"type":"number","default":0},"surname":{"type":"string","description":""},"familyId":{"type":"string","description":""},"superannuationBalance":{"type":"number","description":"","default":0},"employmentType":{"type":"string","description":""},"creditCardLimit":{"type":"number","description":"","default":0},"automation":{"description":"","allOf":[{"$ref":"#/components/schemas/Automation"}]}},"required":["name","email","citizenship","isPermanentAustralianResident","maritalStatus","dependents","avatar","hecsHelpLoanOutstanding","currentSavingsForDeposit","superannuationBalance","creditCardLimit"]},"Automation":{"type":"object","properties":{"automations":{"type":"number","description":""},"meetingTrigger":{"description":"","allOf":[{"$ref":"#/components/schemas/MeetingTrigger"}]},"clientReview":{"description":"","allOf":[{"$ref":"#/components/schemas/ClientReview"}]},"baselinePerformance":{"description":"","allOf":[{"$ref":"#/components/schemas/BaselinePerformance"}]}}},"MeetingTrigger":{"type":"object","properties":{"timeFromTarget":{"type":"number","description":""},"targetType":{"type":"string","description":""},"targetFigure":{"type":"number","description":""}}},"ClientReview":{"type":"object","properties":{"reviewFrequency":{"type":"string","description":"","enum":["MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUALLY","ANNUAL","ONE_OFF"]},"approvalType":{"type":"string","description":"","enum":["NOTIFY_ME_FIRST","AUTOMATE"]}}},"BaselinePerformance":{"type":"object","properties":{"engagementRate":{"type":"number","description":""},"conversionRate":{"type":"number","description":""},"retentionRate":{"type":"number","description":""},"yearsBetweenLoans":{"type":"number","description":""},"yearsBetweenPurchases":{"type":"number","description":""},"dealsYtd":{"type":"number","description":""},"dealsPerMonth":{"type":"number","description":""},"preConnect":{"type":"number","description":""},"postConnect":{"type":"number","description":""}}}}}}
```

## The UpdatePersonalDetailsDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"UpdatePersonalDetailsDto":{"type":"object","properties":{"name":{"type":"string"},"email":{"type":"string","default":"gilbert@spritely.co"},"dateOfBirth":{"format":"date-time","type":"string","nullable":true},"citizenship":{"type":"string","enum":["AU"],"default":"AU","nullable":true},"isPermanentAustralianResident":{"type":"boolean"},"maritalStatus":{"type":"string","enum":["SINGLE","MARRIED"],"default":"SINGLE"},"dependents":{"type":"number","default":0},"avatar":{"type":"array","default":["FIRST_HOME_BUYER"],"items":{"type":"string","enum":["FIRST_HOME_BUYER","EXISTING_HOME_OWNER","DOWNSIZER","INVESTOR"]}},"privateHealthCareProvider":{"type":"string"},"hecsHelpLoanOutstanding":{"type":"number","default":0},"currentSavingsForDeposit":{"type":"number","default":0}},"required":["name","email","citizenship","isPermanentAustralianResident","maritalStatus","dependents","avatar","hecsHelpLoanOutstanding","currentSavingsForDeposit"]}}}}
```

## The CreateSchedulingBotSettingsDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CreateSchedulingBotSettingsDto":{"type":"object","properties":{"clientReadinessAction":{"type":"string","description":"Automation Type","enum":["auto_book_meetings","notify_me_first"]},"leadTimeMonths":{"type":"number","description":"Lead time in months.","minimum":1,"maximum":24},"meetingTrigger":{"type":"string","description":"Meeting trigger type.","enum":["LVR","EQUITY","GOAL"]},"targetValue":{"type":"number","description":"Target Value","minimum":0,"maximum":100},"meetingInviteMessage":{"type":"string","description":"Meeting Invite Message."},"reviewFrequency":{"type":"string","description":"Review Frequency.","enum":["MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUALLY","ANNUALLY"]},"approvalStatus":{"type":"string","description":"Approval Type.","enum":["pending_approval","auto_approval","manual_review"]},"notetakerAutoJoin":{"type":"boolean","description":"Auto-send a notetaker to the user's upcoming meetings."},"inviteOnCreate":{"type":"boolean","description":"Send the meeting invite when the client is created."}},"required":["clientReadinessAction","leadTimeMonths","meetingTrigger","targetValue","reviewFrequency","approvalStatus"]}}}}
```

## The UpdateSchedulingBotSettingsDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"UpdateSchedulingBotSettingsDto":{"type":"object","properties":{"clientReadinessAction":{"type":"string","description":"Automation Type","enum":["auto_book_meetings","notify_me_first"]},"leadTimeMonths":{"type":"number","description":"Lead time in months.","minimum":1,"maximum":24},"meetingTrigger":{"type":"string","description":"Meeting trigger type.","enum":["LVR","EQUITY","GOAL"]},"targetValue":{"type":"number","description":"Target Value","minimum":0,"maximum":100},"meetingInviteMessage":{"type":"string","description":"Meeting Invite Message."},"reviewFrequency":{"type":"string","description":"Review Frequency.","enum":["MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUALLY","ANNUALLY"]},"approvalStatus":{"type":"string","description":"Approval Type.","enum":["pending_approval","auto_approval","manual_review"]},"notetakerAutoJoin":{"type":"boolean","description":"Auto-send a notetaker to the user's upcoming meetings."},"inviteOnCreate":{"type":"boolean","description":"Send the meeting invite when the client is created."}},"required":["clientReadinessAction","leadTimeMonths","meetingTrigger","targetValue","reviewFrequency","approvalStatus"]}}}}
```

## The NotetakerSettings object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"NotetakerSettings":{"type":"object","properties":{}}}}}
```

## The UpdateNotetakerSettingsDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"UpdateNotetakerSettingsDto":{"type":"object","properties":{"autoJoin":{"type":"boolean","description":"Send the notetaker to upcoming meetings automatically."},"meetingScope":{"type":"string","description":"Which meetings to join.","enum":["all","external","internal","own"]},"minParticipants":{"type":"number","description":"Skip meetings with fewer people than this. 0 = no minimum.","minimum":0,"maximum":100},"botName":{"type":"string","description":"Display name the bot joins with. Null resets to the default.","maxLength":80,"nullable":true},"recordVideo":{"type":"boolean","description":"Record video."},"recordAudio":{"type":"boolean","description":"Record audio. Transcript and summary need this on."}}}}}}
```

## The CreateTeamDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CreateTeamDto":{"type":"object","properties":{"name":{"type":"string","description":"Name for team"},"parentTeamIds":{"description":"Optional parent team UUIDs when creating a sub-team","type":"array","items":{"type":"string"}}},"required":["name"]}}}}
```

## The TeamBrokerDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"TeamBrokerDto":{"type":"object","properties":{"id":{"type":"string"},"phoneNumber":{"type":"string"},"profile":{"type":"object"}},"required":["id"]}}}}
```

## The TeamUserDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"TeamUserDto":{"type":"object","properties":{"id":{"type":"string"},"phoneNumber":{"type":"string"},"personalDetails":{"type":"object"}},"required":["id"]}}}}
```

## The TeamMemberResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"TeamMemberResponseDto":{"type":"object","properties":{"id":{"type":"string"},"role":{"type":"string","enum":["broker","member","admin"]},"status":{"type":"string","enum":["pending","approved","cancelled"]},"joinedAt":{"format":"date-time","type":"string"},"invite_sent_at":{"format":"date-time","type":"string"},"invite_resend_count":{"type":"number"},"invite_last_resent_at":{"format":"date-time","type":"string"},"canceled_at":{"format":"date-time","type":"string"},"user":{"$ref":"#/components/schemas/TeamUserDto"}},"required":["id","role","status"]},"TeamUserDto":{"type":"object","properties":{"id":{"type":"string"},"phoneNumber":{"type":"string"},"personalDetails":{"type":"object"}},"required":["id"]}}}}
```

## The TeamResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"TeamResponseDto":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"createdAt":{"format":"date-time","type":"string"},"broker":{"$ref":"#/components/schemas/TeamBrokerDto"},"members":{"type":"array","items":{"$ref":"#/components/schemas/TeamMemberResponseDto"}}},"required":["id","name","createdAt","broker","members"]},"TeamBrokerDto":{"type":"object","properties":{"id":{"type":"string"},"phoneNumber":{"type":"string"},"profile":{"type":"object"}},"required":["id"]},"TeamMemberResponseDto":{"type":"object","properties":{"id":{"type":"string"},"role":{"type":"string","enum":["broker","member","admin"]},"status":{"type":"string","enum":["pending","approved","cancelled"]},"joinedAt":{"format":"date-time","type":"string"},"invite_sent_at":{"format":"date-time","type":"string"},"invite_resend_count":{"type":"number"},"invite_last_resent_at":{"format":"date-time","type":"string"},"canceled_at":{"format":"date-time","type":"string"},"user":{"$ref":"#/components/schemas/TeamUserDto"}},"required":["id","role","status"]},"TeamUserDto":{"type":"object","properties":{"id":{"type":"string"},"phoneNumber":{"type":"string"},"personalDetails":{"type":"object"}},"required":["id"]}}}}
```

## The JoinTeamByCodeDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"JoinTeamByCodeDto":{"type":"object","properties":{"code":{"type":"string","description":"Invite code of the team to join."}},"required":["code"]}}}}
```

## The CreateSubTeamDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CreateSubTeamDto":{"type":"object","properties":{"name":{"type":"string","description":"Name for the new sub-team"}},"required":["name"]}}}}
```

## The SuccessResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"SuccessResponseDto":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}},"required":["success","message"]}}}}
```

## The InviteUserDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"InviteUserDto":{"type":"object","properties":{"userId":{"type":"string","description":"Member's Id"},"role":{"type":"string","description":"Role of team member","enum":["broker","member","admin"]}},"required":["userId","role"]}}}}
```

## The InviteUserByEmailDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"InviteUserByEmailDto":{"type":"object","properties":{"emails":{"type":"string","description":"emails of members to be invited"},"role":{"type":"string","description":"Role of team member","enum":["broker","member","admin"]},"resolve":{"type":"object","description":"Per-email choice for addresses that match both a broker and a client. Sent on the second call after the user picks. Values: 'broker' or 'client'."}},"required":["emails","role"]}}}}
```

## The ClaimInviteDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ClaimInviteDto":{"type":"object","properties":{"token":{"type":"string","description":"The accept_token from the invite email link."}},"required":["token"]}}}}
```

## The GetTeamResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"GetTeamResponseDto":{"type":"object","properties":{"team":{"$ref":"#/components/schemas/TeamResponseDto"},"member":{"$ref":"#/components/schemas/TeamMemberResponseDto"}},"required":["team"]},"TeamResponseDto":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"createdAt":{"format":"date-time","type":"string"},"broker":{"$ref":"#/components/schemas/TeamBrokerDto"},"members":{"type":"array","items":{"$ref":"#/components/schemas/TeamMemberResponseDto"}}},"required":["id","name","createdAt","broker","members"]},"TeamBrokerDto":{"type":"object","properties":{"id":{"type":"string"},"phoneNumber":{"type":"string"},"profile":{"type":"object"}},"required":["id"]},"TeamMemberResponseDto":{"type":"object","properties":{"id":{"type":"string"},"role":{"type":"string","enum":["broker","member","admin"]},"status":{"type":"string","enum":["pending","approved","cancelled"]},"joinedAt":{"format":"date-time","type":"string"},"invite_sent_at":{"format":"date-time","type":"string"},"invite_resend_count":{"type":"number"},"invite_last_resent_at":{"format":"date-time","type":"string"},"canceled_at":{"format":"date-time","type":"string"},"user":{"$ref":"#/components/schemas/TeamUserDto"}},"required":["id","role","status"]},"TeamUserDto":{"type":"object","properties":{"id":{"type":"string"},"phoneNumber":{"type":"string"},"personalDetails":{"type":"object"}},"required":["id"]}}}}
```

## The UpdateMemberDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"UpdateMemberDto":{"type":"object","properties":{"role":{"type":"string","description":"Role of Team member","enum":["broker","member","admin"]},"status":{"type":"string","description":"Invitation status of Team member","enum":["pending","approved","cancelled"]}},"required":["role"]}}}}
```

## The ResendInviteResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ResendInviteResponseDto":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"resendCount":{"type":"number"},"sentAt":{"format":"date-time","type":"string"},"member":{"$ref":"#/components/schemas/TeamMemberResponseDto"}},"required":["success","message","resendCount","sentAt","member"]},"TeamMemberResponseDto":{"type":"object","properties":{"id":{"type":"string"},"role":{"type":"string","enum":["broker","member","admin"]},"status":{"type":"string","enum":["pending","approved","cancelled"]},"joinedAt":{"format":"date-time","type":"string"},"invite_sent_at":{"format":"date-time","type":"string"},"invite_resend_count":{"type":"number"},"invite_last_resent_at":{"format":"date-time","type":"string"},"canceled_at":{"format":"date-time","type":"string"},"user":{"$ref":"#/components/schemas/TeamUserDto"}},"required":["id","role","status"]},"TeamUserDto":{"type":"object","properties":{"id":{"type":"string"},"phoneNumber":{"type":"string"},"personalDetails":{"type":"object"}},"required":["id"]}}}}
```

## The UpdateTeamDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"UpdateTeamDto":{"type":"object","properties":{"name":{"type":"string","description":"New name for the team"}},"required":["name"]}}}}
```

## The NotificationDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"NotificationDto":{"type":"object","properties":{"pushNotifications":{"type":"boolean","description":"Push notifications."},"emailNotifications":{"type":"boolean","description":"Email notifications."},"clientMilestones":{"type":"boolean","description":"Client milestones."},"calendarEvents":{"type":"boolean","description":"Calendar events and scheduled meetings."},"clientMessages":{"type":"boolean","description":"Client messages."},"clientReviews":{"type":"boolean","description":"Client reviews."}},"required":["pushNotifications","emailNotifications","clientMilestones","calendarEvents","clientMessages","clientReviews"]}}}}
```

## The GenerateReferralDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"GenerateReferralDto":{"type":"object","properties":{}}}}}
```

## The UseReferralDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"UseReferralDto":{"type":"object","properties":{}}}}}
```

## The CreatePersonalProjectionsAndSettingsDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CreatePersonalProjectionsAndSettingsDto":{"type":"object","properties":{"salaryGrowth":{"type":"number","default":0,"maximum":0.1},"livingExpensesGrowth":{"type":"number","default":0,"maximum":0.1},"capitalGrowth":{"type":"number","default":0,"maximum":0.1},"costEscalation":{"type":"number","default":0,"maximum":0.1},"revenueGrowth":{"type":"number","default":0,"maximum":0.1},"interestRate":{"type":"number","default":0,"maximum":0.1}},"required":["salaryGrowth","livingExpensesGrowth","capitalGrowth","costEscalation","revenueGrowth","interestRate"]}}}}
```

## The CreateIncomeDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CreateIncomeDto":{"type":"object","properties":{"date":{"format":"date-time","type":"string","nullable":true,"default":"2026-10-09T07:16:46.714Z"},"grossSalary":{"type":"number","default":0,"nullable":true},"recurringBonuses":{"type":"number","default":0,"nullable":true},"sideHustleIncome":{"type":"number","default":0,"nullable":true},"oneOffBonus":{"type":"number","default":0,"nullable":true}},"required":["date","grossSalary","recurringBonuses","sideHustleIncome","oneOffBonus"]}}}}
```

## The CreateExpenseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CreateExpenseDto":{"type":"object","properties":{"date":{"format":"date-time","type":"string","default":"2026-10-09T07:16:46.714Z"},"endDate":{"format":"date-time","type":"string","default":"2026-10-09T07:16:46.714Z"},"amount":{"type":"number"},"name":{"type":"string","nullable":true},"frequency":{"type":"string","enum":["WEEKLY","MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUAL","ANNUAL","ONE_OFF"],"default":"MONTHLY"},"propertyId":{"type":"string","nullable":true},"type":{"type":"string","nullable":true,"enum":["LIVING_EXPENSES","COUNCIL_RATES","BODY_CORPORATE_FEES","WATER_AND_ELECTRICITY","MANAGEMENT_FEES","LANDLORDS_INSURANCE","BUILDING_INSURANCE","OFFSET_ACCOUNT_FEE","HECS_HELP_LOAN","OTHERS"]}},"required":["date","amount","name","frequency","propertyId","type"]}}}}
```

## The CreatePropertyParametersDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CreatePropertyParametersDto":{"type":"object","properties":{"salaryGrowth":{"type":"number"},"livingExpensesGrowth":{"type":"number"},"capitalGrowth":{"type":"number"},"variableInterestRate":{"type":"number"},"rentAndCostGrowth":{"type":"number"},"occupancy":{"type":"number"},"sellingCosts":{"type":"number"},"claimCapitalWorksAnually":{"type":"boolean"},"lowValueAssetPooling":{"type":"boolean"},"depreciationMethod":{"type":"string","enum":["STRAIGHTLINE","DIMINISHING_VALUE","BALANCING_ADJUSTMENT"]}},"required":["salaryGrowth","livingExpensesGrowth","capitalGrowth","variableInterestRate","rentAndCostGrowth","occupancy","sellingCosts","claimCapitalWorksAnually","lowValueAssetPooling","depreciationMethod"]}}}}
```

## The OnboardingDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"OnboardingDto":{"type":"object","properties":{"phoneNumber":{"type":"string","description":"Phone number for the new user (used when broker creates a client)"},"personalDetails":{"$ref":"#/components/schemas/CreatePersonalDetailsDto"},"personalProjectionsAndSettings":{"$ref":"#/components/schemas/CreatePersonalProjectionsAndSettingsDto"},"income":{"$ref":"#/components/schemas/CreateIncomeDto"},"expense":{"$ref":"#/components/schemas/CreateExpenseDto"},"propertyParameters":{"$ref":"#/components/schemas/CreatePropertyParametersDto"}},"required":["personalDetails","personalProjectionsAndSettings","income","expense","propertyParameters"]},"CreatePersonalDetailsDto":{"type":"object","properties":{"name":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"},"email":{"type":"string","default":"will@scaleapp.com.au"},"dateOfBirth":{"format":"date-time","type":"string","nullable":true},"citizenship":{"type":"string","enum":["AU"],"default":"AU","nullable":true},"isPermanentAustralianResident":{"type":"boolean"},"maritalStatus":{"type":"string","enum":["SINGLE","MARRIED"],"default":"SINGLE"},"dependents":{"type":"number","default":0},"avatar":{"type":"array","default":["FIRST_HOME_BUYER"],"items":{"type":"string","enum":["FIRST_HOME_BUYER","EXISTING_HOME_OWNER","DOWNSIZER","INVESTOR"]}},"privateHealthCareProvider":{"type":"string"},"hecsHelpLoanOutstanding":{"type":"number","default":0},"currentSavingsForDeposit":{"type":"number","default":0},"surname":{"type":"string","description":""},"familyId":{"type":"string","description":""},"superannuationBalance":{"type":"number","description":"","default":0},"employmentType":{"type":"string","description":""},"creditCardLimit":{"type":"number","description":"","default":0},"automation":{"description":"","allOf":[{"$ref":"#/components/schemas/Automation"}]}},"required":["name","email","citizenship","isPermanentAustralianResident","maritalStatus","dependents","avatar","hecsHelpLoanOutstanding","currentSavingsForDeposit","superannuationBalance","creditCardLimit"]},"Automation":{"type":"object","properties":{"automations":{"type":"number","description":""},"meetingTrigger":{"description":"","allOf":[{"$ref":"#/components/schemas/MeetingTrigger"}]},"clientReview":{"description":"","allOf":[{"$ref":"#/components/schemas/ClientReview"}]},"baselinePerformance":{"description":"","allOf":[{"$ref":"#/components/schemas/BaselinePerformance"}]}}},"MeetingTrigger":{"type":"object","properties":{"timeFromTarget":{"type":"number","description":""},"targetType":{"type":"string","description":""},"targetFigure":{"type":"number","description":""}}},"ClientReview":{"type":"object","properties":{"reviewFrequency":{"type":"string","description":"","enum":["MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUALLY","ANNUAL","ONE_OFF"]},"approvalType":{"type":"string","description":"","enum":["NOTIFY_ME_FIRST","AUTOMATE"]}}},"BaselinePerformance":{"type":"object","properties":{"engagementRate":{"type":"number","description":""},"conversionRate":{"type":"number","description":""},"retentionRate":{"type":"number","description":""},"yearsBetweenLoans":{"type":"number","description":""},"yearsBetweenPurchases":{"type":"number","description":""},"dealsYtd":{"type":"number","description":""},"dealsPerMonth":{"type":"number","description":""},"preConnect":{"type":"number","description":""},"postConnect":{"type":"number","description":""}}},"CreatePersonalProjectionsAndSettingsDto":{"type":"object","properties":{"salaryGrowth":{"type":"number","default":0,"maximum":0.1},"livingExpensesGrowth":{"type":"number","default":0,"maximum":0.1},"capitalGrowth":{"type":"number","default":0,"maximum":0.1},"costEscalation":{"type":"number","default":0,"maximum":0.1},"revenueGrowth":{"type":"number","default":0,"maximum":0.1},"interestRate":{"type":"number","default":0,"maximum":0.1}},"required":["salaryGrowth","livingExpensesGrowth","capitalGrowth","costEscalation","revenueGrowth","interestRate"]},"CreateIncomeDto":{"type":"object","properties":{"date":{"format":"date-time","type":"string","nullable":true,"default":"2026-10-09T07:16:46.714Z"},"grossSalary":{"type":"number","default":0,"nullable":true},"recurringBonuses":{"type":"number","default":0,"nullable":true},"sideHustleIncome":{"type":"number","default":0,"nullable":true},"oneOffBonus":{"type":"number","default":0,"nullable":true}},"required":["date","grossSalary","recurringBonuses","sideHustleIncome","oneOffBonus"]},"CreateExpenseDto":{"type":"object","properties":{"date":{"format":"date-time","type":"string","default":"2026-10-09T07:16:46.714Z"},"endDate":{"format":"date-time","type":"string","default":"2026-10-09T07:16:46.714Z"},"amount":{"type":"number"},"name":{"type":"string","nullable":true},"frequency":{"type":"string","enum":["WEEKLY","MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUAL","ANNUAL","ONE_OFF"],"default":"MONTHLY"},"propertyId":{"type":"string","nullable":true},"type":{"type":"string","nullable":true,"enum":["LIVING_EXPENSES","COUNCIL_RATES","BODY_CORPORATE_FEES","WATER_AND_ELECTRICITY","MANAGEMENT_FEES","LANDLORDS_INSURANCE","BUILDING_INSURANCE","OFFSET_ACCOUNT_FEE","HECS_HELP_LOAN","OTHERS"]}},"required":["date","amount","name","frequency","propertyId","type"]},"CreatePropertyParametersDto":{"type":"object","properties":{"salaryGrowth":{"type":"number"},"livingExpensesGrowth":{"type":"number"},"capitalGrowth":{"type":"number"},"variableInterestRate":{"type":"number"},"rentAndCostGrowth":{"type":"number"},"occupancy":{"type":"number"},"sellingCosts":{"type":"number"},"claimCapitalWorksAnually":{"type":"boolean"},"lowValueAssetPooling":{"type":"boolean"},"depreciationMethod":{"type":"string","enum":["STRAIGHTLINE","DIMINISHING_VALUE","BALANCING_ADJUSTMENT"]}},"required":["salaryGrowth","livingExpensesGrowth","capitalGrowth","variableInterestRate","rentAndCostGrowth","occupancy","sellingCosts","claimCapitalWorksAnually","lowValueAssetPooling","depreciationMethod"]}}}}
```

## The CreateInviteDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CreateInviteDto":{"type":"object","properties":{"strategyId":{"type":"string","description":"The strategy id of the invite"},"recipientNumber":{"type":"string","description":"The recipient number of the invite"},"message":{"type":"string","description":"The message of the invite"},"recipientUserId":{"type":"string","description":"Optional recipient user id — used when multiple users share a phone number."}},"required":["strategyId","recipientNumber","message"]}}}}
```

## The AcceptInviteDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"AcceptInviteDto":{"type":"object","properties":{"inviteId":{"type":"string","description":"The ID of the invite to accept"}},"required":["inviteId"]}}}}
```

## The RejectInviteDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"RejectInviteDto":{"type":"object","properties":{"inviteId":{"type":"string","description":"The ID of the invite to reject"}},"required":["inviteId"]}}}}
```

## The CancelInviteDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CancelInviteDto":{"type":"object","properties":{"inviteId":{"type":"string","description":"The ID of the invite to cancel"}},"required":["inviteId"]}}}}
```

## The RemoveInviteDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"RemoveInviteDto":{"type":"object","properties":{"inviteId":{"type":"string","description":"The ID of the invite to remove"}},"required":["inviteId"]}}}}
```

## The UpdateOnboardingDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"UpdateOnboardingDto":{"type":"object","properties":{"phoneNumber":{"type":"string","description":"Phone number for the new user (used when broker creates a client)"},"personalDetails":{"$ref":"#/components/schemas/CreatePersonalDetailsDto"},"personalProjectionsAndSettings":{"$ref":"#/components/schemas/CreatePersonalProjectionsAndSettingsDto"},"income":{"$ref":"#/components/schemas/CreateIncomeDto"},"expense":{"$ref":"#/components/schemas/CreateExpenseDto"},"propertyParameters":{"$ref":"#/components/schemas/CreatePropertyParametersDto"}}},"CreatePersonalDetailsDto":{"type":"object","properties":{"name":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"},"email":{"type":"string","default":"will@scaleapp.com.au"},"dateOfBirth":{"format":"date-time","type":"string","nullable":true},"citizenship":{"type":"string","enum":["AU"],"default":"AU","nullable":true},"isPermanentAustralianResident":{"type":"boolean"},"maritalStatus":{"type":"string","enum":["SINGLE","MARRIED"],"default":"SINGLE"},"dependents":{"type":"number","default":0},"avatar":{"type":"array","default":["FIRST_HOME_BUYER"],"items":{"type":"string","enum":["FIRST_HOME_BUYER","EXISTING_HOME_OWNER","DOWNSIZER","INVESTOR"]}},"privateHealthCareProvider":{"type":"string"},"hecsHelpLoanOutstanding":{"type":"number","default":0},"currentSavingsForDeposit":{"type":"number","default":0},"surname":{"type":"string","description":""},"familyId":{"type":"string","description":""},"superannuationBalance":{"type":"number","description":"","default":0},"employmentType":{"type":"string","description":""},"creditCardLimit":{"type":"number","description":"","default":0},"automation":{"description":"","allOf":[{"$ref":"#/components/schemas/Automation"}]}},"required":["name","email","citizenship","isPermanentAustralianResident","maritalStatus","dependents","avatar","hecsHelpLoanOutstanding","currentSavingsForDeposit","superannuationBalance","creditCardLimit"]},"Automation":{"type":"object","properties":{"automations":{"type":"number","description":""},"meetingTrigger":{"description":"","allOf":[{"$ref":"#/components/schemas/MeetingTrigger"}]},"clientReview":{"description":"","allOf":[{"$ref":"#/components/schemas/ClientReview"}]},"baselinePerformance":{"description":"","allOf":[{"$ref":"#/components/schemas/BaselinePerformance"}]}}},"MeetingTrigger":{"type":"object","properties":{"timeFromTarget":{"type":"number","description":""},"targetType":{"type":"string","description":""},"targetFigure":{"type":"number","description":""}}},"ClientReview":{"type":"object","properties":{"reviewFrequency":{"type":"string","description":"","enum":["MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUALLY","ANNUAL","ONE_OFF"]},"approvalType":{"type":"string","description":"","enum":["NOTIFY_ME_FIRST","AUTOMATE"]}}},"BaselinePerformance":{"type":"object","properties":{"engagementRate":{"type":"number","description":""},"conversionRate":{"type":"number","description":""},"retentionRate":{"type":"number","description":""},"yearsBetweenLoans":{"type":"number","description":""},"yearsBetweenPurchases":{"type":"number","description":""},"dealsYtd":{"type":"number","description":""},"dealsPerMonth":{"type":"number","description":""},"preConnect":{"type":"number","description":""},"postConnect":{"type":"number","description":""}}},"CreatePersonalProjectionsAndSettingsDto":{"type":"object","properties":{"salaryGrowth":{"type":"number","default":0,"maximum":0.1},"livingExpensesGrowth":{"type":"number","default":0,"maximum":0.1},"capitalGrowth":{"type":"number","default":0,"maximum":0.1},"costEscalation":{"type":"number","default":0,"maximum":0.1},"revenueGrowth":{"type":"number","default":0,"maximum":0.1},"interestRate":{"type":"number","default":0,"maximum":0.1}},"required":["salaryGrowth","livingExpensesGrowth","capitalGrowth","costEscalation","revenueGrowth","interestRate"]},"CreateIncomeDto":{"type":"object","properties":{"date":{"format":"date-time","type":"string","nullable":true,"default":"2026-10-09T07:16:46.714Z"},"grossSalary":{"type":"number","default":0,"nullable":true},"recurringBonuses":{"type":"number","default":0,"nullable":true},"sideHustleIncome":{"type":"number","default":0,"nullable":true},"oneOffBonus":{"type":"number","default":0,"nullable":true}},"required":["date","grossSalary","recurringBonuses","sideHustleIncome","oneOffBonus"]},"CreateExpenseDto":{"type":"object","properties":{"date":{"format":"date-time","type":"string","default":"2026-10-09T07:16:46.714Z"},"endDate":{"format":"date-time","type":"string","default":"2026-10-09T07:16:46.714Z"},"amount":{"type":"number"},"name":{"type":"string","nullable":true},"frequency":{"type":"string","enum":["WEEKLY","MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUAL","ANNUAL","ONE_OFF"],"default":"MONTHLY"},"propertyId":{"type":"string","nullable":true},"type":{"type":"string","nullable":true,"enum":["LIVING_EXPENSES","COUNCIL_RATES","BODY_CORPORATE_FEES","WATER_AND_ELECTRICITY","MANAGEMENT_FEES","LANDLORDS_INSURANCE","BUILDING_INSURANCE","OFFSET_ACCOUNT_FEE","HECS_HELP_LOAN","OTHERS"]}},"required":["date","amount","name","frequency","propertyId","type"]},"CreatePropertyParametersDto":{"type":"object","properties":{"salaryGrowth":{"type":"number"},"livingExpensesGrowth":{"type":"number"},"capitalGrowth":{"type":"number"},"variableInterestRate":{"type":"number"},"rentAndCostGrowth":{"type":"number"},"occupancy":{"type":"number"},"sellingCosts":{"type":"number"},"claimCapitalWorksAnually":{"type":"boolean"},"lowValueAssetPooling":{"type":"boolean"},"depreciationMethod":{"type":"string","enum":["STRAIGHTLINE","DIMINISHING_VALUE","BALANCING_ADJUSTMENT"]}},"required":["salaryGrowth","livingExpensesGrowth","capitalGrowth","variableInterestRate","rentAndCostGrowth","occupancy","sellingCosts","claimCapitalWorksAnually","lowValueAssetPooling","depreciationMethod"]}}}}
```

## The BulkImportClientDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"BulkImportClientDto":{"type":"object","properties":{"clientCategory":{"description":"Client type(s). Accepts a single enum string (bulk CSV) or up to two values.","oneOf":[{"type":"string","enum":["FIRST_HOME_BUYER","EXISTING_HOME_OWNER","DOWNSIZER","INVESTOR"]},{"type":"array","items":{"type":"string","enum":["FIRST_HOME_BUYER","EXISTING_HOME_OWNER","DOWNSIZER","INVESTOR"]}}]}}}}}}
```

## The BulkImportDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"BulkImportDto":{"type":"object","properties":{"crmSource":{"type":"string"},"clients":{"type":"array","items":{"$ref":"#/components/schemas/BulkImportClientDto"}}},"required":["crmSource","clients"]},"BulkImportClientDto":{"type":"object","properties":{"clientCategory":{"description":"Client type(s). Accepts a single enum string (bulk CSV) or up to two values.","oneOf":[{"type":"string","enum":["FIRST_HOME_BUYER","EXISTING_HOME_OWNER","DOWNSIZER","INVESTOR"]},{"type":"array","items":{"type":"string","enum":["FIRST_HOME_BUYER","EXISTING_HOME_OWNER","DOWNSIZER","INVESTOR"]}}]}}}}}}
```

## The BulkImportPropertyGroupDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"BulkImportPropertyGroupDto":{"type":"object","properties":{}}}}}
```

## The BulkImportPropertiesDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"BulkImportPropertiesDto":{"type":"object","properties":{"crmSource":{"type":"string"},"groups":{"type":"array","items":{"$ref":"#/components/schemas/BulkImportPropertyGroupDto"}}},"required":["crmSource","groups"]},"BulkImportPropertyGroupDto":{"type":"object","properties":{}}}}}
```

## The CommissionsImportDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CommissionsImportDto":{"type":"object","properties":{}}}}}
```

## The ActiveLoansImportDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ActiveLoansImportDto":{"type":"object","properties":{}}}}}
```

## The OwnerOverrideDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"OwnerOverrideDto":{"type":"object","properties":{}}}}}
```

## The EntitiesImportDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"EntitiesImportDto":{"type":"object","properties":{}}}}}
```

## The CrmDataBookImportDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CrmDataBookImportDto":{"type":"object","properties":{"crmSource":{"type":"string"},"importId":{"type":"string"},"sourceFile":{"type":"string","description":"Uploaded workbook file name, stamped on every row."},"applicantsSheet":{"type":"string"},"salesSheet":{"type":"string"},"sheets":{"type":"array","items":{"type":"object"},"description":"Named replica sheets: { table, sheet?, rows }. Used by CRMs with more than two exports."},"applicants":{"type":"array","items":{"type":"object","additionalProperties":{"type":"string","nullable":true}},"description":"Applicant rows keyed by st_applicants column name."},"sales":{"type":"array","items":{"type":"object","additionalProperties":{"type":"string","nullable":true}},"description":"Sales rows keyed by st_sales column name."}},"required":["crmSource","applicants","sales"]}}}}
```

## The BlanketSchedulingDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"BlanketSchedulingDto":{"type":"object","properties":{"clientReadinessAction":{"type":"string","enum":["auto_book_meetings","notify_me_first"]},"leadTimeMonths":{"type":"number","minimum":1,"maximum":24},"meetingTrigger":{"type":"string","enum":["LVR","EQUITY","GOAL"]},"targetValue":{"type":"number","minimum":0,"maximum":100},"meetingInviteMessage":{"type":"string"},"reviewFrequency":{"type":"string","enum":["MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUALLY","ANNUALLY"]},"approvalStatus":{"type":"string","enum":["pending_approval","auto_approval","manual_review"]}},"required":["clientReadinessAction","leadTimeMonths","meetingTrigger","targetValue","reviewFrequency","approvalStatus"]}}}}
```

## The BlanketReviewTemplateDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"BlanketReviewTemplateDto":{"type":"object","properties":{"frequency":{"type":"string","enum":["MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUALLY","ANNUALLY"]},"templateType":{"type":"string"},"templateName":{"type":"string"},"portfolioPerformance":{"type":"boolean"},"loanStructureCompetitiveness":{"type":"boolean"},"cashflowPosition":{"type":"boolean"},"rateSensitivity":{"type":"boolean"},"goalsLifestyleAlignment":{"type":"boolean"},"taxOptimisation":{"type":"boolean"},"wealthTrajectory":{"type":"boolean"},"borrowingPower":{"type":"boolean"},"marketUpdateOpportunities":{"type":"boolean"},"actionItemsAiSummary":{"type":"boolean"}}}}}}
```

## The BlanketPersonalProjectionsDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"BlanketPersonalProjectionsDto":{"type":"object","properties":{"salaryGrowth":{"type":"number"},"livingExpensesGrowth":{"type":"number"}},"required":["salaryGrowth","livingExpensesGrowth"]}}}}
```

## The BlanketPropertyParametersDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"BlanketPropertyParametersDto":{"type":"object","properties":{"occupancy":{"type":"number"},"sellingCosts":{"type":"number"},"claimCapitalWorksAnually":{"type":"boolean"},"lowValueAssetPooling":{"type":"boolean"},"depreciationMethod":{"type":"string","enum":["STRAIGHTLINE","DIMINISHING_VALUE","BALANCING_ADJUSTMENT"]}},"required":["occupancy","sellingCosts","claimCapitalWorksAnually","lowValueAssetPooling","depreciationMethod"]}}}}
```

## The BulkApplyBlanketParametersDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"BulkApplyBlanketParametersDto":{"type":"object","properties":{"userIds":{"type":"array","items":{"type":"string"}},"importId":{"type":"string"},"scheduling":{"$ref":"#/components/schemas/BlanketSchedulingDto"},"reviewTemplate":{"$ref":"#/components/schemas/BlanketReviewTemplateDto"},"personalProjections":{"$ref":"#/components/schemas/BlanketPersonalProjectionsDto"},"propertyParameters":{"$ref":"#/components/schemas/BlanketPropertyParametersDto"},"propagateToProperties":{"type":"boolean","default":true},"generateReviews":{"type":"boolean","default":false,"description":"When true, enqueue one ScaleAI /review/chat job per client. Default false (AI reviews toggle off)."}},"required":["userIds","scheduling","personalProjections","propertyParameters"]},"BlanketSchedulingDto":{"type":"object","properties":{"clientReadinessAction":{"type":"string","enum":["auto_book_meetings","notify_me_first"]},"leadTimeMonths":{"type":"number","minimum":1,"maximum":24},"meetingTrigger":{"type":"string","enum":["LVR","EQUITY","GOAL"]},"targetValue":{"type":"number","minimum":0,"maximum":100},"meetingInviteMessage":{"type":"string"},"reviewFrequency":{"type":"string","enum":["MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUALLY","ANNUALLY"]},"approvalStatus":{"type":"string","enum":["pending_approval","auto_approval","manual_review"]}},"required":["clientReadinessAction","leadTimeMonths","meetingTrigger","targetValue","reviewFrequency","approvalStatus"]},"BlanketReviewTemplateDto":{"type":"object","properties":{"frequency":{"type":"string","enum":["MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUALLY","ANNUALLY"]},"templateType":{"type":"string"},"templateName":{"type":"string"},"portfolioPerformance":{"type":"boolean"},"loanStructureCompetitiveness":{"type":"boolean"},"cashflowPosition":{"type":"boolean"},"rateSensitivity":{"type":"boolean"},"goalsLifestyleAlignment":{"type":"boolean"},"taxOptimisation":{"type":"boolean"},"wealthTrajectory":{"type":"boolean"},"borrowingPower":{"type":"boolean"},"marketUpdateOpportunities":{"type":"boolean"},"actionItemsAiSummary":{"type":"boolean"}}},"BlanketPersonalProjectionsDto":{"type":"object","properties":{"salaryGrowth":{"type":"number"},"livingExpensesGrowth":{"type":"number"}},"required":["salaryGrowth","livingExpensesGrowth"]},"BlanketPropertyParametersDto":{"type":"object","properties":{"occupancy":{"type":"number"},"sellingCosts":{"type":"number"},"claimCapitalWorksAnually":{"type":"boolean"},"lowValueAssetPooling":{"type":"boolean"},"depreciationMethod":{"type":"string","enum":["STRAIGHTLINE","DIMINISHING_VALUE","BALANCING_ADJUSTMENT"]}},"required":["occupancy","sellingCosts","claimCapitalWorksAnually","lowValueAssetPooling","depreciationMethod"]}}}}
```

## The ReconcileDealDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ReconcileDealDto":{"type":"object","properties":{"dealRef":{"type":"string"}},"required":["dealRef"]}}}}
```

## The BulkImportAnomalyItemDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"BulkImportAnomalyItemDto":{"type":"object","properties":{"userId":{"type":"string"},"ruleId":{"type":"string"},"severity":{"type":"string"},"targetPath":{"type":"string"},"entity":{"type":"string"},"crmRawValue":{"type":"string"},"heldPayload":{"type":"object"},"message":{"type":"string"}},"required":["userId","ruleId","severity","message"]}}}}
```

## The BulkImportAnomaliesDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"BulkImportAnomaliesDto":{"type":"object","properties":{"importId":{"type":"string"},"anomalies":{"type":"array","items":{"$ref":"#/components/schemas/BulkImportAnomalyItemDto"}}},"required":["anomalies"]},"BulkImportAnomalyItemDto":{"type":"object","properties":{"userId":{"type":"string"},"ruleId":{"type":"string"},"severity":{"type":"string"},"targetPath":{"type":"string"},"entity":{"type":"string"},"crmRawValue":{"type":"string"},"heldPayload":{"type":"object"},"message":{"type":"string"}},"required":["userId","ruleId","severity","message"]}}}}
```

## The ResolveImportAnomalyDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ResolveImportAnomalyDto":{"type":"object","properties":{"status":{"type":"string"},"resolvedValue":{"type":"string"}},"required":["status"]}}}}
```

## The ResolveImportAnomalyFieldDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ResolveImportAnomalyFieldDto":{"type":"object","properties":{"status":{"type":"string","enum":["accepted","dismissed"]},"resolvedValue":{"type":"string"}},"required":["status"]}}}}
```

## The BulkResolveImportAnomaliesDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"BulkResolveImportAnomaliesDto":{"type":"object","properties":{"status":{"type":"string"},"onlyWithCrmValue":{"type":"boolean","description":"When true and status is resolved, only rows with crmRawValue + targetPath are accepted."}},"required":["status"]}}}}
```

## The BulkImportPropertyAnomalyItemDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"BulkImportPropertyAnomalyItemDto":{"type":"object","properties":{"propertyInputsId":{"type":"string"},"userId":{"type":"string"},"ruleId":{"type":"string"},"severity":{"type":"string"},"targetPath":{"type":"string"},"entity":{"type":"string"},"crmRawValue":{"type":"string"},"heldPayload":{"type":"object"},"message":{"type":"string"}},"required":["propertyInputsId","userId","ruleId","severity","message"]}}}}
```

## The BulkImportPropertyAnomaliesDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"BulkImportPropertyAnomaliesDto":{"type":"object","properties":{"importId":{"type":"string"},"anomalies":{"type":"array","items":{"$ref":"#/components/schemas/BulkImportPropertyAnomalyItemDto"}}},"required":["anomalies"]},"BulkImportPropertyAnomalyItemDto":{"type":"object","properties":{"propertyInputsId":{"type":"string"},"userId":{"type":"string"},"ruleId":{"type":"string"},"severity":{"type":"string"},"targetPath":{"type":"string"},"entity":{"type":"string"},"crmRawValue":{"type":"string"},"heldPayload":{"type":"object"},"message":{"type":"string"}},"required":["propertyInputsId","userId","ruleId","severity","message"]}}}}
```

## The ResolveImportPropertyAnomalyDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ResolveImportPropertyAnomalyDto":{"type":"object","properties":{"status":{"type":"string"},"resolvedValue":{"type":"string"}},"required":["status"]}}}}
```

## The BulkResolveImportPropertyAnomaliesDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"BulkResolveImportPropertyAnomaliesDto":{"type":"object","properties":{"status":{"type":"string"},"onlyWithCrmValue":{"type":"boolean","description":"When true and status is resolved, only rows with held_payload or crmRawValue + targetPath."}},"required":["status"]}}}}
```

## The ActivityTrackerDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ActivityTrackerDto":{"type":"object","properties":{"type":{"type":"string","enum":["APP_DL_N","APP_DL_Y","APP_REF_N","APP_REF_Y","APP_ACCNT_N","APP_ACCNT_Y","APP_ACCNT_TYPE","APP_START","VIEW_PAGE","CLICK_PAGE","SEARCH_PAGE","NOTIF_READ","ACT_GOAL","ACT_SEARCHP","ACT_RESRC","ACT_MULTI_STRAT","ACT_TRACK1P","ACT_PAYWALL","APP_SUBS","ACT_TOKENS","VIEW_GOALS","VIEW_SIM","VIEW_DASH","VIEW_REPO","VIEW_ACAD","HOME","AcFHB","INV","DEVICE_IOS","DEVICE_DROID","APP_START_CONFIRMATION","ACT_TOKEN_TRANSACTION","ACT_PAYWALL_CONFIRMATION","ACT_PAYWALL2_CONFIRMATION","SESSION_START","SESSION_END"]}},"required":["type"]}}}}
```

## The CreateTemplateDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CreateTemplateDto":{"type":"object","properties":{"userId":{"type":"string","description":"User's Id"},"templateType":{"type":"string","description":"Tempate type","enum":["FIRST_HOME_BUYER","EXISTING_HOME_OWNER","DOWNSIZER","INVESTOR"]},"templateName":{"type":"string","description":"Template name"},"frequency":{"type":"string","description":"Frequency","enum":["MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUALLY","ANNUALLY"]},"additionalContext":{"type":"string","description":"Additional text notes"},"portfolioPerformance":{"type":"boolean","description":"Boolean : portfolio performance ","default":false},"loanStructureCompetitiveness":{"type":"boolean","description":"Boolean : loan structure competitiveness","default":false},"cashflowPosition":{"type":"boolean","description":"Boolean : Cashflow position","default":false},"rateSensitivity":{"type":"boolean","description":"Boolean : rate sensitivity","default":false},"goalsLifestyleAlignment":{"type":"boolean","description":"Boolean : goals lifestyle alignment","default":false},"taxOptimisation":{"type":"boolean","description":"Boolean : Tax optimisation","default":false},"wealthTrajectory":{"type":"boolean","description":"Boolean : Wealth trajectory","default":false},"borrowingPower":{"type":"boolean","description":"Boolean : borrowing power","default":false},"marketUpdateOpportunities":{"type":"boolean","description":"Boolean : Market update opportunities","default":false},"actionItemsAiSummary":{"type":"boolean","description":"Boolean :  Action items AI summary","default":false}},"required":["userId","templateType","templateName","frequency"]}}}}
```

## The UpdateTemplateDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"UpdateTemplateDto":{"type":"object","properties":{}}}}}
```

## The CreateDataDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CreateDataDto":{"type":"object","properties":{"userId":{"type":"string","description":"User's Id"},"templateId":{"type":"string","description":"Template Id"},"htmlContent":{"type":"string","description":"AI Client review generated by AI"},"brokerReview":{"type":"string","description":"Broker's comments and approval notes; shown in review workflow."},"status":{"type":"string","description":"Client reviews status","enum":["pending","reviewed","sent"],"default":"pending"}},"required":["userId","htmlContent"]}}}}
```

## The UpdateDataDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"UpdateDataDto":{"type":"object","properties":{"htmlContent":{"type":"string","description":"Client Review generated by AI"},"brokerReview":{"type":"string","description":"Broker's recommendation about generated client review"},"status":{"type":"string","description":"status of the client review","enum":["pending","reviewed","sent"]}}}}}}
```

## The CadenceStateDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CadenceStateDto":{"type":"object","properties":{"checkInStep":{"type":"number","description":"Check-in step in months: 0 off, 1 every month, 2 every two months, 3 every quarter","enum":[0,1,2,3]},"rateReviewStep":{"type":"number","description":"Rate review step in months: 0 off, 3 every quarter, 6 twice a year, 12 once a year","enum":[0,3,6,12]},"strategyMonth":{"type":"number","description":"Month of the strategy review, 0 = July … 11 = June","minimum":0,"maximum":11},"overrides":{"type":"object","description":"Per-month overrides, month index (0–11) → tier (0 off, 1 check-in, 2 rate review, 3 strategy review). Applied last, so an override always wins.","additionalProperties":{"type":"integer","minimum":0,"maximum":3}}},"required":["checkInStep","rateReviewStep","strategyMonth","overrides"]}}}}
```

## The UpsertReviewCycleDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"UpsertReviewCycleDto":{"type":"object","properties":{"userId":{"type":"string","description":"The client's user id"},"state":{"$ref":"#/components/schemas/CadenceStateDto"}},"required":["userId","state"]},"CadenceStateDto":{"type":"object","properties":{"checkInStep":{"type":"number","description":"Check-in step in months: 0 off, 1 every month, 2 every two months, 3 every quarter","enum":[0,1,2,3]},"rateReviewStep":{"type":"number","description":"Rate review step in months: 0 off, 3 every quarter, 6 twice a year, 12 once a year","enum":[0,3,6,12]},"strategyMonth":{"type":"number","description":"Month of the strategy review, 0 = July … 11 = June","minimum":0,"maximum":11},"overrides":{"type":"object","description":"Per-month overrides, month index (0–11) → tier (0 off, 1 check-in, 2 rate review, 3 strategy review). Applied last, so an override always wins.","additionalProperties":{"type":"integer","minimum":0,"maximum":3}}},"required":["checkInStep","rateReviewStep","strategyMonth","overrides"]}}}}
```

## The GenerateReviewDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"GenerateReviewDto":{"type":"object","properties":{"userId":{"type":"string","description":"User's Id"},"strategyId":{"type":"string","description":"Strategy Id"},"reviewTier":{"type":"string","description":"Review tier to generate. Sets the engine's `review_tier` and picks that tier's section set instead of the template's ten toggles; the saved review carries the tier. Omit for today's behaviour (all ten toggles, tier null).","enum":["check_in","rate_review","strategy_review"]}},"required":["userId","strategyId"]}}}}
```

## The GenerateReviewResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"GenerateReviewResponseDto":{"type":"object","properties":{"response":{"type":"string","description":"Generated review text from the AI service"},"conversation_history":{"type":"array","description":"Conversation history from the AI review generation","items":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string"}}}},"phases_analyzed":{"type":"number","description":"Number of portfolio phases analyzed"},"status":{"type":"string","description":"Initial review workflow status; present when a review row was saved","enum":["pending","reviewed","sent"]}},"required":["response","conversation_history"]}}}}
```

## The UpdateMeetingTagDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"UpdateMeetingTagDto":{"type":"object","properties":{"tags":{"type":"array","items":{"type":"string"}}},"required":["tags"]}}}}
```

## The SyncGraphFieldsDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"SyncGraphFieldsDto":{"type":"object","properties":{"fields":{"type":"array","items":{"type":"object","properties":{"dto":{"type":"string"},"relative_path":{"type":"string"}}}}},"required":["fields"]}}}}
```

## The WriteMemoryDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"WriteMemoryDto":{"type":"object","properties":{"kind":{"type":"string","enum":["workspace","broker","agent","client","chat"]},"text":{"type":"string"},"confirmed":{"type":"boolean","description":"Must be true. No silent persist from transcripts or chat."},"clientId":{"type":"string","description":"Client user.id. Required when kind=client."},"agentId":{"type":"string","description":"AgentSpec.id. Required when kind=agent."},"catalogueFlag":{"type":"string","description":"AgentSpec.catalogue_flag of the author: 'agent' | 'subagent'."},"teamId":{"type":"string"},"sourceRef":{"type":"string","description":"note.id for a transcript pin, or ai_chat.id when kind=chat."},"fieldIds":{"type":"array","items":{"type":"string"}},"conceptIds":{"type":"array","items":{"type":"string"}},"embedding":{"description":"1536 floats from text-embedding-3-small. Engine embeds at write.","type":"array","items":{"type":"number"}},"reviewBy":{"type":"string"}},"required":["kind","text","confirmed"]}}}}
```

## The MemoryKind object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"MemoryKind":{"type":"string","enum":["workspace","broker","agent","client","chat"]}}}}
```

## The MemoryStatus object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"MemoryStatus":{"type":"string","enum":["suggested","confirmed"]}}}}
```

## The SuggestMemoryCandidateDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"SuggestMemoryCandidateDto":{"type":"object","properties":{"kind":{"type":"string","enum":["workspace","broker","agent","client","chat"]},"text":{"type":"string"},"clientId":{"type":"string","description":"Client user.id. Required when kind=client; only send it when the client is certain."},"agentId":{"type":"string","description":"AgentSpec.id. Required when kind=agent."},"teamId":{"type":"string"},"sourceRef":{"type":"string","description":"note.id for a transcript, or ai_chat.id for a chat turn."},"embedding":{"description":"1536 floats. Engine embeds at suggest time.","type":"array","items":{"type":"number"}}},"required":["kind","text"]}}}}
```

## The SuggestMemoriesDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"SuggestMemoriesDto":{"type":"object","properties":{"candidates":{"type":"array","items":{"$ref":"#/components/schemas/SuggestMemoryCandidateDto"}}},"required":["candidates"]},"SuggestMemoryCandidateDto":{"type":"object","properties":{"kind":{"type":"string","enum":["workspace","broker","agent","client","chat"]},"text":{"type":"string"},"clientId":{"type":"string","description":"Client user.id. Required when kind=client; only send it when the client is certain."},"agentId":{"type":"string","description":"AgentSpec.id. Required when kind=agent."},"teamId":{"type":"string"},"sourceRef":{"type":"string","description":"note.id for a transcript, or ai_chat.id for a chat turn."},"embedding":{"description":"1536 floats. Engine embeds at suggest time.","type":"array","items":{"type":"number"}}},"required":["kind","text"]}}}}
```

## The SearchMemoryDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"SearchMemoryDto":{"type":"object","properties":{"query":{"type":"string"},"kind":{"type":"string","enum":["workspace","broker","agent","client","chat"]},"clientId":{"type":"string"},"agentId":{"type":"string"},"sourceRef":{"type":"string"},"embedding":{"type":"array","items":{"type":"number"}},"status":{"type":"string","enum":["suggested","confirmed"],"description":"Defaults to confirmed. Pass suggested to read the broker's unreviewed suggestions."}}}}}}
```

## The ConfirmMemoryDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ConfirmMemoryDto":{"type":"object","properties":{"text":{"type":"string","description":"Replacement sentence (Confirm after Edit). Omit to confirm the text as suggested."}}}}}}
```

## The CreateNotificationDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CreateNotificationDto":{"type":"object","properties":{"recipientId":{"type":"string","description":"ID of the user receiving the notification"},"source":{"type":"string","description":"Source of the notification","enum":["readiness","client_message","client_review","client_connection","meeting_event","task_assigned","system"]},"action":{"type":"string","description":"Readiness action (optional, relevant when source is READINESS)","enum":["buy","refinance","withdraw_equity","sell","invest"]},"title":{"type":"string","description":"Title of the notification"},"description":{"type":"string","description":"Description or body content of the notification"},"entityType":{"type":"string","description":"Type of entity this notification is for","enum":["client","broker","admin"]},"data":{"type":"object","description":"Additional data/metadata for the notification"}},"required":["recipientId","source","title","entityType","data"]}}}}
```

## The NotificationResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"NotificationResponseDto":{"type":"object","properties":{"recipientId":{"type":"string","description":"ID of the user receiving the notification"},"source":{"type":"string","description":"Source of the notification","enum":["readiness","client_message","client_review","client_connection","meeting_event","task_assigned","system"]},"action":{"type":"string","description":"Readiness action (optional, relevant when source is READINESS)","enum":["buy","refinance","withdraw_equity","sell","invest"]},"title":{"type":"string","description":"Title of the notification"},"description":{"type":"string","description":"Description or body content of the notification"},"entityType":{"type":"string","description":"Type of entity this notification is for","enum":["client","broker","admin"]},"data":{"type":"object","description":"Additional data/metadata for the notification"},"id":{"type":"string","description":"Unique identifier for the notification"},"isRead":{"type":"boolean","description":"Whether the notification has been read"},"readAt":{"format":"date-time","type":"string","description":"Timestamp when the notification was marked as read"},"createdAt":{"format":"date-time","type":"string","description":"Timestamp when the notification was created"},"updatedAt":{"format":"date-time","type":"string","description":"Timestamp when the notification was last updated"}},"required":["recipientId","source","title","entityType","data","id","isRead","createdAt","updatedAt"]}}}}
```

## The UpdateNotificationDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"UpdateNotificationDto":{"type":"object","properties":{"recipientId":{"type":"string","description":"ID of the user receiving the notification"},"source":{"type":"string","description":"Source of the notification","enum":["readiness","client_message","client_review","client_connection","meeting_event","task_assigned","system"]},"action":{"type":"string","description":"Readiness action (optional, relevant when source is READINESS)","enum":["buy","refinance","withdraw_equity","sell","invest"]},"title":{"type":"string","description":"Title of the notification"},"description":{"type":"string","description":"Description or body content of the notification"},"entityType":{"type":"string","description":"Type of entity this notification is for","enum":["client","broker","admin"]},"data":{"type":"object","description":"Additional data/metadata for the notification"},"isRead":{"type":"boolean","description":"Mark notification as read or unread"},"readAt":{"format":"date-time","type":"string","description":"Timestamp when the notification was marked as read"}}}}}}
```

## The AiSettingEntryDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"AiSettingEntryDto":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"object","description":"JSON value for this dotted key. Must not be null."},"locked":{"type":"boolean"}},"required":["key","value"]}}}}
```

## The UpsertAiSettingsDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"UpsertAiSettingsDto":{"type":"object","properties":{"level":{"type":"string","enum":["scale","workspace","broker","client"]},"scopeId":{"type":"string","description":"Team id (workspace), broker user id, or client user id. Omit for scale."},"entries":{"type":"array","items":{"$ref":"#/components/schemas/AiSettingEntryDto"}}},"required":["level","entries"]},"AiSettingEntryDto":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"object","description":"JSON value for this dotted key. Must not be null."},"locked":{"type":"boolean"}},"required":["key","value"]}}}}
```

## The SupportResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"SupportResponseDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique chat identifier for routing and WebSocket subscriptions"},"userId":{"type":"string","description":"User ID who owns this chat"},"supportChat":{"type":"boolean","description":"Distinguishes Scale support (true) from broker chat (false). Used for UI routing and filtering."},"unreadCount":{"type":"number","description":"Unread message count for displaying notification badge"},"brokerName":{"type":"string","description":"Broker's business name, shown in chat header when broker assigned"},"brokerTradingName":{"type":"string","description":"Broker's trading name for secondary display in broker card"},"brokerImageUrl":{"type":"string","description":"Broker's avatar URL for displaying profile picture in chat"},"brokerSupabaseId":{"type":"string","description":"Broker's Supabase user id; matches `broker-connections` disconnect path param"},"createdAt":{"type":"string","description":"Chat creation timestamp","format":"date-time"},"updatedAt":{"type":"string","description":"Last activity timestamp, used for sorting chat list by recency","format":"date-time"},"userKind":{"type":"string","description":"Who owns the thread: a mobile client or a ScaleConnect broker. Brokers are named from their broker profile because their user row has no personal details.","enum":["client","broker"]},"userTradingName":{"type":"string","description":"Owner's trading name when the owner is a broker"},"isActive":{"type":"boolean","description":"Tickets: true while the conversation is open. Support chats flip to false when closed by the owner or by staff."},"closedAt":{"type":"string","format":"date-time"},"closedBy":{"type":"string","enum":["user","admin"]}},"required":["id","userId","supportChat","unreadCount","createdAt","updatedAt","userKind","isActive"]}}}}
```

## The SupportTicketSummaryDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"SupportTicketSummaryDto":{"type":"object","properties":{"id":{"type":"string"},"isActive":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"closedAt":{"type":"string","format":"date-time"},"closedBy":{"type":"string","enum":["user","admin"]},"lastMessageAt":{"type":"string","format":"date-time"},"messageCount":{"type":"number"},"firstMessage":{"type":"string"},"lastMessage":{"type":"string"}},"required":["id","isActive","createdAt","messageCount"]}}}}
```

## The SupportTicketHistoryResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"SupportTicketHistoryResponseDto":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/SupportTicketSummaryDto"}},"total":{"type":"number"},"page":{"type":"number"},"limit":{"type":"number"},"totalPages":{"type":"number"}},"required":["chats","total","page","limit","totalPages"]},"SupportTicketSummaryDto":{"type":"object","properties":{"id":{"type":"string"},"isActive":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"closedAt":{"type":"string","format":"date-time"},"closedBy":{"type":"string","enum":["user","admin"]},"lastMessageAt":{"type":"string","format":"date-time"},"messageCount":{"type":"number"},"firstMessage":{"type":"string"},"lastMessage":{"type":"string"}},"required":["id","isActive","createdAt","messageCount"]}}}}
```

## The PresignAttachmentDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PresignAttachmentDto":{"type":"object","properties":{"name":{"type":"string"},"mimeType":{"type":"string"},"sizeBytes":{"type":"number"}},"required":["name","mimeType","sizeBytes"]}}}}
```

## The ChatListResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ChatListResponseDto":{"type":"object","properties":{"chats":{"description":"Array of chat objects","type":"array","items":{"$ref":"#/components/schemas/SupportResponseDto"}},"total":{"type":"number","description":"Total number of chats"},"page":{"type":"number","description":"Current page number"},"limit":{"type":"number","description":"Items per page"},"totalPages":{"type":"number","description":"Total number of pages"}},"required":["chats","total","page","limit","totalPages"]},"SupportResponseDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique chat identifier for routing and WebSocket subscriptions"},"userId":{"type":"string","description":"User ID who owns this chat"},"supportChat":{"type":"boolean","description":"Distinguishes Scale support (true) from broker chat (false). Used for UI routing and filtering."},"unreadCount":{"type":"number","description":"Unread message count for displaying notification badge"},"brokerName":{"type":"string","description":"Broker's business name, shown in chat header when broker assigned"},"brokerTradingName":{"type":"string","description":"Broker's trading name for secondary display in broker card"},"brokerImageUrl":{"type":"string","description":"Broker's avatar URL for displaying profile picture in chat"},"brokerSupabaseId":{"type":"string","description":"Broker's Supabase user id; matches `broker-connections` disconnect path param"},"createdAt":{"type":"string","description":"Chat creation timestamp","format":"date-time"},"updatedAt":{"type":"string","description":"Last activity timestamp, used for sorting chat list by recency","format":"date-time"},"userKind":{"type":"string","description":"Who owns the thread: a mobile client or a ScaleConnect broker. Brokers are named from their broker profile because their user row has no personal details.","enum":["client","broker"]},"userTradingName":{"type":"string","description":"Owner's trading name when the owner is a broker"},"isActive":{"type":"boolean","description":"Tickets: true while the conversation is open. Support chats flip to false when closed by the owner or by staff."},"closedAt":{"type":"string","format":"date-time"},"closedBy":{"type":"string","enum":["user","admin"]}},"required":["id","userId","supportChat","unreadCount","createdAt","updatedAt","userKind","isActive"]}}}}
```

## The BrokerListResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"BrokerListResponseDto":{"type":"object","properties":{"brokers":{"description":"Array of broker profiles","type":"array","items":{"type":"object"}}},"required":["brokers"]}}}}
```

## The MessageDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"MessageDto":{"type":"object","properties":{"id":{"type":"string","description":"Message unique identifier"},"chatId":{"type":"string","description":"Chat this message belongs to"},"content":{"type":"string","description":"Message text content"},"senderId":{"type":"string","description":"ID of user who sent the message"},"senderType":{"type":"string","description":"Type of sender (user or admin)","enum":["user","admin"]},"isRead":{"type":"boolean","description":"Whether message has been read"},"createdAt":{"type":"string","description":"Message creation timestamp","format":"date-time"},"attachments":{"description":"Images/video on the message. `url` is a signed read URL valid 24 h, minted on every read.","type":"array","items":{"type":"string"}}},"required":["id","chatId","content","senderId","senderType","isRead","createdAt"]}}}}
```

## The MessageListResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"MessageListResponseDto":{"type":"object","properties":{"data":{"description":"Array of messages","type":"array","items":{"$ref":"#/components/schemas/MessageDto"}},"page":{"type":"number","description":"Current page number"},"limit":{"type":"number","description":"Items per page"},"total":{"type":"number","description":"Total message count"}},"required":["data","page","limit","total"]},"MessageDto":{"type":"object","properties":{"id":{"type":"string","description":"Message unique identifier"},"chatId":{"type":"string","description":"Chat this message belongs to"},"content":{"type":"string","description":"Message text content"},"senderId":{"type":"string","description":"ID of user who sent the message"},"senderType":{"type":"string","description":"Type of sender (user or admin)","enum":["user","admin"]},"isRead":{"type":"boolean","description":"Whether message has been read"},"createdAt":{"type":"string","description":"Message creation timestamp","format":"date-time"},"attachments":{"description":"Images/video on the message. `url` is a signed read URL valid 24 h, minted on every read.","type":"array","items":{"type":"string"}}},"required":["id","chatId","content","senderId","senderType","isRead","createdAt"]}}}}
```

## The MessageAttachmentDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"MessageAttachmentDto":{"type":"object","properties":{"key":{"type":"string","description":"Object key returned by POST :chatId/attachments/presign (support/<chatId>/…)"},"name":{"type":"string","description":"Original file name shown to the reader"},"mimeType":{"type":"string"},"sizeBytes":{"type":"number"},"width":{"type":"number"},"height":{"type":"number"},"durationMs":{"type":"number"}},"required":["key","name","mimeType","sizeBytes"]}}}}
```

## The CreateMessageDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CreateMessageDto":{"type":"object","properties":{"content":{"type":"string","description":"Message text. May be empty when at least one attachment is present."},"receiverId":{"type":"string","description":"Optional recipient ID for directed messages"},"attachments":{"description":"Images/video already uploaded through :chatId/attachments/presign","type":"array","items":{"$ref":"#/components/schemas/MessageAttachmentDto"}}}},"MessageAttachmentDto":{"type":"object","properties":{"key":{"type":"string","description":"Object key returned by POST :chatId/attachments/presign (support/<chatId>/…)"},"name":{"type":"string","description":"Original file name shown to the reader"},"mimeType":{"type":"string"},"sizeBytes":{"type":"number"},"width":{"type":"number"},"height":{"type":"number"},"durationMs":{"type":"number"}},"required":["key","name","mimeType","sizeBytes"]}}}}
```

## The SupportSuccessResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"SupportSuccessResponseDto":{"type":"object","properties":{"success":{"type":"boolean","description":"Operation success status"}},"required":["success"]}}}}
```

## The StartSessionDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"StartSessionDto":{"type":"object","properties":{"chatId":{"type":"string","description":"Chat ID to start the session for"}},"required":["chatId"]}}}}
```

## The AgentSessionResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"AgentSessionResponseDto":{"type":"object","properties":{"id":{"type":"string"},"chatId":{"type":"string"},"status":{"type":"string","enum":["active","inactive","completed"]},"startAt":{"type":"string","format":"date-time"},"endAt":{"type":"string","format":"date-time"}},"required":["id","chatId","status"]}}}}
```

## The EndSessionDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"EndSessionDto":{"type":"object","properties":{"sessionId":{"type":"string","description":"Session ID to end"}},"required":["sessionId"]}}}}
```

## The SessionStatusResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"SessionStatusResponseDto":{"type":"object","properties":{"hasActiveSession":{"type":"boolean"},"session":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/AgentSessionResponseDto"}]}},"required":["hasActiveSession","session"]},"AgentSessionResponseDto":{"type":"object","properties":{"id":{"type":"string"},"chatId":{"type":"string"},"status":{"type":"string","enum":["active","inactive","completed"]},"startAt":{"type":"string","format":"date-time"},"endAt":{"type":"string","format":"date-time"}},"required":["id","chatId","status"]}}}}
```

## The MeetingSchedulerStreamRequestDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"MeetingSchedulerStreamRequestDto":{"type":"object","properties":{"message":{"type":"string","description":"User message (meeting intent)"},"conversation_history":{"description":"Conversation history items","type":"array","items":{"type":"object"}},"chat_id":{"type":"string","description":"Chat id within this system"},"user_id":{"type":"string","description":"User id for the chat to pass to the meeting scheduler"},"client_email":{"type":"string","description":"Client email to use for booking/notifications"},"ask_email":{"type":"boolean","description":"Whether to ask for an email when missing"}},"required":["message","chat_id"]}}}}
```

## The AgentActionRequestDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"AgentActionRequestDto":{"type":"object","properties":{"action":{"type":"string","description":"Action to execute","enum":["send_message","create_event","close_session","send_message_and_close_session","create_event_and_close_session"]},"chatId":{"type":"string","description":"Chat ID (required for all actions)"},"message":{"type":"string","description":"Message content (for send_message actions)"},"title":{"type":"string","description":"Event title (for create_event actions)"},"startTime":{"type":"string","description":"Event start time (for create_event actions)"},"endTime":{"type":"string","description":"Event end time (for create_event actions)"},"client_email":{"type":"string","description":"Client email (for create_event actions)"},"content":{"type":"string","description":"Message content to send (for combined actions)"},"description":{"type":"string","description":"Event description (for create_event actions)"},"timezone":{"type":"string","description":"Event timezone (for create_event actions)"},"location":{"type":"string","description":"Event location (for create_event actions)"}},"required":["action","chatId"]}}}}
```

## The CreateEventFormDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CreateEventFormDto":{"type":"object","properties":{"title":{"type":"string","description":"Event title (max 200 chars). Shown on calendar and notifications to attendees."},"description":{"type":"string","description":"Event description (details/agenda). Displayed in event details view and invitations."},"startTime":{"type":"string","description":"Event start time (ISO 8601: 2025-10-30T14:10:00 or with offset +05:00). Used for calendar positioning."},"startTimeZone":{"type":"string","description":"Start time timezone (IANA: Asia/Karachi). Ensures correct UTC conversion for all attendees."},"endTime":{"type":"string","description":"Event end time (ISO 8601: 2025-10-30T15:10:00 or with offset +05:00). Must be after startTime; determines duration."},"endTimeZone":{"type":"string","description":"End time timezone (IANA: Asia/Karachi). Ensures correct UTC conversion for all attendees."},"location":{"type":"string","description":"Event location/venue. Shown on calendar event and sent to attendees in invitation."},"isAllDay":{"type":"boolean","description":"Is all-day event (true=no specific time, false=timed event). Controls calendar display format."},"attendees":{"type":"string","description":"Attendee email addresses (comma-separated for FormData)"},"clientId":{"type":"string","description":"The client (their userId) this meeting is for. Used to save the notetaker transcript into that client's notes."},"sendInvites":{"type":"boolean","description":"If true, send invitation emails/updates to attendees. Form-data boolean."},"membersLimit":{"type":"string","description":"Maximum members allowed for the event"},"platform":{"type":"string","description":"Meeting platform","default":"google_meet"},"attachment":{"description":"File attachments (multipart form file inputs)","type":"array","items":{"type":"string","format":"binary"}}},"required":["title","startTime","endTime"]}}}}
```

## The UpdateEventDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"UpdateEventDto":{"type":"object","properties":{"title":{"type":"string","description":"Updated event title (max 200 chars). Sent to all attendees when changed."},"description":{"type":"string","description":"Updated event description (agenda/notes). Sent to attendees in update notification."},"startTime":{"type":"string","description":"Updated start time (ISO 8601: 2025-10-30T14:10:00 or with offset). Triggers reschedule notification to attendees."},"startTimeZone":{"type":"string","description":"Updated start timezone (IANA: Asia/Karachi). Used for rescheduled event UTC conversion."},"endTime":{"type":"string","description":"Updated end time (ISO 8601: 2025-10-30T15:10:00 or with offset). Must be after updated startTime."},"endTimeZone":{"type":"string","description":"Updated end timezone (IANA: Asia/Karachi). Used for rescheduled event UTC conversion."},"location":{"type":"string","description":"Updated location/venue. Sent to attendees in reschedule notification."},"isAllDay":{"type":"boolean","description":"Update all-day status (true=no time, false=timed). Changes event display format."},"attendees":{"description":"Updated attendee email list. Additions/removals sent as invites/cancellations.","type":"array","items":{"type":"string"}},"clientId":{"type":"string","description":"The client (their userId) this meeting is for. Used to save the notetaker transcript into that client's notes."},"sendUpdates":{"type":"string","description":"Controls whether Google sends invitation/update emails when patching event (one of 'all'|'externalOnly'|'none'). If omitted and attendees changed, defaults to 'all'"},"membersLimit":{"type":"string","description":"Max attendees allowed (e.g., '10+ members'). Displayed on event to manage capacity."},"platform":{"type":"string","description":"Video meeting platform (google_meet). Generates meet link sent to attendees.","default":"google_meet"},"attachment":{"description":"File attachments metadata (filename, path, size, type). Shared with attendees via event description.","type":"array","items":{"type":"object"}}}}}}}
```

## The AvailabilityCheckDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"AvailabilityCheckDto":{"type":"object","properties":{"startTime":{"type":"string","description":"Meeting start time (ISO 8601, e.g., 2025-10-30T14:00:00+05:00). Checked against broker calendar."},"endTime":{"type":"string","description":"Meeting end time (ISO 8601, e.g., 2025-10-30T15:00:00+05:00). Must be after startTime."},"timezone":{"type":"string","description":"Meeting timezone (IANA format, e.g., Asia/Karachi). Determines how availability checks interpret times."}},"required":["startTime","endTime"]}}}}
```

## The AvailabilityResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"AvailabilityResponseDto":{"type":"object","properties":{"available":{"type":"boolean","description":"Whether merchant is available at requested time (true=free, false=has conflicts)."},"reason":{"type":"string","description":"Reason if unavailable (e.g., conflicting meeting). Shown to user on UI when booking."},"conflictingEvents":{"description":"List of conflicting events blocking the slot (id, title, start, end). Shown on booking screen.","type":"array","items":{"type":"object"}},"suggestedTimes":{"description":"Alternative available slots if unavailable. Populated on UI for quick rescheduling.","type":"array","items":{"type":"object"}}},"required":["available"]}}}}
```

## The StrategyEntityTrusteeDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"StrategyEntityTrusteeDto":{"type":"object","properties":{"trusteeName":{"type":"string","description":"Workbook INPUTS!223 Trustee / Trustee Entity — individual trustee(s) or the corporate trustee, free text."},"userId":{"type":"string","nullable":true,"description":"Linked ID — individual trustee with a ScaleApp account. At most one of userId / entityId."},"entityId":{"type":"string","nullable":true,"description":"Linked ID — corporate trustee that is another entity on this strategy. At most one of userId / entityId."}},"required":["trusteeName"]}}}}
```

## The StrategyEntityOwnerDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"StrategyEntityOwnerDto":{"type":"object","properties":{"slot":{"type":"number"},"ownerName":{"type":"string","description":"Workbook INPUTS!243–247 Owner 1–5. A person or another entity (e.g. a corporate trustee); free text."},"userId":{"type":"string","description":"Workbook INPUTS!262–266 Linked ID — set when the owner has a ScaleApp account. At most one of userId / entityId."},"entityId":{"type":"string","description":"Workbook INPUTS!262–266 Linked ID — set when the owner is another entity on this strategy. At most one of userId / entityId."},"ownershipPercent":{"type":"number","description":"Percent ownership, 0-100."},"relation":{"type":"string"}},"required":["slot","ownerName"]}}}}
```

## The StrategyEntityCompanyConfigDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"StrategyEntityCompanyConfigDto":{"type":"object","properties":{"openingFrankingBalance":{"type":"number"},"dividendFrankingRate":{"type":"number"},"openingRetainedEarnings":{"type":"number"}}}}}}
```

## The StrategyEntityTrustCashDistributionDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"StrategyEntityTrustCashDistributionDto":{"type":"object","properties":{"owner1Percent":{"type":"number","description":"Workbook INPUTS!213 Distribution % to owner 1 (owners[].slot = 1), 0–100."},"owner2Percent":{"type":"number","description":"Workbook INPUTS!214 Distribution % to owner 2 (owners[].slot = 2), 0–100."},"owner3Percent":{"type":"number","description":"Workbook INPUTS!215 Distribution % to owner 3 (owners[].slot = 3), 0–100."},"owner4Percent":{"type":"number","description":"Workbook INPUTS!216 Distribution % to owner 4 (owners[].slot = 4), 0–100."},"owner5Percent":{"type":"number","description":"Workbook INPUTS!217 Distribution % to owner 5 (owners[].slot = 5), 0–100."}}}}}}
```

## The StrategyEntityTrustConfigDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"StrategyEntityTrustConfigDto":{"type":"object","properties":{"trustType":{"type":"string"},"openingCarriedForwardLosses":{"type":"number"},"cashDistribution":{"description":"Workbook INPUTS!212–217 DISCRETIONARY TRUST CASH DISTRIBUTION INPUTS — only when trustType = discretionary. Percent to each owner slot 1–5; sums to 100.","allOf":[{"$ref":"#/components/schemas/StrategyEntityTrustCashDistributionDto"}]},"cgtStreamingTarget":{"type":"string","description":"Workbook INPUTS!219 CGT Streaming Target (list)."},"hasDesignatedBeneficiaryNswLandTax":{"type":"boolean","description":"Workbook INPUTS!220 Has Designated Beneficiary (NSW land tax) (switch)."},"foreignBeneficiaryExcluded":{"type":"boolean","description":"Workbook INPUTS!221 Foreign Beneficiary excluded (switch)."},"nonPropertyIncome":{"type":"number","description":"Workbook INPUTS!222 Non-Property Income ($ p.a.)."}}},"StrategyEntityTrustCashDistributionDto":{"type":"object","properties":{"owner1Percent":{"type":"number","description":"Workbook INPUTS!213 Distribution % to owner 1 (owners[].slot = 1), 0–100."},"owner2Percent":{"type":"number","description":"Workbook INPUTS!214 Distribution % to owner 2 (owners[].slot = 2), 0–100."},"owner3Percent":{"type":"number","description":"Workbook INPUTS!215 Distribution % to owner 3 (owners[].slot = 3), 0–100."},"owner4Percent":{"type":"number","description":"Workbook INPUTS!216 Distribution % to owner 4 (owners[].slot = 4), 0–100."},"owner5Percent":{"type":"number","description":"Workbook INPUTS!217 Distribution % to owner 5 (owners[].slot = 5), 0–100."}}}}}}
```

## The StrategyEntitySmsfMemberDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"StrategyEntitySmsfMemberDto":{"type":"object","properties":{"slot":{"type":"number","description":"Workbook INPUTS!224 (Member 1) / INPUTS!233 (Member 2)."},"memberName":{"type":"string","description":"Member name, free text (display; mirrors owners[].ownerName)."},"userId":{"type":"string","description":"Workbook INPUTS!226 / 234 Member — User Reference. The member's ScaleApp user id."},"dateOfBirth":{"type":"string","description":"Workbook INPUTS!227 / 235 Member — Date of Birth, ISO date. Drives pension phase in the model (no separate phase input)."},"accountBalance":{"type":"number","description":"Workbook INPUTS!229 / 237 Member — Account Balance ($)."},"annualConcessionalContribution":{"type":"number","description":"Workbook INPUTS!230 / 238 Member — Concessional Contribution ($ p.a.)."}},"required":["slot","memberName"]}}}}
```

## The StrategyEntitySmsfConfigDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"StrategyEntitySmsfConfigDto":{"type":"object","properties":{"openingFundBalance":{"type":"number","description":"Workbook INPUTS!225 Opening Fund Balance ($)."},"members":{"description":"Workbook INPUTS!224–240 — Member 1 / Member 2, one row per member (slot 1–2).","type":"array","items":{"$ref":"#/components/schemas/StrategyEntitySmsfMemberDto"}}}},"StrategyEntitySmsfMemberDto":{"type":"object","properties":{"slot":{"type":"number","description":"Workbook INPUTS!224 (Member 1) / INPUTS!233 (Member 2)."},"memberName":{"type":"string","description":"Member name, free text (display; mirrors owners[].ownerName)."},"userId":{"type":"string","description":"Workbook INPUTS!226 / 234 Member — User Reference. The member's ScaleApp user id."},"dateOfBirth":{"type":"string","description":"Workbook INPUTS!227 / 235 Member — Date of Birth, ISO date. Drives pension phase in the model (no separate phase input)."},"accountBalance":{"type":"number","description":"Workbook INPUTS!229 / 237 Member — Account Balance ($)."},"annualConcessionalContribution":{"type":"number","description":"Workbook INPUTS!230 / 238 Member — Concessional Contribution ($ p.a.)."}},"required":["slot","memberName"]}}}}
```

## The StrategyEntityDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"StrategyEntityDto":{"type":"object","properties":{"id":{"type":"string","description":"Entity id — use as {entityId} on GET/PUT/DELETE /v1/entities/{entityId}."},"strategyId":{"type":"string","description":"Strategy the entity belongs to (what ?strategyId= resolved to)."},"entityName":{"type":"string"},"entityType":{"type":"string","enum":["company","trust","smsf"]},"entityState":{"type":"string"},"entityActive":{"type":"boolean","default":true},"annualComplianceCost":{"type":"number"},"dateEntityAdded":{"type":"string","description":"Workbook INPUTS!198 Date Entity Added (base date), ISO date."},"linkedToUser1":{"type":"boolean","description":"Workbook INPUTS!201 Linked to User 1 (switch)."},"linkedToUser2":{"type":"boolean","description":"Workbook INPUTS!202 Linked to User 2 (switch)."},"trustee":{"nullable":true,"description":"Workbook INPUTS!223 Trustee / Trustee Entity (trust or SMSF). Same nesting as an owners[] row; null if none.","allOf":[{"$ref":"#/components/schemas/StrategyEntityTrusteeDto"}]},"owners":{"type":"array","items":{"$ref":"#/components/schemas/StrategyEntityOwnerDto"}},"company":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/StrategyEntityCompanyConfigDto"}]},"trust":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/StrategyEntityTrustConfigDto"}]},"smsf":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/StrategyEntitySmsfConfigDto"}]}},"required":["id","strategyId","entityName","entityType","owners"]},"StrategyEntityTrusteeDto":{"type":"object","properties":{"trusteeName":{"type":"string","description":"Workbook INPUTS!223 Trustee / Trustee Entity — individual trustee(s) or the corporate trustee, free text."},"userId":{"type":"string","nullable":true,"description":"Linked ID — individual trustee with a ScaleApp account. At most one of userId / entityId."},"entityId":{"type":"string","nullable":true,"description":"Linked ID — corporate trustee that is another entity on this strategy. At most one of userId / entityId."}},"required":["trusteeName"]},"StrategyEntityOwnerDto":{"type":"object","properties":{"slot":{"type":"number"},"ownerName":{"type":"string","description":"Workbook INPUTS!243–247 Owner 1–5. A person or another entity (e.g. a corporate trustee); free text."},"userId":{"type":"string","description":"Workbook INPUTS!262–266 Linked ID — set when the owner has a ScaleApp account. At most one of userId / entityId."},"entityId":{"type":"string","description":"Workbook INPUTS!262–266 Linked ID — set when the owner is another entity on this strategy. At most one of userId / entityId."},"ownershipPercent":{"type":"number","description":"Percent ownership, 0-100."},"relation":{"type":"string"}},"required":["slot","ownerName"]},"StrategyEntityCompanyConfigDto":{"type":"object","properties":{"openingFrankingBalance":{"type":"number"},"dividendFrankingRate":{"type":"number"},"openingRetainedEarnings":{"type":"number"}}},"StrategyEntityTrustConfigDto":{"type":"object","properties":{"trustType":{"type":"string"},"openingCarriedForwardLosses":{"type":"number"},"cashDistribution":{"description":"Workbook INPUTS!212–217 DISCRETIONARY TRUST CASH DISTRIBUTION INPUTS — only when trustType = discretionary. Percent to each owner slot 1–5; sums to 100.","allOf":[{"$ref":"#/components/schemas/StrategyEntityTrustCashDistributionDto"}]},"cgtStreamingTarget":{"type":"string","description":"Workbook INPUTS!219 CGT Streaming Target (list)."},"hasDesignatedBeneficiaryNswLandTax":{"type":"boolean","description":"Workbook INPUTS!220 Has Designated Beneficiary (NSW land tax) (switch)."},"foreignBeneficiaryExcluded":{"type":"boolean","description":"Workbook INPUTS!221 Foreign Beneficiary excluded (switch)."},"nonPropertyIncome":{"type":"number","description":"Workbook INPUTS!222 Non-Property Income ($ p.a.)."}}},"StrategyEntityTrustCashDistributionDto":{"type":"object","properties":{"owner1Percent":{"type":"number","description":"Workbook INPUTS!213 Distribution % to owner 1 (owners[].slot = 1), 0–100."},"owner2Percent":{"type":"number","description":"Workbook INPUTS!214 Distribution % to owner 2 (owners[].slot = 2), 0–100."},"owner3Percent":{"type":"number","description":"Workbook INPUTS!215 Distribution % to owner 3 (owners[].slot = 3), 0–100."},"owner4Percent":{"type":"number","description":"Workbook INPUTS!216 Distribution % to owner 4 (owners[].slot = 4), 0–100."},"owner5Percent":{"type":"number","description":"Workbook INPUTS!217 Distribution % to owner 5 (owners[].slot = 5), 0–100."}}},"StrategyEntitySmsfConfigDto":{"type":"object","properties":{"openingFundBalance":{"type":"number","description":"Workbook INPUTS!225 Opening Fund Balance ($)."},"members":{"description":"Workbook INPUTS!224–240 — Member 1 / Member 2, one row per member (slot 1–2).","type":"array","items":{"$ref":"#/components/schemas/StrategyEntitySmsfMemberDto"}}}},"StrategyEntitySmsfMemberDto":{"type":"object","properties":{"slot":{"type":"number","description":"Workbook INPUTS!224 (Member 1) / INPUTS!233 (Member 2)."},"memberName":{"type":"string","description":"Member name, free text (display; mirrors owners[].ownerName)."},"userId":{"type":"string","description":"Workbook INPUTS!226 / 234 Member — User Reference. The member's ScaleApp user id."},"dateOfBirth":{"type":"string","description":"Workbook INPUTS!227 / 235 Member — Date of Birth, ISO date. Drives pension phase in the model (no separate phase input)."},"accountBalance":{"type":"number","description":"Workbook INPUTS!229 / 237 Member — Account Balance ($)."},"annualConcessionalContribution":{"type":"number","description":"Workbook INPUTS!230 / 238 Member — Concessional Contribution ($ p.a.)."}},"required":["slot","memberName"]}}}}
```

## The StrategyEntityListResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"StrategyEntityListResponseDto":{"type":"object","properties":{"strategyId":{"type":"string"},"entities":{"type":"array","items":{"$ref":"#/components/schemas/StrategyEntityDto"}}},"required":["strategyId","entities"]},"StrategyEntityDto":{"type":"object","properties":{"id":{"type":"string","description":"Entity id — use as {entityId} on GET/PUT/DELETE /v1/entities/{entityId}."},"strategyId":{"type":"string","description":"Strategy the entity belongs to (what ?strategyId= resolved to)."},"entityName":{"type":"string"},"entityType":{"type":"string","enum":["company","trust","smsf"]},"entityState":{"type":"string"},"entityActive":{"type":"boolean","default":true},"annualComplianceCost":{"type":"number"},"dateEntityAdded":{"type":"string","description":"Workbook INPUTS!198 Date Entity Added (base date), ISO date."},"linkedToUser1":{"type":"boolean","description":"Workbook INPUTS!201 Linked to User 1 (switch)."},"linkedToUser2":{"type":"boolean","description":"Workbook INPUTS!202 Linked to User 2 (switch)."},"trustee":{"nullable":true,"description":"Workbook INPUTS!223 Trustee / Trustee Entity (trust or SMSF). Same nesting as an owners[] row; null if none.","allOf":[{"$ref":"#/components/schemas/StrategyEntityTrusteeDto"}]},"owners":{"type":"array","items":{"$ref":"#/components/schemas/StrategyEntityOwnerDto"}},"company":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/StrategyEntityCompanyConfigDto"}]},"trust":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/StrategyEntityTrustConfigDto"}]},"smsf":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/StrategyEntitySmsfConfigDto"}]}},"required":["id","strategyId","entityName","entityType","owners"]},"StrategyEntityTrusteeDto":{"type":"object","properties":{"trusteeName":{"type":"string","description":"Workbook INPUTS!223 Trustee / Trustee Entity — individual trustee(s) or the corporate trustee, free text."},"userId":{"type":"string","nullable":true,"description":"Linked ID — individual trustee with a ScaleApp account. At most one of userId / entityId."},"entityId":{"type":"string","nullable":true,"description":"Linked ID — corporate trustee that is another entity on this strategy. At most one of userId / entityId."}},"required":["trusteeName"]},"StrategyEntityOwnerDto":{"type":"object","properties":{"slot":{"type":"number"},"ownerName":{"type":"string","description":"Workbook INPUTS!243–247 Owner 1–5. A person or another entity (e.g. a corporate trustee); free text."},"userId":{"type":"string","description":"Workbook INPUTS!262–266 Linked ID — set when the owner has a ScaleApp account. At most one of userId / entityId."},"entityId":{"type":"string","description":"Workbook INPUTS!262–266 Linked ID — set when the owner is another entity on this strategy. At most one of userId / entityId."},"ownershipPercent":{"type":"number","description":"Percent ownership, 0-100."},"relation":{"type":"string"}},"required":["slot","ownerName"]},"StrategyEntityCompanyConfigDto":{"type":"object","properties":{"openingFrankingBalance":{"type":"number"},"dividendFrankingRate":{"type":"number"},"openingRetainedEarnings":{"type":"number"}}},"StrategyEntityTrustConfigDto":{"type":"object","properties":{"trustType":{"type":"string"},"openingCarriedForwardLosses":{"type":"number"},"cashDistribution":{"description":"Workbook INPUTS!212–217 DISCRETIONARY TRUST CASH DISTRIBUTION INPUTS — only when trustType = discretionary. Percent to each owner slot 1–5; sums to 100.","allOf":[{"$ref":"#/components/schemas/StrategyEntityTrustCashDistributionDto"}]},"cgtStreamingTarget":{"type":"string","description":"Workbook INPUTS!219 CGT Streaming Target (list)."},"hasDesignatedBeneficiaryNswLandTax":{"type":"boolean","description":"Workbook INPUTS!220 Has Designated Beneficiary (NSW land tax) (switch)."},"foreignBeneficiaryExcluded":{"type":"boolean","description":"Workbook INPUTS!221 Foreign Beneficiary excluded (switch)."},"nonPropertyIncome":{"type":"number","description":"Workbook INPUTS!222 Non-Property Income ($ p.a.)."}}},"StrategyEntityTrustCashDistributionDto":{"type":"object","properties":{"owner1Percent":{"type":"number","description":"Workbook INPUTS!213 Distribution % to owner 1 (owners[].slot = 1), 0–100."},"owner2Percent":{"type":"number","description":"Workbook INPUTS!214 Distribution % to owner 2 (owners[].slot = 2), 0–100."},"owner3Percent":{"type":"number","description":"Workbook INPUTS!215 Distribution % to owner 3 (owners[].slot = 3), 0–100."},"owner4Percent":{"type":"number","description":"Workbook INPUTS!216 Distribution % to owner 4 (owners[].slot = 4), 0–100."},"owner5Percent":{"type":"number","description":"Workbook INPUTS!217 Distribution % to owner 5 (owners[].slot = 5), 0–100."}}},"StrategyEntitySmsfConfigDto":{"type":"object","properties":{"openingFundBalance":{"type":"number","description":"Workbook INPUTS!225 Opening Fund Balance ($)."},"members":{"description":"Workbook INPUTS!224–240 — Member 1 / Member 2, one row per member (slot 1–2).","type":"array","items":{"$ref":"#/components/schemas/StrategyEntitySmsfMemberDto"}}}},"StrategyEntitySmsfMemberDto":{"type":"object","properties":{"slot":{"type":"number","description":"Workbook INPUTS!224 (Member 1) / INPUTS!233 (Member 2)."},"memberName":{"type":"string","description":"Member name, free text (display; mirrors owners[].ownerName)."},"userId":{"type":"string","description":"Workbook INPUTS!226 / 234 Member — User Reference. The member's ScaleApp user id."},"dateOfBirth":{"type":"string","description":"Workbook INPUTS!227 / 235 Member — Date of Birth, ISO date. Drives pension phase in the model (no separate phase input)."},"accountBalance":{"type":"number","description":"Workbook INPUTS!229 / 237 Member — Account Balance ($)."},"annualConcessionalContribution":{"type":"number","description":"Workbook INPUTS!230 / 238 Member — Concessional Contribution ($ p.a.)."}},"required":["slot","memberName"]}}}}
```

## The UpsertStrategyEntityDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"UpsertStrategyEntityDto":{"type":"object","properties":{"entityName":{"type":"string"},"entityType":{"type":"string","enum":["company","trust","smsf"]},"entityState":{"type":"string"},"entityActive":{"type":"boolean","default":true},"annualComplianceCost":{"type":"number"},"dateEntityAdded":{"type":"string","description":"Workbook INPUTS!198 Date Entity Added (base date), ISO date."},"linkedToUser1":{"type":"boolean","description":"Workbook INPUTS!201 Linked to User 1 (switch)."},"linkedToUser2":{"type":"boolean","description":"Workbook INPUTS!202 Linked to User 2 (switch)."},"trustee":{"nullable":true,"description":"Workbook INPUTS!223 Trustee / Trustee Entity (trust or SMSF). Same nesting as an owners[] row; null if none.","allOf":[{"$ref":"#/components/schemas/StrategyEntityTrusteeDto"}]},"owners":{"type":"array","items":{"$ref":"#/components/schemas/StrategyEntityOwnerDto"}},"company":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/StrategyEntityCompanyConfigDto"}]},"trust":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/StrategyEntityTrustConfigDto"}]},"smsf":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/StrategyEntitySmsfConfigDto"}]}},"required":["entityName","entityType","owners"]},"StrategyEntityTrusteeDto":{"type":"object","properties":{"trusteeName":{"type":"string","description":"Workbook INPUTS!223 Trustee / Trustee Entity — individual trustee(s) or the corporate trustee, free text."},"userId":{"type":"string","nullable":true,"description":"Linked ID — individual trustee with a ScaleApp account. At most one of userId / entityId."},"entityId":{"type":"string","nullable":true,"description":"Linked ID — corporate trustee that is another entity on this strategy. At most one of userId / entityId."}},"required":["trusteeName"]},"StrategyEntityOwnerDto":{"type":"object","properties":{"slot":{"type":"number"},"ownerName":{"type":"string","description":"Workbook INPUTS!243–247 Owner 1–5. A person or another entity (e.g. a corporate trustee); free text."},"userId":{"type":"string","description":"Workbook INPUTS!262–266 Linked ID — set when the owner has a ScaleApp account. At most one of userId / entityId."},"entityId":{"type":"string","description":"Workbook INPUTS!262–266 Linked ID — set when the owner is another entity on this strategy. At most one of userId / entityId."},"ownershipPercent":{"type":"number","description":"Percent ownership, 0-100."},"relation":{"type":"string"}},"required":["slot","ownerName"]},"StrategyEntityCompanyConfigDto":{"type":"object","properties":{"openingFrankingBalance":{"type":"number"},"dividendFrankingRate":{"type":"number"},"openingRetainedEarnings":{"type":"number"}}},"StrategyEntityTrustConfigDto":{"type":"object","properties":{"trustType":{"type":"string"},"openingCarriedForwardLosses":{"type":"number"},"cashDistribution":{"description":"Workbook INPUTS!212–217 DISCRETIONARY TRUST CASH DISTRIBUTION INPUTS — only when trustType = discretionary. Percent to each owner slot 1–5; sums to 100.","allOf":[{"$ref":"#/components/schemas/StrategyEntityTrustCashDistributionDto"}]},"cgtStreamingTarget":{"type":"string","description":"Workbook INPUTS!219 CGT Streaming Target (list)."},"hasDesignatedBeneficiaryNswLandTax":{"type":"boolean","description":"Workbook INPUTS!220 Has Designated Beneficiary (NSW land tax) (switch)."},"foreignBeneficiaryExcluded":{"type":"boolean","description":"Workbook INPUTS!221 Foreign Beneficiary excluded (switch)."},"nonPropertyIncome":{"type":"number","description":"Workbook INPUTS!222 Non-Property Income ($ p.a.)."}}},"StrategyEntityTrustCashDistributionDto":{"type":"object","properties":{"owner1Percent":{"type":"number","description":"Workbook INPUTS!213 Distribution % to owner 1 (owners[].slot = 1), 0–100."},"owner2Percent":{"type":"number","description":"Workbook INPUTS!214 Distribution % to owner 2 (owners[].slot = 2), 0–100."},"owner3Percent":{"type":"number","description":"Workbook INPUTS!215 Distribution % to owner 3 (owners[].slot = 3), 0–100."},"owner4Percent":{"type":"number","description":"Workbook INPUTS!216 Distribution % to owner 4 (owners[].slot = 4), 0–100."},"owner5Percent":{"type":"number","description":"Workbook INPUTS!217 Distribution % to owner 5 (owners[].slot = 5), 0–100."}}},"StrategyEntitySmsfConfigDto":{"type":"object","properties":{"openingFundBalance":{"type":"number","description":"Workbook INPUTS!225 Opening Fund Balance ($)."},"members":{"description":"Workbook INPUTS!224–240 — Member 1 / Member 2, one row per member (slot 1–2).","type":"array","items":{"$ref":"#/components/schemas/StrategyEntitySmsfMemberDto"}}}},"StrategyEntitySmsfMemberDto":{"type":"object","properties":{"slot":{"type":"number","description":"Workbook INPUTS!224 (Member 1) / INPUTS!233 (Member 2)."},"memberName":{"type":"string","description":"Member name, free text (display; mirrors owners[].ownerName)."},"userId":{"type":"string","description":"Workbook INPUTS!226 / 234 Member — User Reference. The member's ScaleApp user id."},"dateOfBirth":{"type":"string","description":"Workbook INPUTS!227 / 235 Member — Date of Birth, ISO date. Drives pension phase in the model (no separate phase input)."},"accountBalance":{"type":"number","description":"Workbook INPUTS!229 / 237 Member — Account Balance ($)."},"annualConcessionalContribution":{"type":"number","description":"Workbook INPUTS!230 / 238 Member — Concessional Contribution ($ p.a.)."}},"required":["slot","memberName"]}}}}
```

## The TrustDistributableDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"TrustDistributableDto":{"type":"object","properties":{"entityId":{"type":"string","description":"The Trust entity read."},"financialYearEnd":{"type":"string","format":"date","description":"30 June of the financial year containing the requested `date` (YYYY-06-30) — the PERSONAL column read."},"distributableIncome":{"type":"number","nullable":true,"description":"PERSONAL!2198 — post-trustee-tax distributable income at that June (= 1327 for a Unit trust or before the 2195 trustee-tax flag). Real for workbook slot 3 (`PERSONAL_M2198` is exported in sheet-all.ts); `null` for slots 4–10 until `personalTrustAdjustedDistributable(section)` is exported (swap point). Also `null` when the strategy's model cannot be built."}},"required":["entityId","financialYearEnd","distributableIncome"]}}}}
```

## The EntityCashBalanceDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"EntityCashBalanceDto":{"type":"object","properties":{"entityId":{"type":"string","description":"The entity read."},"entityName":{"type":"string","description":"The entity's name (INPUTS!199)."},"date":{"type":"string","format":"date","description":"First day of the month resolved on the PERSONAL axis (YYYY-MM-01) — the period column read."},"openingBalance":{"type":"number","nullable":true,"description":"PERSONAL!1311 Opening balance (the prior month's 1320; seeded from INPUTS!208 / 225 in the start month). Real for the first related entity (workbook slot 3, `PERSONAL_M1311` exported in sheet-all.ts); `null` for slots 4–10 until `personalEntityCash(section)` is exported (swap point), and `null` when the strategy's model cannot be built. Does not yet include stored contributions / withdrawals (M1312 / M1313 are not ported)."},"contributions":{"type":"number","description":"PERSONAL!1312 + Cash contributions / injections — the sum of this entity's stored CONTRIBUTION events in the month (the sheet's `SUMIF($C$1871:$C$1926, slot, M$1871:M$1926)`; the `+ 1336` auto-contribution for a cashflow shortfall is not included). Stored sum, not a model read."},"withdrawals":{"type":"number","description":"PERSONAL!1313 − Cash withdrawals — the sum of this entity's stored WITHDRAWAL events in the month (the sheet's `SUMIF($C$1929:$C$1984, slot, M$1929:M$1984)`). Stored sum, not a model read."},"closingBalance":{"type":"number","nullable":true,"description":"PERSONAL!1320 Closing balance. Real for the first related entity (workbook slot 3, `PERSONAL_M1320`); `null` for slots 4–10 until `personalEntityCash(section)` is exported (swap point), and `null` when the model cannot be built. Does not yet include stored contributions / withdrawals (M1312 / M1313 are not ported)."}},"required":["entityId","entityName","date","openingBalance","contributions","withdrawals","closingBalance"]}}}}
```

## The EntitiesPropertyOperatingCashflowDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"EntitiesPropertyOperatingCashflowDto":{"type":"object","properties":{"rentalIncome":{"type":"number","description":"DASHBOARD!H362 Rental Income","nullable":true},"operatingExpenses":{"type":"number","description":"DASHBOARD!H363 Operating Expenses","nullable":true},"netOperatingIncome":{"type":"number","description":"DASHBOARD!H364 Net Operating Income (NOI)","nullable":true},"principalRepayments":{"type":"number","description":"DASHBOARD!H365 Principal Repayments","nullable":true},"interestAndFinancingFees":{"type":"number","description":"DASHBOARD!H366 Interest & Financing Fees","nullable":true},"operatingProfit":{"type":"number","description":"DASHBOARD!H367 Operating Profit","nullable":true}},"required":["rentalIncome","operatingExpenses","netOperatingIncome","principalRepayments","interestAndFinancingFees","operatingProfit"]}}}}
```

## The EntitiesPropertyTaxableIncomeDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"EntitiesPropertyTaxableIncomeDto":{"type":"object","properties":{"grossRentalIncome":{"type":"number","description":"DASHBOARD!H371 Gross Rental Income","nullable":true},"capitalGainLossAtSale":{"type":"number","description":"DASHBOARD!H372 Capital Gain/Loss at Sale — null until the model's entity input adapter lands (cell throws in sheet-all.ts today).","nullable":true},"grossIncome":{"type":"number","description":"DASHBOARD!H373 Gross Income — null until the model's entity input adapter lands (cell throws in sheet-all.ts today).","nullable":true},"operatingExpenses":{"type":"number","description":"DASHBOARD!H374 Operating Expenses","nullable":true},"landTax":{"type":"number","description":"DASHBOARD!H375 Land Tax","nullable":true},"deductibleInterestAndFinancingFees":{"type":"number","description":"DASHBOARD!H376 Deductible Interest & Financing Fees","nullable":true},"ppeDepreciation":{"type":"number","description":"DASHBOARD!H377 PP&E Depreciation","nullable":true},"capitalWorksDepreciationClaimed":{"type":"number","description":"DASHBOARD!H378 Capital Works Depreciation Claimed","nullable":true},"taxOffsetFromProperty":{"type":"number","description":"DASHBOARD!H379 Tax Offset from Property","nullable":true},"taxableIncome":{"type":"number","description":"DASHBOARD!H380 Taxable Income — null until the model's entity input adapter lands (cell throws in sheet-all.ts today).","nullable":true},"taxPayable":{"type":"number","description":"DASHBOARD!H381 Tax Payable (Financial Year)","nullable":true}},"required":["grossRentalIncome","capitalGainLossAtSale","grossIncome","operatingExpenses","landTax","deductibleInterestAndFinancingFees","ppeDepreciation","capitalWorksDepreciationClaimed","taxOffsetFromProperty","taxableIncome","taxPayable"]}}}}
```

## The EntitiesPropertyFundingDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"EntitiesPropertyFundingDto":{"type":"object","properties":{"portfolioValue":{"type":"number","description":"DASHBOARD!H385 Portfolio Value — null until the model's entity input adapter lands (cell throws in sheet-all.ts today).","nullable":true},"debtOutstanding":{"type":"number","description":"DASHBOARD!H386 Debt Outstanding","nullable":true},"equityInHome":{"type":"number","description":"DASHBOARD!H387 Equity in Home — null until the model's entity input adapter lands (cell throws in sheet-all.ts today).","nullable":true},"equityAvailable":{"type":"number","description":"DASHBOARD!H388 Equity Available — null until the model's entity input adapter lands (cell throws in sheet-all.ts today).","nullable":true},"depositAndClosingCosts":{"type":"number","description":"DASHBOARD!H390 Deposit & Closing Costs","nullable":true},"constructionEquity":{"type":"number","description":"DASHBOARD!H391 Construction Equity","nullable":true},"voluntaryLoanRepayments":{"type":"number","description":"DASHBOARD!H392 Voluntary Loan Repayments","nullable":true},"contingentEquity":{"type":"number","description":"DASHBOARD!H393 Contingent Equity","nullable":true},"totalEquityInvested":{"type":"number","description":"DASHBOARD!H394 Total Equity Invested","nullable":true}},"required":["portfolioValue","debtOutstanding","equityInHome","equityAvailable","depositAndClosingCosts","constructionEquity","voluntaryLoanRepayments","contingentEquity","totalEquityInvested"]}}}}
```

## The EntitiesPropertySaleDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"EntitiesPropertySaleDto":{"type":"object","properties":{"salePrice":{"type":"number","description":"DASHBOARD!H397 Sale Price — null until the model's entity input adapter lands (cell throws in sheet-all.ts today).","nullable":true},"debtOutstanding":{"type":"number","description":"DASHBOARD!H398 Debt Outstanding","nullable":true},"sellingCosts":{"type":"number","description":"DASHBOARD!H399 Selling Costs","nullable":true},"capitalGainsTax":{"type":"number","description":"DASHBOARD!H400 Capital Gains Tax — null until the model's entity input adapter lands (cell throws in sheet-all.ts today).","nullable":true},"proceedsFromSale":{"type":"number","description":"DASHBOARD!H401 Proceeds from Sale — null until the model's entity input adapter lands (cell throws in sheet-all.ts today).","nullable":true}},"required":["salePrice","debtOutstanding","sellingCosts","capitalGainsTax","proceedsFromSale"]}}}}
```

## The EntitiesPropertyYearCashflowDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"EntitiesPropertyYearCashflowDto":{"type":"object","properties":{"year":{"type":"string"},"operatingCashflow":{"$ref":"#/components/schemas/EntitiesPropertyOperatingCashflowDto"},"taxableIncome":{"$ref":"#/components/schemas/EntitiesPropertyTaxableIncomeDto"},"funding":{"$ref":"#/components/schemas/EntitiesPropertyFundingDto"},"sale":{"$ref":"#/components/schemas/EntitiesPropertySaleDto"}},"required":["year","operatingCashflow","taxableIncome","funding","sale"]},"EntitiesPropertyOperatingCashflowDto":{"type":"object","properties":{"rentalIncome":{"type":"number","description":"DASHBOARD!H362 Rental Income","nullable":true},"operatingExpenses":{"type":"number","description":"DASHBOARD!H363 Operating Expenses","nullable":true},"netOperatingIncome":{"type":"number","description":"DASHBOARD!H364 Net Operating Income (NOI)","nullable":true},"principalRepayments":{"type":"number","description":"DASHBOARD!H365 Principal Repayments","nullable":true},"interestAndFinancingFees":{"type":"number","description":"DASHBOARD!H366 Interest & Financing Fees","nullable":true},"operatingProfit":{"type":"number","description":"DASHBOARD!H367 Operating Profit","nullable":true}},"required":["rentalIncome","operatingExpenses","netOperatingIncome","principalRepayments","interestAndFinancingFees","operatingProfit"]},"EntitiesPropertyTaxableIncomeDto":{"type":"object","properties":{"grossRentalIncome":{"type":"number","description":"DASHBOARD!H371 Gross Rental Income","nullable":true},"capitalGainLossAtSale":{"type":"number","description":"DASHBOARD!H372 Capital Gain/Loss at Sale — null until the model's entity input adapter lands (cell throws in sheet-all.ts today).","nullable":true},"grossIncome":{"type":"number","description":"DASHBOARD!H373 Gross Income — null until the model's entity input adapter lands (cell throws in sheet-all.ts today).","nullable":true},"operatingExpenses":{"type":"number","description":"DASHBOARD!H374 Operating Expenses","nullable":true},"landTax":{"type":"number","description":"DASHBOARD!H375 Land Tax","nullable":true},"deductibleInterestAndFinancingFees":{"type":"number","description":"DASHBOARD!H376 Deductible Interest & Financing Fees","nullable":true},"ppeDepreciation":{"type":"number","description":"DASHBOARD!H377 PP&E Depreciation","nullable":true},"capitalWorksDepreciationClaimed":{"type":"number","description":"DASHBOARD!H378 Capital Works Depreciation Claimed","nullable":true},"taxOffsetFromProperty":{"type":"number","description":"DASHBOARD!H379 Tax Offset from Property","nullable":true},"taxableIncome":{"type":"number","description":"DASHBOARD!H380 Taxable Income — null until the model's entity input adapter lands (cell throws in sheet-all.ts today).","nullable":true},"taxPayable":{"type":"number","description":"DASHBOARD!H381 Tax Payable (Financial Year)","nullable":true}},"required":["grossRentalIncome","capitalGainLossAtSale","grossIncome","operatingExpenses","landTax","deductibleInterestAndFinancingFees","ppeDepreciation","capitalWorksDepreciationClaimed","taxOffsetFromProperty","taxableIncome","taxPayable"]},"EntitiesPropertyFundingDto":{"type":"object","properties":{"portfolioValue":{"type":"number","description":"DASHBOARD!H385 Portfolio Value — null until the model's entity input adapter lands (cell throws in sheet-all.ts today).","nullable":true},"debtOutstanding":{"type":"number","description":"DASHBOARD!H386 Debt Outstanding","nullable":true},"equityInHome":{"type":"number","description":"DASHBOARD!H387 Equity in Home — null until the model's entity input adapter lands (cell throws in sheet-all.ts today).","nullable":true},"equityAvailable":{"type":"number","description":"DASHBOARD!H388 Equity Available — null until the model's entity input adapter lands (cell throws in sheet-all.ts today).","nullable":true},"depositAndClosingCosts":{"type":"number","description":"DASHBOARD!H390 Deposit & Closing Costs","nullable":true},"constructionEquity":{"type":"number","description":"DASHBOARD!H391 Construction Equity","nullable":true},"voluntaryLoanRepayments":{"type":"number","description":"DASHBOARD!H392 Voluntary Loan Repayments","nullable":true},"contingentEquity":{"type":"number","description":"DASHBOARD!H393 Contingent Equity","nullable":true},"totalEquityInvested":{"type":"number","description":"DASHBOARD!H394 Total Equity Invested","nullable":true}},"required":["portfolioValue","debtOutstanding","equityInHome","equityAvailable","depositAndClosingCosts","constructionEquity","voluntaryLoanRepayments","contingentEquity","totalEquityInvested"]},"EntitiesPropertySaleDto":{"type":"object","properties":{"salePrice":{"type":"number","description":"DASHBOARD!H397 Sale Price — null until the model's entity input adapter lands (cell throws in sheet-all.ts today).","nullable":true},"debtOutstanding":{"type":"number","description":"DASHBOARD!H398 Debt Outstanding","nullable":true},"sellingCosts":{"type":"number","description":"DASHBOARD!H399 Selling Costs","nullable":true},"capitalGainsTax":{"type":"number","description":"DASHBOARD!H400 Capital Gains Tax — null until the model's entity input adapter lands (cell throws in sheet-all.ts today).","nullable":true},"proceedsFromSale":{"type":"number","description":"DASHBOARD!H401 Proceeds from Sale — null until the model's entity input adapter lands (cell throws in sheet-all.ts today).","nullable":true}},"required":["salePrice","debtOutstanding","sellingCosts","capitalGainsTax","proceedsFromSale"]}}}}
```

## The EntitiesPropertyCashflowResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"EntitiesPropertyCashflowResponseDto":{"type":"object","properties":{"years":{"description":"One row per financial year, same years as /v1/personal-cashflow. Workbook DASHBOARD!361–401 \"ENTITIES CASHFLOW SUMMARY\": strategy-wide aggregate across entity-owned properties.","type":"array","items":{"$ref":"#/components/schemas/EntitiesPropertyYearCashflowDto"}}},"required":["years"]},"EntitiesPropertyYearCashflowDto":{"type":"object","properties":{"year":{"type":"string"},"operatingCashflow":{"$ref":"#/components/schemas/EntitiesPropertyOperatingCashflowDto"},"taxableIncome":{"$ref":"#/components/schemas/EntitiesPropertyTaxableIncomeDto"},"funding":{"$ref":"#/components/schemas/EntitiesPropertyFundingDto"},"sale":{"$ref":"#/components/schemas/EntitiesPropertySaleDto"}},"required":["year","operatingCashflow","taxableIncome","funding","sale"]},"EntitiesPropertyOperatingCashflowDto":{"type":"object","properties":{"rentalIncome":{"type":"number","description":"DASHBOARD!H362 Rental Income","nullable":true},"operatingExpenses":{"type":"number","description":"DASHBOARD!H363 Operating Expenses","nullable":true},"netOperatingIncome":{"type":"number","description":"DASHBOARD!H364 Net Operating Income (NOI)","nullable":true},"principalRepayments":{"type":"number","description":"DASHBOARD!H365 Principal Repayments","nullable":true},"interestAndFinancingFees":{"type":"number","description":"DASHBOARD!H366 Interest & Financing Fees","nullable":true},"operatingProfit":{"type":"number","description":"DASHBOARD!H367 Operating Profit","nullable":true}},"required":["rentalIncome","operatingExpenses","netOperatingIncome","principalRepayments","interestAndFinancingFees","operatingProfit"]},"EntitiesPropertyTaxableIncomeDto":{"type":"object","properties":{"grossRentalIncome":{"type":"number","description":"DASHBOARD!H371 Gross Rental Income","nullable":true},"capitalGainLossAtSale":{"type":"number","description":"DASHBOARD!H372 Capital Gain/Loss at Sale — null until the model's entity input adapter lands (cell throws in sheet-all.ts today).","nullable":true},"grossIncome":{"type":"number","description":"DASHBOARD!H373 Gross Income — null until the model's entity input adapter lands (cell throws in sheet-all.ts today).","nullable":true},"operatingExpenses":{"type":"number","description":"DASHBOARD!H374 Operating Expenses","nullable":true},"landTax":{"type":"number","description":"DASHBOARD!H375 Land Tax","nullable":true},"deductibleInterestAndFinancingFees":{"type":"number","description":"DASHBOARD!H376 Deductible Interest & Financing Fees","nullable":true},"ppeDepreciation":{"type":"number","description":"DASHBOARD!H377 PP&E Depreciation","nullable":true},"capitalWorksDepreciationClaimed":{"type":"number","description":"DASHBOARD!H378 Capital Works Depreciation Claimed","nullable":true},"taxOffsetFromProperty":{"type":"number","description":"DASHBOARD!H379 Tax Offset from Property","nullable":true},"taxableIncome":{"type":"number","description":"DASHBOARD!H380 Taxable Income — null until the model's entity input adapter lands (cell throws in sheet-all.ts today).","nullable":true},"taxPayable":{"type":"number","description":"DASHBOARD!H381 Tax Payable (Financial Year)","nullable":true}},"required":["grossRentalIncome","capitalGainLossAtSale","grossIncome","operatingExpenses","landTax","deductibleInterestAndFinancingFees","ppeDepreciation","capitalWorksDepreciationClaimed","taxOffsetFromProperty","taxableIncome","taxPayable"]},"EntitiesPropertyFundingDto":{"type":"object","properties":{"portfolioValue":{"type":"number","description":"DASHBOARD!H385 Portfolio Value — null until the model's entity input adapter lands (cell throws in sheet-all.ts today).","nullable":true},"debtOutstanding":{"type":"number","description":"DASHBOARD!H386 Debt Outstanding","nullable":true},"equityInHome":{"type":"number","description":"DASHBOARD!H387 Equity in Home — null until the model's entity input adapter lands (cell throws in sheet-all.ts today).","nullable":true},"equityAvailable":{"type":"number","description":"DASHBOARD!H388 Equity Available — null until the model's entity input adapter lands (cell throws in sheet-all.ts today).","nullable":true},"depositAndClosingCosts":{"type":"number","description":"DASHBOARD!H390 Deposit & Closing Costs","nullable":true},"constructionEquity":{"type":"number","description":"DASHBOARD!H391 Construction Equity","nullable":true},"voluntaryLoanRepayments":{"type":"number","description":"DASHBOARD!H392 Voluntary Loan Repayments","nullable":true},"contingentEquity":{"type":"number","description":"DASHBOARD!H393 Contingent Equity","nullable":true},"totalEquityInvested":{"type":"number","description":"DASHBOARD!H394 Total Equity Invested","nullable":true}},"required":["portfolioValue","debtOutstanding","equityInHome","equityAvailable","depositAndClosingCosts","constructionEquity","voluntaryLoanRepayments","contingentEquity","totalEquityInvested"]},"EntitiesPropertySaleDto":{"type":"object","properties":{"salePrice":{"type":"number","description":"DASHBOARD!H397 Sale Price — null until the model's entity input adapter lands (cell throws in sheet-all.ts today).","nullable":true},"debtOutstanding":{"type":"number","description":"DASHBOARD!H398 Debt Outstanding","nullable":true},"sellingCosts":{"type":"number","description":"DASHBOARD!H399 Selling Costs","nullable":true},"capitalGainsTax":{"type":"number","description":"DASHBOARD!H400 Capital Gains Tax — null until the model's entity input adapter lands (cell throws in sheet-all.ts today).","nullable":true},"proceedsFromSale":{"type":"number","description":"DASHBOARD!H401 Proceeds from Sale — null until the model's entity input adapter lands (cell throws in sheet-all.ts today).","nullable":true}},"required":["salePrice","debtOutstanding","sellingCosts","capitalGainsTax","proceedsFromSale"]}}}}
```

## The Fy27BudgetDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"Fy27BudgetDto":{"type":"object","properties":{"applyFy27TaxChanges":{"type":"boolean","description":"Workbook GOV!H273 CGT New Regime Master Switch — true = FY2027 budget tax rules apply to this strategy, false = pre-FY28 rules. Default true (sheet value 1). Stored per strategy; the model reads it once GOV!H273 is wired through the budget formulas."},"strategyId":{"type":"string"}},"required":["applyFy27TaxChanges","strategyId"]}}}}
```

## The Fy27BudgetInputDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"Fy27BudgetInputDto":{"type":"object","properties":{"applyFy27TaxChanges":{"type":"boolean","description":"Workbook GOV!H273 CGT New Regime Master Switch — true = FY2027 budget tax rules apply to this strategy, false = pre-FY28 rules. Default true (sheet value 1). Stored per strategy; the model reads it once GOV!H273 is wired through the budget formulas."}},"required":["applyFy27TaxChanges"]}}}}
```

## The EntityChartValueDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"EntityChartValueDto":{"type":"object","properties":{"value":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!<block row for this entity's slot>. Null = not computable yet (CHARTS sheet not ported). See the series description."},"percentChange":{"type":"number","nullable":true,"description":"Year-on-year % change of `value`, 2 dp. Null for the first point, when a value is null, or when the prior value is 0."},"label":{"type":"string","description":"Entity name (ClientEntity.entityName)."}},"required":["value","percentChange","label"]}}}}
```

## The EntityChartByEntityPointDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"EntityChartByEntityPointDto":{"type":"object","properties":{"x":{"type":"string","description":"1 July of the FY-start year, ISO date-time — same convention as /v1/chart/single-strategy.","format":"date-time"},"entities":{"description":"One item per active entity on the strategy, in slot order. Inactive/empty slots are not emitted.","type":"array","items":{"$ref":"#/components/schemas/EntityChartValueDto"}},"total":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS total row for the block. Null = not computable yet (CHARTS sheet not ported)."}},"required":["x","entities","total"]},"EntityChartValueDto":{"type":"object","properties":{"value":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!<block row for this entity's slot>. Null = not computable yet (CHARTS sheet not ported). See the series description."},"percentChange":{"type":"number","nullable":true,"description":"Year-on-year % change of `value`, 2 dp. Null for the first point, when a value is null, or when the prior value is 0."},"label":{"type":"string","description":"Entity name (ClientEntity.entityName)."}},"required":["value","percentChange","label"]}}}}
```

## The EntityNetIncomeByEntityPointDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"EntityNetIncomeByEntityPointDto":{"type":"object","properties":{"x":{"type":"string","description":"1 July of the FY-start year, ISO date-time — same convention as /v1/chart/single-strategy.","format":"date-time"},"entities":{"description":"One item per active entity on the strategy, in slot order (CHARTS!185:194). No total row in the sheet.","type":"array","items":{"$ref":"#/components/schemas/EntityChartValueDto"}}},"required":["x","entities"]},"EntityChartValueDto":{"type":"object","properties":{"value":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!<block row for this entity's slot>. Null = not computable yet (CHARTS sheet not ported). See the series description."},"percentChange":{"type":"number","nullable":true,"description":"Year-on-year % change of `value`, 2 dp. Null for the first point, when a value is null, or when the prior value is 0."},"label":{"type":"string","description":"Entity name (ClientEntity.entityName)."}},"required":["value","percentChange","label"]}}}}
```

## The WealthAccessibilityPointDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"WealthAccessibilityPointDto":{"type":"object","properties":{"x":{"type":"string","description":"1 July of the FY-start year, ISO date-time — same convention as /v1/chart/single-strategy.","format":"date-time"},"personalCashPosition":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H162. Null = not computable yet (CHARTS sheet not ported)."},"trustNetPosition":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H163. Null = not computable yet (CHARTS sheet not ported)."},"companyNetPosition":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H164. Null = not computable yet (CHARTS sheet not ported)."},"smsfFundBalance":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H165. Null = not computable yet (CHARTS sheet not ported)."},"accessible":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H166. Null = not computable yet (CHARTS sheet not ported)."},"retainedInCompany":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H167. Null = not computable yet (CHARTS sheet not ported). Sheet note: apportionment?"},"lockedInSmsf":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H168. Null = not computable yet (CHARTS sheet not ported)."},"trappedTrustLosses":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H169. Null = not computable yet (CHARTS sheet not ported). Sheet note: apportionment?"}},"required":["x","personalCashPosition","trustNetPosition","companyNetPosition","smsfFundBalance","accessible","retainedInCompany","lockedInSmsf","trappedTrustLosses"]}}}}
```

## The WealthByEntityTypePointDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"WealthByEntityTypePointDto":{"type":"object","properties":{"x":{"type":"string","description":"1 July of the FY-start year, ISO date-time — same convention as /v1/chart/single-strategy.","format":"date-time"},"existingPersonalCashPosition":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H209. Null = not computable yet (CHARTS sheet not ported)."},"existingPortfolioEquity":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H210. Null = not computable yet (CHARTS sheet not ported)."},"trustNetPosition":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H211. Null = not computable yet (CHARTS sheet not ported)."},"companyNetPosition":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H212. Null = not computable yet (CHARTS sheet not ported)."},"smsfFundBalance":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H213. Null = not computable yet (CHARTS sheet not ported)."},"totalWealth":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H214. Null = not computable yet (CHARTS sheet not ported)."}},"required":["x","existingPersonalCashPosition","existingPortfolioEquity","trustNetPosition","companyNetPosition","smsfFundBalance","totalWealth"]}}}}
```

## The TaxCompositionPointDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"TaxCompositionPointDto":{"type":"object","properties":{"x":{"type":"string","description":"1 July of the FY-start year, ISO date-time — same convention as /v1/chart/single-strategy.","format":"date-time"},"personalIncomeTax":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H217. Null = not computable yet (CHARTS sheet not ported)."},"companyTax":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H218. Null = not computable yet (CHARTS sheet not ported)."},"smsfTax":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H219. Null = not computable yet (CHARTS sheet not ported)."},"contributionsTax":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H220. Null = not computable yet (CHARTS sheet not ported)."},"division293Tax":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H221. Null = not computable yet (CHARTS sheet not ported)."},"frankingOffset":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H222. Null = not computable yet (CHARTS sheet not ported)."},"taxAdjustment":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H223. Null = not computable yet (CHARTS sheet not ported)."},"landTax":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H224. Null = not computable yet (CHARTS sheet not ported)."},"capitalGainsTax":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H225. Null = not computable yet (CHARTS sheet not ported)."},"totalTaxBurden":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H226. Null = not computable yet (CHARTS sheet not ported)."}},"required":["x","personalIncomeTax","companyTax","smsfTax","contributionsTax","division293Tax","frankingOffset","taxAdjustment","landTax","capitalGainsTax","totalTaxBurden"]}}}}
```

## The EntityCashflowWaterfallPointDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"EntityCashflowWaterfallPointDto":{"type":"object","properties":{"x":{"type":"string","description":"1 July of the FY-start year, ISO date-time — same convention as /v1/chart/single-strategy.","format":"date-time"},"personalIncome":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H229. Null = not computable yet (CHARTS sheet not ported)."},"rentalIncome":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H230. Null = not computable yet (CHARTS sheet not ported)."},"livingExpensesIncludingPersonalLoans":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H231. Null = not computable yet (CHARTS sheet not ported)."},"loanRepayments":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H232. Null = not computable yet (CHARTS sheet not ported)."},"operatingExpenses":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H233. Null = not computable yet (CHARTS sheet not ported)."},"personalTax":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H234. Null = not computable yet (CHARTS sheet not ported)."},"entitiesTax":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H235. Null = not computable yet (CHARTS sheet not ported)."},"landTax":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H236. Null = not computable yet (CHARTS sheet not ported)."},"smsfContributionsOut":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H237. Null = not computable yet (CHARTS sheet not ported)."},"smsfPensionIn":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H238. Null = not computable yet (CHARTS sheet not ported)."},"trustDistributions":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H239. Null = not computable yet (CHARTS sheet not ported)."},"companyDividends":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H240. Null = not computable yet (CHARTS sheet not ported)."},"netCashflow":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H241. Null = not computable yet (CHARTS sheet not ported)."}},"required":["x","personalIncome","rentalIncome","livingExpensesIncludingPersonalLoans","loanRepayments","operatingExpenses","personalTax","entitiesTax","landTax","smsfContributionsOut","smsfPensionIn","trustDistributions","companyDividends","netCashflow"]}}}}
```

## The IncomeSourcesPointDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"IncomeSourcesPointDto":{"type":"object","properties":{"x":{"type":"string","description":"1 July of the FY-start year, ISO date-time — same convention as /v1/chart/single-strategy.","format":"date-time"},"personalIncome":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H244. Null = not computable yet (CHARTS sheet not ported)."},"rentalIncome":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H245. Null = not computable yet (CHARTS sheet not ported)."},"trustDistributions":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H246. Null = not computable yet (CHARTS sheet not ported)."},"companyDividends":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H247. Null = not computable yet (CHARTS sheet not ported)."},"smsfPension":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H248. Null = not computable yet (CHARTS sheet not ported)."},"salesProceeds":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H249. Null = not computable yet (CHARTS sheet not ported)."},"totalIncome":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H250. Null = not computable yet (CHARTS sheet not ported)."}},"required":["x","personalIncome","rentalIncome","trustDistributions","companyDividends","smsfPension","salesProceeds","totalIncome"]}}}}
```

## The SmsfFundBalanceProjectionPointDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"SmsfFundBalanceProjectionPointDto":{"type":"object","properties":{"x":{"type":"string","description":"1 July of the FY-start year, ISO date-time — same convention as /v1/chart/single-strategy.","format":"date-time"},"contributions":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H253. Null = not computable yet (CHARTS sheet not ported)."},"investmentEarnings":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H254. Null = not computable yet (CHARTS sheet not ported)."},"propertyCashflow":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H255. Null = not computable yet (CHARTS sheet not ported)."},"pensionDrawdowns":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H256. Null = not computable yet (CHARTS sheet not ported)."},"contributionsTax":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H257. Null = not computable yet (CHARTS sheet not ported)."},"closingSmsfFundBalance":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H258. Null = not computable yet (CHARTS sheet not ported)."}},"required":["x","contributions","investmentEarnings","propertyCashflow","pensionDrawdowns","contributionsTax","closingSmsfFundBalance"]}}}}
```

## The WealthAccessibilityRetirementPointDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"WealthAccessibilityRetirementPointDto":{"type":"object","properties":{"x":{"type":"string","description":"1 July of the FY-start year, ISO date-time — same convention as /v1/chart/single-strategy.","format":"date-time"},"accessibleNow":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H261. Null = not computable yet (CHARTS sheet not ported)."},"dividendOnly":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H262. Null = not computable yet (CHARTS sheet not ported)."},"lockedUntilRetirement":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H263. Null = not computable yet (CHARTS sheet not ported)."},"deferredValue":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H264. Null = not computable yet (CHARTS sheet not ported)."},"totalWealth":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H265. Null = not computable yet (CHARTS sheet not ported)."}},"required":["x","accessibleNow","dividendOnly","lockedUntilRetirement","deferredValue","totalWealth"]}}}}
```

## The EntityCashflowSurplusDeficitPointDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"EntityCashflowSurplusDeficitPointDto":{"type":"object","properties":{"x":{"type":"string","description":"1 July of the FY-start year, ISO date-time — same convention as /v1/chart/single-strategy.","format":"date-time"},"personalNetCashflow":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H268. Null = not computable yet (CHARTS sheet not ported)."},"portfolioNetCashflow":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H269. Null = not computable yet (CHARTS sheet not ported)."},"entitiesNetCashflow":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H270. Null = not computable yet (CHARTS sheet not ported)."},"taxAdjustment":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H271. Null = not computable yet (CHARTS sheet not ported)."},"totalNetCashflow":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H272. Null = not computable yet (CHARTS sheet not ported)."}},"required":["x","personalNetCashflow","portfolioNetCashflow","entitiesNetCashflow","taxAdjustment","totalNetCashflow"]}}}}
```

## The RetirementReadinessPointDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"RetirementReadinessPointDto":{"type":"object","properties":{"x":{"type":"string","description":"1 July of the FY-start year, ISO date-time — same convention as /v1/chart/single-strategy.","format":"date-time"},"smsfFundBalance":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H275. Null = not computable yet (CHARTS sheet not ported)."},"transferBalanceCap":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H276. Null = not computable yet (CHARTS sheet not ported)."},"annualPensionCapacity":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H277. Null = not computable yet (CHARTS sheet not ported)."},"preservationAgeReached":{"type":"boolean","nullable":true,"description":"Workbook CHARTS!H278 (flag row). Null = not computable yet (CHARTS sheet not ported)."}},"required":["x","smsfFundBalance","transferBalanceCap","annualPensionCapacity","preservationAgeReached"]}}}}
```

## The StrategyEntityChartsResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"StrategyEntityChartsResponseDto":{"type":"object","properties":{"portfolioValueByEntity":{"description":"CHARTS!136:145 per slot (User1 Personal, User2 Personal, Trust 1, Trust 2 (SMSF), Trust 3, Company1, Company2, spare×3); total = CHARTS!146.","type":"array","items":{"$ref":"#/components/schemas/EntityChartByEntityPointDto"}},"equityByEntity":{"description":"CHARTS!149:158 Entity 1–10; total = CHARTS!159.","type":"array","items":{"$ref":"#/components/schemas/EntityChartByEntityPointDto"}},"landTaxByEntity":{"description":"CHARTS!172:181 Entity 1–10; total = CHARTS!182.","type":"array","items":{"$ref":"#/components/schemas/EntityChartByEntityPointDto"}},"entityNetIncomeByEntity":{"description":"CHARTS!185:194 Entity 1–10.","type":"array","items":{"$ref":"#/components/schemas/EntityNetIncomeByEntityPointDto"}},"wealthAccessibility":{"description":"CHARTS!162:169.","type":"array","items":{"$ref":"#/components/schemas/WealthAccessibilityPointDto"}},"wealthByEntityType":{"description":"CHARTS!209:214.","type":"array","items":{"$ref":"#/components/schemas/WealthByEntityTypePointDto"}},"taxComposition":{"description":"CHARTS!217:226.","type":"array","items":{"$ref":"#/components/schemas/TaxCompositionPointDto"}},"cashflowWaterfall":{"description":"CHARTS!229:241.","type":"array","items":{"$ref":"#/components/schemas/EntityCashflowWaterfallPointDto"}},"incomeSources":{"description":"CHARTS!244:250.","type":"array","items":{"$ref":"#/components/schemas/IncomeSourcesPointDto"}},"smsfFundBalanceProjection":{"description":"CHARTS!253:258.","type":"array","items":{"$ref":"#/components/schemas/SmsfFundBalanceProjectionPointDto"}},"wealthAccessibilityRetirement":{"description":"CHARTS!261:265.","type":"array","items":{"$ref":"#/components/schemas/WealthAccessibilityRetirementPointDto"}},"cashflowSurplusDeficit":{"description":"CHARTS!268:272.","type":"array","items":{"$ref":"#/components/schemas/EntityCashflowSurplusDeficitPointDto"}},"retirementReadiness":{"description":"CHARTS!275:278.","type":"array","items":{"$ref":"#/components/schemas/RetirementReadinessPointDto"}}},"required":["portfolioValueByEntity","equityByEntity","landTaxByEntity","entityNetIncomeByEntity","wealthAccessibility","wealthByEntityType","taxComposition","cashflowWaterfall","incomeSources","smsfFundBalanceProjection","wealthAccessibilityRetirement","cashflowSurplusDeficit","retirementReadiness"]},"EntityChartByEntityPointDto":{"type":"object","properties":{"x":{"type":"string","description":"1 July of the FY-start year, ISO date-time — same convention as /v1/chart/single-strategy.","format":"date-time"},"entities":{"description":"One item per active entity on the strategy, in slot order. Inactive/empty slots are not emitted.","type":"array","items":{"$ref":"#/components/schemas/EntityChartValueDto"}},"total":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS total row for the block. Null = not computable yet (CHARTS sheet not ported)."}},"required":["x","entities","total"]},"EntityChartValueDto":{"type":"object","properties":{"value":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!<block row for this entity's slot>. Null = not computable yet (CHARTS sheet not ported). See the series description."},"percentChange":{"type":"number","nullable":true,"description":"Year-on-year % change of `value`, 2 dp. Null for the first point, when a value is null, or when the prior value is 0."},"label":{"type":"string","description":"Entity name (ClientEntity.entityName)."}},"required":["value","percentChange","label"]},"EntityNetIncomeByEntityPointDto":{"type":"object","properties":{"x":{"type":"string","description":"1 July of the FY-start year, ISO date-time — same convention as /v1/chart/single-strategy.","format":"date-time"},"entities":{"description":"One item per active entity on the strategy, in slot order (CHARTS!185:194). No total row in the sheet.","type":"array","items":{"$ref":"#/components/schemas/EntityChartValueDto"}}},"required":["x","entities"]},"WealthAccessibilityPointDto":{"type":"object","properties":{"x":{"type":"string","description":"1 July of the FY-start year, ISO date-time — same convention as /v1/chart/single-strategy.","format":"date-time"},"personalCashPosition":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H162. Null = not computable yet (CHARTS sheet not ported)."},"trustNetPosition":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H163. Null = not computable yet (CHARTS sheet not ported)."},"companyNetPosition":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H164. Null = not computable yet (CHARTS sheet not ported)."},"smsfFundBalance":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H165. Null = not computable yet (CHARTS sheet not ported)."},"accessible":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H166. Null = not computable yet (CHARTS sheet not ported)."},"retainedInCompany":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H167. Null = not computable yet (CHARTS sheet not ported). Sheet note: apportionment?"},"lockedInSmsf":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H168. Null = not computable yet (CHARTS sheet not ported)."},"trappedTrustLosses":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H169. Null = not computable yet (CHARTS sheet not ported). Sheet note: apportionment?"}},"required":["x","personalCashPosition","trustNetPosition","companyNetPosition","smsfFundBalance","accessible","retainedInCompany","lockedInSmsf","trappedTrustLosses"]},"WealthByEntityTypePointDto":{"type":"object","properties":{"x":{"type":"string","description":"1 July of the FY-start year, ISO date-time — same convention as /v1/chart/single-strategy.","format":"date-time"},"existingPersonalCashPosition":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H209. Null = not computable yet (CHARTS sheet not ported)."},"existingPortfolioEquity":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H210. Null = not computable yet (CHARTS sheet not ported)."},"trustNetPosition":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H211. Null = not computable yet (CHARTS sheet not ported)."},"companyNetPosition":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H212. Null = not computable yet (CHARTS sheet not ported)."},"smsfFundBalance":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H213. Null = not computable yet (CHARTS sheet not ported)."},"totalWealth":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H214. Null = not computable yet (CHARTS sheet not ported)."}},"required":["x","existingPersonalCashPosition","existingPortfolioEquity","trustNetPosition","companyNetPosition","smsfFundBalance","totalWealth"]},"TaxCompositionPointDto":{"type":"object","properties":{"x":{"type":"string","description":"1 July of the FY-start year, ISO date-time — same convention as /v1/chart/single-strategy.","format":"date-time"},"personalIncomeTax":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H217. Null = not computable yet (CHARTS sheet not ported)."},"companyTax":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H218. Null = not computable yet (CHARTS sheet not ported)."},"smsfTax":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H219. Null = not computable yet (CHARTS sheet not ported)."},"contributionsTax":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H220. Null = not computable yet (CHARTS sheet not ported)."},"division293Tax":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H221. Null = not computable yet (CHARTS sheet not ported)."},"frankingOffset":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H222. Null = not computable yet (CHARTS sheet not ported)."},"taxAdjustment":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H223. Null = not computable yet (CHARTS sheet not ported)."},"landTax":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H224. Null = not computable yet (CHARTS sheet not ported)."},"capitalGainsTax":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H225. Null = not computable yet (CHARTS sheet not ported)."},"totalTaxBurden":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H226. Null = not computable yet (CHARTS sheet not ported)."}},"required":["x","personalIncomeTax","companyTax","smsfTax","contributionsTax","division293Tax","frankingOffset","taxAdjustment","landTax","capitalGainsTax","totalTaxBurden"]},"EntityCashflowWaterfallPointDto":{"type":"object","properties":{"x":{"type":"string","description":"1 July of the FY-start year, ISO date-time — same convention as /v1/chart/single-strategy.","format":"date-time"},"personalIncome":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H229. Null = not computable yet (CHARTS sheet not ported)."},"rentalIncome":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H230. Null = not computable yet (CHARTS sheet not ported)."},"livingExpensesIncludingPersonalLoans":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H231. Null = not computable yet (CHARTS sheet not ported)."},"loanRepayments":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H232. Null = not computable yet (CHARTS sheet not ported)."},"operatingExpenses":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H233. Null = not computable yet (CHARTS sheet not ported)."},"personalTax":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H234. Null = not computable yet (CHARTS sheet not ported)."},"entitiesTax":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H235. Null = not computable yet (CHARTS sheet not ported)."},"landTax":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H236. Null = not computable yet (CHARTS sheet not ported)."},"smsfContributionsOut":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H237. Null = not computable yet (CHARTS sheet not ported)."},"smsfPensionIn":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H238. Null = not computable yet (CHARTS sheet not ported)."},"trustDistributions":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H239. Null = not computable yet (CHARTS sheet not ported)."},"companyDividends":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H240. Null = not computable yet (CHARTS sheet not ported)."},"netCashflow":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H241. Null = not computable yet (CHARTS sheet not ported)."}},"required":["x","personalIncome","rentalIncome","livingExpensesIncludingPersonalLoans","loanRepayments","operatingExpenses","personalTax","entitiesTax","landTax","smsfContributionsOut","smsfPensionIn","trustDistributions","companyDividends","netCashflow"]},"IncomeSourcesPointDto":{"type":"object","properties":{"x":{"type":"string","description":"1 July of the FY-start year, ISO date-time — same convention as /v1/chart/single-strategy.","format":"date-time"},"personalIncome":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H244. Null = not computable yet (CHARTS sheet not ported)."},"rentalIncome":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H245. Null = not computable yet (CHARTS sheet not ported)."},"trustDistributions":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H246. Null = not computable yet (CHARTS sheet not ported)."},"companyDividends":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H247. Null = not computable yet (CHARTS sheet not ported)."},"smsfPension":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H248. Null = not computable yet (CHARTS sheet not ported)."},"salesProceeds":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H249. Null = not computable yet (CHARTS sheet not ported)."},"totalIncome":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H250. Null = not computable yet (CHARTS sheet not ported)."}},"required":["x","personalIncome","rentalIncome","trustDistributions","companyDividends","smsfPension","salesProceeds","totalIncome"]},"SmsfFundBalanceProjectionPointDto":{"type":"object","properties":{"x":{"type":"string","description":"1 July of the FY-start year, ISO date-time — same convention as /v1/chart/single-strategy.","format":"date-time"},"contributions":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H253. Null = not computable yet (CHARTS sheet not ported)."},"investmentEarnings":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H254. Null = not computable yet (CHARTS sheet not ported)."},"propertyCashflow":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H255. Null = not computable yet (CHARTS sheet not ported)."},"pensionDrawdowns":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H256. Null = not computable yet (CHARTS sheet not ported)."},"contributionsTax":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H257. Null = not computable yet (CHARTS sheet not ported)."},"closingSmsfFundBalance":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H258. Null = not computable yet (CHARTS sheet not ported)."}},"required":["x","contributions","investmentEarnings","propertyCashflow","pensionDrawdowns","contributionsTax","closingSmsfFundBalance"]},"WealthAccessibilityRetirementPointDto":{"type":"object","properties":{"x":{"type":"string","description":"1 July of the FY-start year, ISO date-time — same convention as /v1/chart/single-strategy.","format":"date-time"},"accessibleNow":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H261. Null = not computable yet (CHARTS sheet not ported)."},"dividendOnly":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H262. Null = not computable yet (CHARTS sheet not ported)."},"lockedUntilRetirement":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H263. Null = not computable yet (CHARTS sheet not ported)."},"deferredValue":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H264. Null = not computable yet (CHARTS sheet not ported)."},"totalWealth":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H265. Null = not computable yet (CHARTS sheet not ported)."}},"required":["x","accessibleNow","dividendOnly","lockedUntilRetirement","deferredValue","totalWealth"]},"EntityCashflowSurplusDeficitPointDto":{"type":"object","properties":{"x":{"type":"string","description":"1 July of the FY-start year, ISO date-time — same convention as /v1/chart/single-strategy.","format":"date-time"},"personalNetCashflow":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H268. Null = not computable yet (CHARTS sheet not ported)."},"portfolioNetCashflow":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H269. Null = not computable yet (CHARTS sheet not ported)."},"entitiesNetCashflow":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H270. Null = not computable yet (CHARTS sheet not ported)."},"taxAdjustment":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H271. Null = not computable yet (CHARTS sheet not ported)."},"totalNetCashflow":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H272. Null = not computable yet (CHARTS sheet not ported)."}},"required":["x","personalNetCashflow","portfolioNetCashflow","entitiesNetCashflow","taxAdjustment","totalNetCashflow"]},"RetirementReadinessPointDto":{"type":"object","properties":{"x":{"type":"string","description":"1 July of the FY-start year, ISO date-time — same convention as /v1/chart/single-strategy.","format":"date-time"},"smsfFundBalance":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H275. Null = not computable yet (CHARTS sheet not ported)."},"transferBalanceCap":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H276. Null = not computable yet (CHARTS sheet not ported)."},"annualPensionCapacity":{"type":"number","nullable":true,"description":"AUD. Workbook CHARTS!H277. Null = not computable yet (CHARTS sheet not ported)."},"preservationAgeReached":{"type":"boolean","nullable":true,"description":"Workbook CHARTS!H278 (flag row). Null = not computable yet (CHARTS sheet not ported)."}},"required":["x","smsfFundBalance","transferBalanceCap","annualPensionCapacity","preservationAgeReached"]}}}}
```

## The TimelineItemEventDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"TimelineItemEventDto":{"type":"object","properties":{"id":{"type":"string","description":"Event identifier"},"type":{"type":"string","description":"Type of event","enum":["GROSS_ANUAL_SALARY","LIVING_EXPENSES","HECS_HELP_LOAN","DEPENDENTS","SIDE_HUSTLE_INCOME","RECURRING_BONUSES","PERSONAL_LOANS","PAYG_TAX","MISC_INVESTMENT_CASHFLOWS"]},"date":{"type":"string","description":"Date when event occurs"},"value":{"type":"number","description":"Value at this event"}},"required":["id","type","date","value"]}}}}
```

## The TimelineItemDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"TimelineItemDto":{"type":"object","properties":{"id":{"type":"string","description":"Item identifier"},"label":{"type":"string","description":"Item label"},"startDate":{"type":"string","description":"Start date of this item"},"endDate":{"type":"string","description":"End date of this item"},"value":{"type":"number","description":"Current/initial value"},"events":{"description":"Array of events affecting this item","type":"array","items":{"$ref":"#/components/schemas/TimelineItemEventDto"}}},"required":["id","label","startDate","endDate","value","events"]},"TimelineItemEventDto":{"type":"object","properties":{"id":{"type":"string","description":"Event identifier"},"type":{"type":"string","description":"Type of event","enum":["GROSS_ANUAL_SALARY","LIVING_EXPENSES","HECS_HELP_LOAN","DEPENDENTS","SIDE_HUSTLE_INCOME","RECURRING_BONUSES","PERSONAL_LOANS","PAYG_TAX","MISC_INVESTMENT_CASHFLOWS"]},"date":{"type":"string","description":"Date when event occurs"},"value":{"type":"number","description":"Value at this event"}},"required":["id","type","date","value"]}}}}
```

## The PersonalEventDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PersonalEventDto":{"type":"object","properties":{"type":{"type":"string","description":"Type of personal event","enum":["capital_growth","personal_expense","personal_loan","repayment","capital_transaction","reportable_fringe_benefit","company_dividend","trust_distribution","entity_cash_flow","salary_sacrifice","personal_deduction","GROSS_ANUAL_SALARY","LIVING_EXPENSES","HECS_HELP_LOAN","DEPENDENTS","SIDE_HUSTLE_INCOME","RECURRING_BONUSES","ONE_OFF_BONUSES","PERSONAL_LOANS","PAYG_TAX"]},"date":{"type":"string","description":"Date when event occurs","format":"date-time"},"amount":{"type":"number","description":"Amount associated with the event"},"name":{"type":"string","description":"Event name/description"},"frequency":{"type":"string","description":"Frequency of event occurrence"}},"required":["type","date","amount","name","frequency"]}}}}
```

## The PersonalTimelineResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PersonalTimelineResponseDto":{"type":"object","properties":{"id":{"type":"string","description":"User identifier"},"label":{"type":"string","description":"User name/label"},"startDate":{"type":"string","description":"Timeline start date"},"endDate":{"type":"string","description":"Timeline end date"},"events":{"description":"Array of timeline items (income, expenses, etc.)","type":"array","items":{"$ref":"#/components/schemas/TimelineItemDto"}},"personalEvents":{"description":"Array of personal financial events","type":"array","items":{"$ref":"#/components/schemas/PersonalEventDto"}}},"required":["id","label","startDate","endDate","events","personalEvents"]},"TimelineItemDto":{"type":"object","properties":{"id":{"type":"string","description":"Item identifier"},"label":{"type":"string","description":"Item label"},"startDate":{"type":"string","description":"Start date of this item"},"endDate":{"type":"string","description":"End date of this item"},"value":{"type":"number","description":"Current/initial value"},"events":{"description":"Array of events affecting this item","type":"array","items":{"$ref":"#/components/schemas/TimelineItemEventDto"}}},"required":["id","label","startDate","endDate","value","events"]},"TimelineItemEventDto":{"type":"object","properties":{"id":{"type":"string","description":"Event identifier"},"type":{"type":"string","description":"Type of event","enum":["GROSS_ANUAL_SALARY","LIVING_EXPENSES","HECS_HELP_LOAN","DEPENDENTS","SIDE_HUSTLE_INCOME","RECURRING_BONUSES","PERSONAL_LOANS","PAYG_TAX","MISC_INVESTMENT_CASHFLOWS"]},"date":{"type":"string","description":"Date when event occurs"},"value":{"type":"number","description":"Value at this event"}},"required":["id","type","date","value"]},"PersonalEventDto":{"type":"object","properties":{"type":{"type":"string","description":"Type of personal event","enum":["capital_growth","personal_expense","personal_loan","repayment","capital_transaction","reportable_fringe_benefit","company_dividend","trust_distribution","entity_cash_flow","salary_sacrifice","personal_deduction","GROSS_ANUAL_SALARY","LIVING_EXPENSES","HECS_HELP_LOAN","DEPENDENTS","SIDE_HUSTLE_INCOME","RECURRING_BONUSES","ONE_OFF_BONUSES","PERSONAL_LOANS","PAYG_TAX"]},"date":{"type":"string","description":"Date when event occurs","format":"date-time"},"amount":{"type":"number","description":"Amount associated with the event"},"name":{"type":"string","description":"Event name/description"},"frequency":{"type":"string","description":"Frequency of event occurrence"}},"required":["type","date","amount","name","frequency"]}}}}
```

## The PropertyTimelineResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PropertyTimelineResponseDto":{"type":"object","properties":{"id":{"type":"string","description":"Property identifier"},"label":{"type":"string","description":"Property label/address"},"startDate":{"type":"string","description":"Timeline start date"},"endDate":{"type":"string","description":"Timeline end date"},"events":{"description":"Array of property events (rental income, expenses, etc.)","type":"array","items":{"$ref":"#/components/schemas/TimelineItemDto"}}},"required":["id","label","startDate","endDate","events"]},"TimelineItemDto":{"type":"object","properties":{"id":{"type":"string","description":"Item identifier"},"label":{"type":"string","description":"Item label"},"startDate":{"type":"string","description":"Start date of this item"},"endDate":{"type":"string","description":"End date of this item"},"value":{"type":"number","description":"Current/initial value"},"events":{"description":"Array of events affecting this item","type":"array","items":{"$ref":"#/components/schemas/TimelineItemEventDto"}}},"required":["id","label","startDate","endDate","value","events"]},"TimelineItemEventDto":{"type":"object","properties":{"id":{"type":"string","description":"Event identifier"},"type":{"type":"string","description":"Type of event","enum":["GROSS_ANUAL_SALARY","LIVING_EXPENSES","HECS_HELP_LOAN","DEPENDENTS","SIDE_HUSTLE_INCOME","RECURRING_BONUSES","PERSONAL_LOANS","PAYG_TAX","MISC_INVESTMENT_CASHFLOWS"]},"date":{"type":"string","description":"Date when event occurs"},"value":{"type":"number","description":"Value at this event"}},"required":["id","type","date","value"]}}}}
```

## The PersonalIncomeDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PersonalIncomeDto":{"type":"object","properties":{"date":{"format":"date-time","type":"string"},"endDate":{"format":"date-time","type":"string"},"amount":{"type":"number","description":"The amount of income"},"name":{"type":"string","description":"The name of the income source"},"frequency":{"type":"string","description":"The frequency of the income","enum":["WEEKLY","MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUAL","ANNUAL","ONE_OFF"]}},"required":["date","endDate","amount","name","frequency"]}}}}
```

## The UpdatePersonalLoanDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"UpdatePersonalLoanDto":{"type":"object","properties":{"loanName":{"type":"string","description":"The name of the loan"},"loanStartDate":{"type":"string","description":"The start date of the loan"},"termInYears":{"type":"number","description":"The term of the loan in years"},"initialAmount":{"type":"number","description":"The initial amount of the loan"},"interestRate":{"type":"number","description":"The interest rate of the loan"},"repaymentAmount":{"type":"number","description":"The repayment amount for the loan"},"frequency":{"type":"string","description":"The frequency of the loan repayments","enum":["MONTHLY","FORTNIGHTLY","WEEKLY","WEEKS_PER_FORTNIGHT"]},"balloonPayment":{"type":"number","description":"The balloon payment amount at the end of the loan term"},"type":{"type":"string","enum":["PERSONAL","CAR","BUSINESS","ASSET_FINANCE"],"description":"PERSONAL | CAR | BUSINESS | ASSET_FINANCE. BUSINESS and ASSET_FINANCE added for Entities & Commercial (the two ported loan modals); Postgres enum extended by migration 1790000000002."},"isExistingLoan":{"type":"boolean","description":"Whether the loan is new (false), existing (true), or left unspecified (null).","nullable":true}}}}}}
```

## The RepaymentDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"RepaymentDto":{"type":"object","properties":{"loanId":{"type":"string","description":"The UUID of the loan associated with the repayment"},"repaymentDate":{"type":"string","description":"The date of the repayment"},"repaymentAmount":{"type":"number","description":"The amount of the repayment"}},"required":["loanId","repaymentDate","repaymentAmount"]}}}}
```

## The UpdateRepaymentDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"UpdateRepaymentDto":{"type":"object","properties":{"loanId":{"type":"string","description":"The UUID of the loan associated with the repayment"},"repaymentDate":{"type":"string","description":"The date of the repayment"},"repaymentAmount":{"type":"number","description":"The amount of the repayment"}}}}}}
```

## The TimelinePropertySummaryDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"TimelinePropertySummaryDto":{"type":"object","properties":{"occupancyRate":{"type":"number","description":"Stored property occupancy fraction (0–1), null when unavailable. Not a preview default.","nullable":true},"propertyValue":{"type":"number","description":"Property value"},"debt":{"type":"number","description":"Debt"},"equity":{"type":"number","description":"Equity"},"debtRepayments":{"type":"number","description":"Debt repayments"},"grossYield":{"type":"number","description":"Gross yield"},"capitalGrowth":{"type":"number","description":"Capital growth"}},"required":["occupancyRate","propertyValue","debt","equity","debtRepayments","grossYield","capitalGrowth"]}}}}
```

## The TimelinePersonalSummaryDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"TimelinePersonalSummaryDto":{"type":"object","properties":{"cashSavings":{"type":"number","description":"Cash savings"},"portfolioValue":{"type":"number","description":"Portfolio value"},"debt":{"type":"number","description":"Debt"},"equity":{"type":"number","description":"Equity"}},"required":["cashSavings","portfolioValue","debt","equity"]}}}}
```

## The ReportableFringeBenefitDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ReportableFringeBenefitDto":{"type":"object","properties":{"date":{"type":"string","format":"date","description":"The month the value applies to, YYYY-MM-DD (any day in the month). Lands in the PERSONAL period column whose M$4..M$5 bounds contain it."},"amount":{"type":"number","description":"Reportable fringe benefits for that month, $ (≥ 0). Workbook PERSONAL!2178 (User 1) / 2186 (User 2) \"Reportable Fringe Benefits\"; summed into 2182 / 2190 \"Total HECS Repayment Income\". Which row: the person the event belongs to — `?userId=` the client for User 1, the partner for User 2, like every other personal event."}},"required":["date","amount"]}}}}
```

## The ReportableFringeBenefitResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ReportableFringeBenefitResponseDto":{"type":"object","properties":{"date":{"type":"string","format":"date","description":"The month the value applies to, YYYY-MM-DD (any day in the month). Lands in the PERSONAL period column whose M$4..M$5 bounds contain it."},"amount":{"type":"number","description":"Reportable fringe benefits for that month, $ (≥ 0). Workbook PERSONAL!2178 (User 1) / 2186 (User 2) \"Reportable Fringe Benefits\"; summed into 2182 / 2190 \"Total HECS Repayment Income\". Which row: the person the event belongs to — `?userId=` the client for User 1, the partner for User 2, like every other personal event."},"id":{"type":"string"},"strategyId":{"type":"string","description":"The control centre / strategy the event belongs to."},"userId":{"type":"string","description":"The person the event belongs to (User 1 = the client, User 2 = the partner). Decides PERSONAL!2178 vs 2186."},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["date","amount","id","strategyId","userId","createdAt","updatedAt"]}}}}
```

## The UpdateReportableFringeBenefitDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"UpdateReportableFringeBenefitDto":{"type":"object","properties":{"date":{"type":"string","format":"date","description":"The month the value applies to, YYYY-MM-DD (any day in the month). Lands in the PERSONAL period column whose M$4..M$5 bounds contain it."},"amount":{"type":"number","description":"Reportable fringe benefits for that month, $ (≥ 0). Workbook PERSONAL!2178 (User 1) / 2186 (User 2) \"Reportable Fringe Benefits\"; summed into 2182 / 2190 \"Total HECS Repayment Income\". Which row: the person the event belongs to — `?userId=` the client for User 1, the partner for User 2, like every other personal event."}}}}}}
```

## The CompanyDividendDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CompanyDividendDto":{"type":"object","properties":{"entityId":{"type":"string","description":"The Company entity (from `/v1/entities`) claiming the dividend. Must be in the request's strategy (else 404) and `entityType = Company` (else 400)."},"date":{"type":"string","format":"date","description":"The month the dividend is claimed in, YYYY-MM-DD — the PERSONAL column whose M$4..M$5 bounds contain it. Any day in the month works; stored as given."},"owner1Amount":{"type":"number","default":0,"minimum":0,"description":"Dividend $ claimed by owner slot 1 (`/v1/entities` `owners[0]`, INPUTS!243) in the month. Workbook PERSONAL!1814 for the first related entity (workbook slot 3); +7 rows per further entity slot. Port: `personalCompanyClaimedDividend(section, beneficiary = 0)`. 0 / omitted = nothing to this owner."},"owner2Amount":{"type":"number","default":0,"minimum":0,"description":"Dividend $ claimed by owner slot 2 (`/v1/entities` `owners[1]`, INPUTS!244) in the month. Workbook PERSONAL!1815 for the first related entity (workbook slot 3); +7 rows per further entity slot. Port: `personalCompanyClaimedDividend(section, beneficiary = 1)`. 0 / omitted = nothing to this owner."},"owner3Amount":{"type":"number","default":0,"minimum":0,"description":"Dividend $ claimed by owner slot 3 (`/v1/entities` `owners[2]`, INPUTS!245) in the month. Workbook PERSONAL!1816 for the first related entity (workbook slot 3); +7 rows per further entity slot. Port: `personalCompanyClaimedDividend(section, beneficiary = 2)`. 0 / omitted = nothing to this owner."},"owner4Amount":{"type":"number","default":0,"minimum":0,"description":"Dividend $ claimed by owner slot 4 (`/v1/entities` `owners[3]`, INPUTS!246) in the month. Workbook PERSONAL!1817 for the first related entity (workbook slot 3); +7 rows per further entity slot. Port: `personalCompanyClaimedDividend(section, beneficiary = 3)`. 0 / omitted = nothing to this owner."},"owner5Amount":{"type":"number","default":0,"minimum":0,"description":"Dividend $ claimed by owner slot 5 (`/v1/entities` `owners[4]`, INPUTS!247) in the month. Workbook PERSONAL!1818 for the first related entity (workbook slot 3); +7 rows per further entity slot. Port: `personalCompanyClaimedDividend(section, beneficiary = 4)`. 0 / omitted = nothing to this owner."}},"required":["entityId","date"]}}}}
```

## The CompanyDividendResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CompanyDividendResponseDto":{"type":"object","properties":{"id":{"type":"string"},"strategyId":{"type":"string","description":"The control centre / strategy the event belongs to."},"entityId":{"type":"string","description":"The Company entity the dividend is claimed from."},"date":{"type":"string","format":"date","description":"The month claimed in (YYYY-MM-DD, as stored)."},"owner1Amount":{"type":"number","description":"PERSONAL!1814 (slot 3), $."},"owner2Amount":{"type":"number","description":"PERSONAL!1815 (slot 3), $."},"owner3Amount":{"type":"number","description":"PERSONAL!1816 (slot 3), $."},"owner4Amount":{"type":"number","description":"PERSONAL!1817 (slot 3), $."},"owner5Amount":{"type":"number","description":"PERSONAL!1818 (slot 3), $."},"totalAmount":{"type":"number","description":"Sum of the five owner amounts — the block Total (PERSONAL!1819 for slot 3), which `2020 Dividends declared (all cos)` sums across Company entities. Derived, not stored."},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","strategyId","entityId","date","owner1Amount","owner2Amount","owner3Amount","owner4Amount","owner5Amount","totalAmount","createdAt","updatedAt"]}}}}
```

## The UpdateCompanyDividendDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"UpdateCompanyDividendDto":{"type":"object","properties":{"entityId":{"type":"string","description":"The Company entity (from `/v1/entities`) claiming the dividend. Must be in the request's strategy (else 404) and `entityType = Company` (else 400)."},"date":{"type":"string","format":"date","description":"The month the dividend is claimed in, YYYY-MM-DD — the PERSONAL column whose M$4..M$5 bounds contain it. Any day in the month works; stored as given."},"owner1Amount":{"type":"number","default":0,"minimum":0,"description":"Dividend $ claimed by owner slot 1 (`/v1/entities` `owners[0]`, INPUTS!243) in the month. Workbook PERSONAL!1814 for the first related entity (workbook slot 3); +7 rows per further entity slot. Port: `personalCompanyClaimedDividend(section, beneficiary = 0)`. 0 / omitted = nothing to this owner."},"owner2Amount":{"type":"number","default":0,"minimum":0,"description":"Dividend $ claimed by owner slot 2 (`/v1/entities` `owners[1]`, INPUTS!244) in the month. Workbook PERSONAL!1815 for the first related entity (workbook slot 3); +7 rows per further entity slot. Port: `personalCompanyClaimedDividend(section, beneficiary = 1)`. 0 / omitted = nothing to this owner."},"owner3Amount":{"type":"number","default":0,"minimum":0,"description":"Dividend $ claimed by owner slot 3 (`/v1/entities` `owners[2]`, INPUTS!245) in the month. Workbook PERSONAL!1816 for the first related entity (workbook slot 3); +7 rows per further entity slot. Port: `personalCompanyClaimedDividend(section, beneficiary = 2)`. 0 / omitted = nothing to this owner."},"owner4Amount":{"type":"number","default":0,"minimum":0,"description":"Dividend $ claimed by owner slot 4 (`/v1/entities` `owners[3]`, INPUTS!246) in the month. Workbook PERSONAL!1817 for the first related entity (workbook slot 3); +7 rows per further entity slot. Port: `personalCompanyClaimedDividend(section, beneficiary = 3)`. 0 / omitted = nothing to this owner."},"owner5Amount":{"type":"number","default":0,"minimum":0,"description":"Dividend $ claimed by owner slot 5 (`/v1/entities` `owners[4]`, INPUTS!247) in the month. Workbook PERSONAL!1818 for the first related entity (workbook slot 3); +7 rows per further entity slot. Port: `personalCompanyClaimedDividend(section, beneficiary = 4)`. 0 / omitted = nothing to this owner."}}}}}}
```

## The TrustDistributionDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"TrustDistributionDto":{"type":"object","properties":{"entityId":{"type":"string","description":"The Trust entity (from `/v1/entities`) whose distribution split this overrides. Must be in the request's strategy (else 404) and `entityType = Trust` (else 400)."},"date":{"type":"string","format":"date","description":"Any day in the financial year the override is for, YYYY-MM-DD. Stored and returned snapped to that FY's 30 June (Australian FY: July–December → 30 June of the next calendar year; January–June → 30 June of the same year), because the distribution only fires in the June column (PERSONAL!M590 = MONTH(M$4)=6). PUT with a new `date` re-snaps."},"owner1Percent":{"type":"number","default":0,"minimum":0,"maximum":100,"description":"Distribution % to owner slot 1 for the financial year, 0–100 (same unit as `/v1/entities` `trust.cashDistribution.owner1Percent`). Workbook PERSONAL!M1350 for the first related entity (workbook slot 3); +63 rows per further entity slot. 0 / omitted = keep the entity default (PERSONAL!J1350, the standing APPLIED %). The five percents may sum to less than 100 (the sheet charges 47% penalty tax on the gap, 1330) but not more."},"owner2Percent":{"type":"number","default":0,"minimum":0,"maximum":100,"description":"Distribution % to owner slot 2 for the financial year, 0–100 (same unit as `/v1/entities` `trust.cashDistribution.owner2Percent`). Workbook PERSONAL!M1351 for the first related entity (workbook slot 3); +63 rows per further entity slot. 0 / omitted = keep the entity default (PERSONAL!J1351, the standing APPLIED %). The five percents may sum to less than 100 (the sheet charges 47% penalty tax on the gap, 1330) but not more."},"owner3Percent":{"type":"number","default":0,"minimum":0,"maximum":100,"description":"Distribution % to owner slot 3 for the financial year, 0–100 (same unit as `/v1/entities` `trust.cashDistribution.owner3Percent`). Workbook PERSONAL!M1352 for the first related entity (workbook slot 3); +63 rows per further entity slot. 0 / omitted = keep the entity default (PERSONAL!J1352, the standing APPLIED %). The five percents may sum to less than 100 (the sheet charges 47% penalty tax on the gap, 1330) but not more."},"owner4Percent":{"type":"number","default":0,"minimum":0,"maximum":100,"description":"Distribution % to owner slot 4 for the financial year, 0–100 (same unit as `/v1/entities` `trust.cashDistribution.owner4Percent`). Workbook PERSONAL!M1353 for the first related entity (workbook slot 3); +63 rows per further entity slot. 0 / omitted = keep the entity default (PERSONAL!J1353, the standing APPLIED %). The five percents may sum to less than 100 (the sheet charges 47% penalty tax on the gap, 1330) but not more."},"owner5Percent":{"type":"number","default":0,"minimum":0,"maximum":100,"description":"Distribution % to owner slot 5 for the financial year, 0–100 (same unit as `/v1/entities` `trust.cashDistribution.owner5Percent`). Workbook PERSONAL!M1354 for the first related entity (workbook slot 3); +63 rows per further entity slot. 0 / omitted = keep the entity default (PERSONAL!J1354, the standing APPLIED %). The five percents may sum to less than 100 (the sheet charges 47% penalty tax on the gap, 1330) but not more."}},"required":["entityId","date"]}}}}
```

## The TrustDistributionResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"TrustDistributionResponseDto":{"type":"object","properties":{"id":{"type":"string"},"strategyId":{"type":"string","description":"The control centre / strategy the event belongs to."},"entityId":{"type":"string","description":"The Trust entity the override applies to."},"date":{"type":"string","format":"date","description":"The 30 June the event was snapped to (YYYY-06-30) — the PERSONAL column in which the percents apply."},"owner1Percent":{"type":"number","description":"PERSONAL!M1350 (slot 3), 0–100."},"owner2Percent":{"type":"number","description":"PERSONAL!M1351 (slot 3), 0–100."},"owner3Percent":{"type":"number","description":"PERSONAL!M1352 (slot 3), 0–100."},"owner4Percent":{"type":"number","description":"PERSONAL!M1353 (slot 3), 0–100."},"owner5Percent":{"type":"number","description":"PERSONAL!M1354 (slot 3), 0–100."},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","strategyId","entityId","date","owner1Percent","owner2Percent","owner3Percent","owner4Percent","owner5Percent","createdAt","updatedAt"]}}}}
```

## The UpdateTrustDistributionDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"UpdateTrustDistributionDto":{"type":"object","properties":{"entityId":{"type":"string","description":"The Trust entity (from `/v1/entities`) whose distribution split this overrides. Must be in the request's strategy (else 404) and `entityType = Trust` (else 400)."},"date":{"type":"string","format":"date","description":"Any day in the financial year the override is for, YYYY-MM-DD. Stored and returned snapped to that FY's 30 June (Australian FY: July–December → 30 June of the next calendar year; January–June → 30 June of the same year), because the distribution only fires in the June column (PERSONAL!M590 = MONTH(M$4)=6). PUT with a new `date` re-snaps."},"owner1Percent":{"type":"number","default":0,"minimum":0,"maximum":100,"description":"Distribution % to owner slot 1 for the financial year, 0–100 (same unit as `/v1/entities` `trust.cashDistribution.owner1Percent`). Workbook PERSONAL!M1350 for the first related entity (workbook slot 3); +63 rows per further entity slot. 0 / omitted = keep the entity default (PERSONAL!J1350, the standing APPLIED %). The five percents may sum to less than 100 (the sheet charges 47% penalty tax on the gap, 1330) but not more."},"owner2Percent":{"type":"number","default":0,"minimum":0,"maximum":100,"description":"Distribution % to owner slot 2 for the financial year, 0–100 (same unit as `/v1/entities` `trust.cashDistribution.owner2Percent`). Workbook PERSONAL!M1351 for the first related entity (workbook slot 3); +63 rows per further entity slot. 0 / omitted = keep the entity default (PERSONAL!J1351, the standing APPLIED %). The five percents may sum to less than 100 (the sheet charges 47% penalty tax on the gap, 1330) but not more."},"owner3Percent":{"type":"number","default":0,"minimum":0,"maximum":100,"description":"Distribution % to owner slot 3 for the financial year, 0–100 (same unit as `/v1/entities` `trust.cashDistribution.owner3Percent`). Workbook PERSONAL!M1352 for the first related entity (workbook slot 3); +63 rows per further entity slot. 0 / omitted = keep the entity default (PERSONAL!J1352, the standing APPLIED %). The five percents may sum to less than 100 (the sheet charges 47% penalty tax on the gap, 1330) but not more."},"owner4Percent":{"type":"number","default":0,"minimum":0,"maximum":100,"description":"Distribution % to owner slot 4 for the financial year, 0–100 (same unit as `/v1/entities` `trust.cashDistribution.owner4Percent`). Workbook PERSONAL!M1353 for the first related entity (workbook slot 3); +63 rows per further entity slot. 0 / omitted = keep the entity default (PERSONAL!J1353, the standing APPLIED %). The five percents may sum to less than 100 (the sheet charges 47% penalty tax on the gap, 1330) but not more."},"owner5Percent":{"type":"number","default":0,"minimum":0,"maximum":100,"description":"Distribution % to owner slot 5 for the financial year, 0–100 (same unit as `/v1/entities` `trust.cashDistribution.owner5Percent`). Workbook PERSONAL!M1354 for the first related entity (workbook slot 3); +63 rows per further entity slot. 0 / omitted = keep the entity default (PERSONAL!J1354, the standing APPLIED %). The five percents may sum to less than 100 (the sheet charges 47% penalty tax on the gap, 1330) but not more."}}}}}}
```

## The EntityCashFlowDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"EntityCashFlowDto":{"type":"object","properties":{"entityId":{"type":"string","description":"The related entity (from `/v1/entities`; Company / Trust / SMSF — any type) the cash moves into or out of. Must be an active entity of the request's strategy (else 404). Decides which 1870 / 1928 block (its workbook slot) and which `1310 CASH ACCOUNT` (1312 / 1313) the $ reaches."},"ownerSlot":{"type":"number","minimum":1,"maximum":5,"description":"Which owner (1–5) the cash comes from (CONTRIBUTION) or goes to (WITHDRAWAL) — the dropdown is the entity's `owners[]` from `/v1/entities` (INPUTS!243–247). Picks the row in the block: first related entity (workbook slot 3) contribution owner 1 → PERSONAL!1872 … owner 5 → 1876 (total 1877); withdrawal owner 1 → 1930 … owner 5 → 1934 (total 1935); +7 rows per further entity slot. The slot must be a non-empty owner on that entity (else 400)."},"date":{"type":"string","format":"date","description":"Any day in the month the $ lands in, YYYY-MM-DD. The value sits in the PERSONAL period column whose M$4..M$5 bounds contain it; several events in one month for the same entity sum on the entity side (1312 / 1313 are SUMIFs)."},"amount":{"type":"number","minimum":0,"description":"$ moved, ≥ 0. The owner-row cell of the 1870 block (CONTRIBUTION; slot 3 rows 1872–1876) or the 1928 block (WITHDRAWAL; slot 3 rows 1930–1934) for that month."},"direction":{"type":"string","enum":["CONTRIBUTION","WITHDRAWAL"],"description":"`CONTRIBUTION` = owner → entity, lands in the PERSONAL!1870 CASH CONTRIBUTIONS block and is summed by entity slot into the entity's `1312 + Cash contributions / injections`. `WITHDRAWAL` = entity → owner, lands in the PERSONAL!1928 CASH WITHDRAWALS block and is summed into `1313 − Cash withdrawals`."}},"required":["entityId","ownerSlot","date","amount","direction"]}}}}
```

## The EntityCashFlowResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"EntityCashFlowResponseDto":{"type":"object","properties":{"id":{"type":"string"},"strategyId":{"type":"string","description":"The control centre / strategy the event belongs to."},"entityId":{"type":"string","description":"The related entity the cash moves into or out of."},"entityName":{"type":"string","description":"The entity's name (`/v1/entities` `entityName`, INPUTS!199). Read-only."},"ownerSlot":{"type":"number","minimum":1,"maximum":5,"description":"Which owner (1–5) the cash comes from (CONTRIBUTION) or goes to (WITHDRAWAL) — the dropdown is the entity's `owners[]` from `/v1/entities` (INPUTS!243–247). Picks the row in the block: first related entity (workbook slot 3) contribution owner 1 → PERSONAL!1872 … owner 5 → 1876 (total 1877); withdrawal owner 1 → 1930 … owner 5 → 1934 (total 1935); +7 rows per further entity slot. The slot must be a non-empty owner on that entity (else 400)."},"ownerName":{"type":"string","description":"The owner's name for that slot (`/v1/entities` `owners[].ownerName`, INPUTS!243–247) — the label on the owner row (slot 3: 1872–1876 / 1930–1934). Read-only."},"ownerUserId":{"type":"string","nullable":true,"description":"The user this owner is when the slot is linked to a ScaleApp account (`owners[].userId`, INPUTS!262–266 Linked ID — typically owner 1 / 2 = the client / partner); `null` when the owner is another entity or unlinked. Read-only."},"date":{"type":"string","format":"date","description":"The stored day, YYYY-MM-DD — the PERSONAL month column the $ lands in."},"amount":{"type":"number","description":"$ moved. Owner-row cell of PERSONAL!1870 (CONTRIBUTION; slot 3 rows 1872–1876) or 1928 (WITHDRAWAL; slot 3 rows 1930–1934) for that month."},"direction":{"type":"string","enum":["CONTRIBUTION","WITHDRAWAL"],"description":"`CONTRIBUTION` = owner → entity, lands in the PERSONAL!1870 CASH CONTRIBUTIONS block and is summed by entity slot into the entity's `1312 + Cash contributions / injections`. `WITHDRAWAL` = entity → owner, lands in the PERSONAL!1928 CASH WITHDRAWALS block and is summed into `1313 − Cash withdrawals`."},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","strategyId","entityId","entityName","ownerSlot","ownerName","ownerUserId","date","amount","direction","createdAt","updatedAt"]}}}}
```

## The UpdateEntityCashFlowDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"UpdateEntityCashFlowDto":{"type":"object","properties":{"entityId":{"type":"string","description":"The related entity (from `/v1/entities`; Company / Trust / SMSF — any type) the cash moves into or out of. Must be an active entity of the request's strategy (else 404). Decides which 1870 / 1928 block (its workbook slot) and which `1310 CASH ACCOUNT` (1312 / 1313) the $ reaches."},"ownerSlot":{"type":"number","minimum":1,"maximum":5,"description":"Which owner (1–5) the cash comes from (CONTRIBUTION) or goes to (WITHDRAWAL) — the dropdown is the entity's `owners[]` from `/v1/entities` (INPUTS!243–247). Picks the row in the block: first related entity (workbook slot 3) contribution owner 1 → PERSONAL!1872 … owner 5 → 1876 (total 1877); withdrawal owner 1 → 1930 … owner 5 → 1934 (total 1935); +7 rows per further entity slot. The slot must be a non-empty owner on that entity (else 400)."},"date":{"type":"string","format":"date","description":"Any day in the month the $ lands in, YYYY-MM-DD. The value sits in the PERSONAL period column whose M$4..M$5 bounds contain it; several events in one month for the same entity sum on the entity side (1312 / 1313 are SUMIFs)."},"amount":{"type":"number","minimum":0,"description":"$ moved, ≥ 0. The owner-row cell of the 1870 block (CONTRIBUTION; slot 3 rows 1872–1876) or the 1928 block (WITHDRAWAL; slot 3 rows 1930–1934) for that month."},"direction":{"type":"string","enum":["CONTRIBUTION","WITHDRAWAL"],"description":"`CONTRIBUTION` = owner → entity, lands in the PERSONAL!1870 CASH CONTRIBUTIONS block and is summed by entity slot into the entity's `1312 + Cash contributions / injections`. `WITHDRAWAL` = entity → owner, lands in the PERSONAL!1928 CASH WITHDRAWALS block and is summed into `1313 − Cash withdrawals`."}}}}}}
```

## The SalarySacrificeDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"SalarySacrificeDto":{"type":"object","properties":{"date":{"type":"string","format":"date","description":"The month the value applies to, YYYY-MM-DD (any day in the month). Lands in the PERSONAL period column whose M$4..M$5 bounds contain it."},"amount":{"type":"number","description":"Salary sacrificed in that month, $ (≥ 0). Workbook PERSONAL!2044 (User 1) / 2045 (User 2) \"Salary sacrifice\" in the 2041 CONTRIBUTIONS block; flows to 2108/2109 Salary Sacrifice deduction (= −input) → 436/437 Gross Salary (Excl. Super) and 2180/2188 Reportable Super Contributions. Which row: the person the event belongs to — `?userId=` the client for User 1, the partner for User 2, like every other personal event."}},"required":["date","amount"]}}}}
```

## The SalarySacrificeResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"SalarySacrificeResponseDto":{"type":"object","properties":{"date":{"type":"string","format":"date","description":"The month the value applies to, YYYY-MM-DD (any day in the month). Lands in the PERSONAL period column whose M$4..M$5 bounds contain it."},"amount":{"type":"number","description":"Salary sacrificed in that month, $ (≥ 0). Workbook PERSONAL!2044 (User 1) / 2045 (User 2) \"Salary sacrifice\" in the 2041 CONTRIBUTIONS block; flows to 2108/2109 Salary Sacrifice deduction (= −input) → 436/437 Gross Salary (Excl. Super) and 2180/2188 Reportable Super Contributions. Which row: the person the event belongs to — `?userId=` the client for User 1, the partner for User 2, like every other personal event."},"id":{"type":"string"},"strategyId":{"type":"string","description":"The control centre / strategy the event belongs to."},"userId":{"type":"string","description":"The person the event belongs to (User 1 = the client, User 2 = the partner). Decides PERSONAL!2044 vs 2045."},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["date","amount","id","strategyId","userId","createdAt","updatedAt"]}}}}
```

## The UpdateSalarySacrificeDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"UpdateSalarySacrificeDto":{"type":"object","properties":{"date":{"type":"string","format":"date","description":"The month the value applies to, YYYY-MM-DD (any day in the month). Lands in the PERSONAL period column whose M$4..M$5 bounds contain it."},"amount":{"type":"number","description":"Salary sacrificed in that month, $ (≥ 0). Workbook PERSONAL!2044 (User 1) / 2045 (User 2) \"Salary sacrifice\" in the 2041 CONTRIBUTIONS block; flows to 2108/2109 Salary Sacrifice deduction (= −input) → 436/437 Gross Salary (Excl. Super) and 2180/2188 Reportable Super Contributions. Which row: the person the event belongs to — `?userId=` the client for User 1, the partner for User 2, like every other personal event."}}}}}}
```

## The PersonalDeductionDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PersonalDeductionDto":{"type":"object","properties":{"date":{"type":"string","format":"date","description":"The month the value applies to, YYYY-MM-DD (any day in the month). Lands in the PERSONAL period column whose M$4..M$5 bounds contain it."},"amount":{"type":"number","description":"Personal deductions claimed in that month, $ in today's dollars (≥ 0) — the sheet indexes it. Workbook PERSONAL!406 (User 1) / 407 (User 2) \"Personal Deductions\" (405 block); 408/409 Applied = input × M160 × G160 → 694/789 Personal Deductions (−SUMIF by financial year) → 697/792 Taxable Income. Which row: the person the event belongs to — `?userId=` the client for User 1, the partner for User 2, like every other personal event."}},"required":["date","amount"]}}}}
```

## The PersonalDeductionResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PersonalDeductionResponseDto":{"type":"object","properties":{"date":{"type":"string","format":"date","description":"The month the value applies to, YYYY-MM-DD (any day in the month). Lands in the PERSONAL period column whose M$4..M$5 bounds contain it."},"amount":{"type":"number","description":"Personal deductions claimed in that month, $ in today's dollars (≥ 0) — the sheet indexes it. Workbook PERSONAL!406 (User 1) / 407 (User 2) \"Personal Deductions\" (405 block); 408/409 Applied = input × M160 × G160 → 694/789 Personal Deductions (−SUMIF by financial year) → 697/792 Taxable Income. Which row: the person the event belongs to — `?userId=` the client for User 1, the partner for User 2, like every other personal event."},"id":{"type":"string"},"strategyId":{"type":"string","description":"The control centre / strategy the event belongs to."},"userId":{"type":"string","description":"The person the event belongs to (User 1 = the client, User 2 = the partner). Decides PERSONAL!406 vs 407."},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["date","amount","id","strategyId","userId","createdAt","updatedAt"]}}}}
```

## The UpdatePersonalDeductionDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"UpdatePersonalDeductionDto":{"type":"object","properties":{"date":{"type":"string","format":"date","description":"The month the value applies to, YYYY-MM-DD (any day in the month). Lands in the PERSONAL period column whose M$4..M$5 bounds contain it."},"amount":{"type":"number","description":"Personal deductions claimed in that month, $ in today's dollars (≥ 0) — the sheet indexes it. Workbook PERSONAL!406 (User 1) / 407 (User 2) \"Personal Deductions\" (405 block); 408/409 Applied = input × M160 × G160 → 694/789 Personal Deductions (−SUMIF by financial year) → 697/792 Taxable Income. Which row: the person the event belongs to — `?userId=` the client for User 1, the partner for User 2, like every other personal event."}}}}}}
```

## The SubscriptionStatusResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"SubscriptionStatusResponseDto":{"type":"object","properties":{"id":{"type":"string","description":"Subscription identifier"},"status":{"type":"string","description":"Current subscription status","enum":["ACTIVE","CANCELLED","EXPIRED","TRIAL"]},"planName":{"type":"string","description":"Subscription plan name"},"startDate":{"type":"string","description":"Subscription start date","format":"date-time"},"nextBillingDate":{"type":"string","description":"Next billing date","format":"date-time","nullable":true},"monthlyPrice":{"type":"number","description":"Monthly price in AUD"},"isTrialPeriod":{"type":"boolean","description":"Whether currently in trial period"},"createdAt":{"type":"string","description":"When subscription was created","format":"date-time"},"updatedAt":{"type":"string","description":"When subscription was last updated","format":"date-time"}},"required":["id","status","planName","startDate","nextBillingDate","monthlyPrice","isTrialPeriod","createdAt","updatedAt"]}}}}
```

## The TimelineWidgetDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"TimelineWidgetDto":{"type":"object","properties":{"totalProperties":{"type":"number","description":"Total properties"},"clientsLessThan80PercentLvr":{"type":"number","description":"Clients with less than 80% LVR"},"propertiesLessThan80PercentLvr":{"type":"number","description":"Properties with less than 80% LVR"},"buyingEventsInNtm":{"type":"number","description":"Buying events in NTM (Next Twelve Months)"},"refinancingeventsInNtm":{"type":"number","description":"Refinancing events in NTM (Next Twelve Months)"}},"required":["totalProperties","clientsLessThan80PercentLvr","propertiesLessThan80PercentLvr","buyingEventsInNtm","refinancingeventsInNtm"]}}}}
```

## The BrokerDashboardMetricsDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"BrokerDashboardMetricsDto":{"type":"object","properties":{"totalClients":{"type":"number","description":"Total number of clients"},"activeLoans":{"type":"number","description":"Number of active loans"},"totalLoanValue":{"type":"number","description":"Total loan value"},"averageLoanSize":{"type":"number","description":"Average loan size"},"totalCommissions":{"type":"number","description":"Total commissions"},"trailCommissions":{"type":"number","description":"Trail commissions"},"loanToIncome":{"type":"number","description":"Loan to income ratio"},"weightedAverageRate":{"type":"number","description":"Weighted average rate"},"dealVelocity":{"type":"number","description":"Deal velocity"},"timelineWidgets":{"description":"Timeline widgets","type":"array","items":{"$ref":"#/components/schemas/TimelineWidgetDto"}}},"required":["totalClients","activeLoans","totalLoanValue","averageLoanSize","totalCommissions","trailCommissions","loanToIncome","weightedAverageRate","dealVelocity","timelineWidgets"]},"TimelineWidgetDto":{"type":"object","properties":{"totalProperties":{"type":"number","description":"Total properties"},"clientsLessThan80PercentLvr":{"type":"number","description":"Clients with less than 80% LVR"},"propertiesLessThan80PercentLvr":{"type":"number","description":"Properties with less than 80% LVR"},"buyingEventsInNtm":{"type":"number","description":"Buying events in NTM (Next Twelve Months)"},"refinancingeventsInNtm":{"type":"number","description":"Refinancing events in NTM (Next Twelve Months)"}},"required":["totalProperties","clientsLessThan80PercentLvr","propertiesLessThan80PercentLvr","buyingEventsInNtm","refinancingeventsInNtm"]}}}}
```

## The BrokerDashboardDealFlowDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"BrokerDashboardDealFlowDto":{"type":"object","properties":{"newProperties":{"type":"number","description":"New properties count"},"newPropertiesValue":{"type":"number","description":"New properties value"},"totalVolumeMonth":{"type":"number","description":"Total volume for the month"},"totalVolumeByMonth":{"type":"array","description":"Last 12 months of BROKER_M32 (new loan volume), one bar per month. Summed across the broker's clients the same way activeLoans sums BROKER_M14.","items":{"type":"object","properties":{"month":{"type":"string"},"value":{"type":"number"}}}},"upfrontCommissionMonth":{"type":"number","description":"Upfront commission for the month"},"trailCommissionMonth":{"type":"number","description":"Trail commission for the month"},"totalCommissionMonth":{"type":"number","description":"Total commission for the month"}},"required":["newProperties","newPropertiesValue","totalVolumeMonth","totalVolumeByMonth","upfrontCommissionMonth","trailCommissionMonth","totalCommissionMonth"]}}}}
```

## The BrokerDashboardOpsDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"BrokerDashboardOpsDto":{"type":"object","properties":{"clientReviews":{"type":"number","description":"Number of client reviews"},"meetingsBooked":{"type":"number","description":"Number of meetings booked"},"aiHoursSaved":{"type":"number","description":"AI hours saved"},"dealConversion":{"type":"number","description":"Deal conversion rate"},"daysToSettlementAvg":{"type":"number","description":"Average days to settlement"},"clientSatisfactionNps":{"type":"number","description":"Client satisfaction NPS score"},"retentionRate":{"type":"number","description":"Retention rate"}},"required":["clientReviews","meetingsBooked","aiHoursSaved","dealConversion","daysToSettlementAvg","clientSatisfactionNps","retentionRate"]}}}}
```

## The BrokerDashboardClientPortfoliosDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"BrokerDashboardClientPortfoliosDto":{"type":"object","properties":{"portfolioValue":{"type":"number","description":"Portfolio value"},"debtOutstanding":{"type":"number","description":"Debt outstanding"},"equity":{"type":"number","description":"Equity"},"equityAvailable80PercentLvr":{"type":"number","description":"Equity available at 80% LVR"},"offsetBalance":{"type":"number","description":"Offset balance"},"debtNetOfOffset":{"type":"number","description":"Debt net of offset"},"portfolioLvrPercent":{"type":"number","description":"Portfolio LVR percentage"},"personalAndOtherLoans":{"type":"number","description":"Personal and other loans"},"hecsOutstanding":{"type":"number","description":"HECS outstanding"}},"required":["portfolioValue","debtOutstanding","equity","equityAvailable80PercentLvr","offsetBalance","debtNetOfOffset","portfolioLvrPercent","personalAndOtherLoans","hecsOutstanding"]}}}}
```

## The BrokerDashboardPipelineDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"BrokerDashboardPipelineDto":{"type":"object","properties":{"depositSaversCount":{"type":"number","description":"Deposit savers count"},"ftbPreApprovalCount":{"type":"number","description":"First time buyer pre-approval count"},"firstLoanActiveClientsCount":{"type":"number","description":"First loan active clients count"},"reactivatedCount":{"type":"number","description":"Reactivated count"},"savingPercent":{"type":"number","description":"Saving percentage"},"ftbPreApprovalPercent":{"type":"number","description":"First time buyer pre-approval percentage"},"firstLoanActivePercent":{"type":"number","description":"First loan active percentage"},"reactivatedPercent":{"type":"number","description":"Reactivated percentage"}},"required":["depositSaversCount","ftbPreApprovalCount","firstLoanActiveClientsCount","reactivatedCount","savingPercent","ftbPreApprovalPercent","firstLoanActivePercent","reactivatedPercent"]}}}}
```

## The BrokerDashboardLifetimeValueDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"BrokerDashboardLifetimeValueDto":{"type":"object","properties":{"ltvSavers":{"type":"number","description":"Lifetime value for savers"},"ltvActiveClients":{"type":"number","description":"Lifetime value for active clients"},"totalLtv":{"type":"number","description":"Total lifetime value"},"totalLtvByMonth":{"type":"array","description":"Last 12 months of BROKER_M73 (total LTV), one point per month. Summed across the broker's clients the same way totalVolumeByMonth sums BROKER_M32.","items":{"type":"object","properties":{"month":{"type":"string"},"value":{"type":"number"}}}},"averageLrpu":{"type":"number","description":"Average lifetime revenue per user"},"runningRetentionEngagementRate":{"type":"number","description":"Running retention engagement rate"},"retentionPercentChange":{"type":"number","description":"Retention percentage change"},"retentionImpactOnLtv":{"type":"number","description":"Retention impact on lifetime value"},"scaleAiImpact":{"type":"number","description":"Scale AI impact"}},"required":["ltvSavers","ltvActiveClients","totalLtv","totalLtvByMonth","averageLrpu","runningRetentionEngagementRate","retentionPercentChange","retentionImpactOnLtv","scaleAiImpact"]}}}}
```

## The ByStateDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ByStateDto":{"type":"object","properties":{"nsw":{"type":"number","description":"New South Wales count"},"qld":{"type":"number","description":"Queensland count"},"vic":{"type":"number","description":"Victoria count"},"act":{"type":"number","description":"Australian Capital Territory count"},"tas":{"type":"number","description":"Tasmania count"},"wa":{"type":"number","description":"Western Australia count"},"sa":{"type":"number","description":"South Australia count"},"nt":{"type":"number","description":"Northern Territory count"},"total":{"type":"number","description":"Total count"}},"required":["nsw","qld","vic","act","tas","wa","sa","nt","total"]}}}}
```

## The ByClientTypeDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ByClientTypeDto":{"type":"object","properties":{"depositsaver":{"type":"number","description":"Deposit saver count"},"firstTimeBuyer":{"type":"number","description":"First time buyer count"},"firstLoan":{"type":"number","description":"First loan count"},"reactivated":{"type":"number","description":"Reactivated count"},"total":{"type":"number","description":"Total count"}},"required":["depositsaver","firstTimeBuyer","firstLoan","reactivated","total"]}}}}
```

## The ByLenderDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ByLenderDto":{"type":"object","properties":{"cba":{"type":"number","description":"Commonwealth Bank of Australia count"},"wbc":{"type":"number","description":"Westpac count"},"nab":{"type":"number","description":"National Australia Bank count"},"anz":{"type":"number","description":"Australia and New Zealand Banking Group count"},"mcq":{"type":"number","description":"Macquarie count"},"ing":{"type":"number","description":"ING count"},"sun":{"type":"number","description":"Suncorp count"},"boq":{"type":"number","description":"Bank of Queensland count"},"amp":{"type":"number","description":"AMP count"},"other":{"type":"number","description":"Other lenders count"},"total":{"type":"number","description":"Total count"}},"required":["cba","wbc","nab","anz","mcq","ing","sun","boq","amp","other","total"]}}}}
```

## The ByDealTermsDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ByDealTermsDto":{"type":"object","properties":{"interestOnly":{"type":"number","description":"Interest only count"},"principalAndInterest":{"type":"number","description":"Principal and interest count"},"fixed":{"type":"number","description":"Fixed rate count"},"variable":{"type":"number","description":"Variable rate count"}},"required":["interestOnly","principalAndInterest","fixed","variable"]}}}}
```

## The ByPropertyUseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ByPropertyUseDto":{"type":"object","properties":{"mainResidence":{"type":"number","description":"Main residence count"},"investment":{"type":"number","description":"Investment property count"},"total":{"type":"number","description":"Total count"}},"required":["mainResidence","investment","total"]}}}}
```

## The ByPropertyTypeDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ByPropertyTypeDto":{"type":"object","properties":{"house":{"type":"number","description":"House count"},"apartment":{"type":"number","description":"Apartment count"},"duplex":{"type":"number","description":"Duplex count"},"other":{"type":"number","description":"Other / unclassified security types — the complement of house + apartment + duplex (rural, vacant land, unflagged). Computed by subtraction so the block always ties to the book total (ACTUALS 'partition-by-construction', DevDocs r96)."},"total":{"type":"number","description":"Total count"}},"required":["house","apartment","duplex","other","total"]}}}}
```

## The BrokerDashboardLoanCompositionDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"BrokerDashboardLoanCompositionDto":{"type":"object","properties":{"byState":{"description":"Loan composition by state","allOf":[{"$ref":"#/components/schemas/ByStateDto"}]},"byClientType":{"description":"Loan composition by client type","allOf":[{"$ref":"#/components/schemas/ByClientTypeDto"}]},"byLender":{"description":"Loan composition by lender","allOf":[{"$ref":"#/components/schemas/ByLenderDto"}]},"byDealTerms":{"description":"Loan composition by deal terms","allOf":[{"$ref":"#/components/schemas/ByDealTermsDto"}]},"byPropertyUse":{"description":"Loan composition by property use","allOf":[{"$ref":"#/components/schemas/ByPropertyUseDto"}]},"byPropertyType":{"description":"Loan composition by property type","allOf":[{"$ref":"#/components/schemas/ByPropertyTypeDto"}]}},"required":["byState","byClientType","byLender","byDealTerms","byPropertyUse","byPropertyType"]},"ByStateDto":{"type":"object","properties":{"nsw":{"type":"number","description":"New South Wales count"},"qld":{"type":"number","description":"Queensland count"},"vic":{"type":"number","description":"Victoria count"},"act":{"type":"number","description":"Australian Capital Territory count"},"tas":{"type":"number","description":"Tasmania count"},"wa":{"type":"number","description":"Western Australia count"},"sa":{"type":"number","description":"South Australia count"},"nt":{"type":"number","description":"Northern Territory count"},"total":{"type":"number","description":"Total count"}},"required":["nsw","qld","vic","act","tas","wa","sa","nt","total"]},"ByClientTypeDto":{"type":"object","properties":{"depositsaver":{"type":"number","description":"Deposit saver count"},"firstTimeBuyer":{"type":"number","description":"First time buyer count"},"firstLoan":{"type":"number","description":"First loan count"},"reactivated":{"type":"number","description":"Reactivated count"},"total":{"type":"number","description":"Total count"}},"required":["depositsaver","firstTimeBuyer","firstLoan","reactivated","total"]},"ByLenderDto":{"type":"object","properties":{"cba":{"type":"number","description":"Commonwealth Bank of Australia count"},"wbc":{"type":"number","description":"Westpac count"},"nab":{"type":"number","description":"National Australia Bank count"},"anz":{"type":"number","description":"Australia and New Zealand Banking Group count"},"mcq":{"type":"number","description":"Macquarie count"},"ing":{"type":"number","description":"ING count"},"sun":{"type":"number","description":"Suncorp count"},"boq":{"type":"number","description":"Bank of Queensland count"},"amp":{"type":"number","description":"AMP count"},"other":{"type":"number","description":"Other lenders count"},"total":{"type":"number","description":"Total count"}},"required":["cba","wbc","nab","anz","mcq","ing","sun","boq","amp","other","total"]},"ByDealTermsDto":{"type":"object","properties":{"interestOnly":{"type":"number","description":"Interest only count"},"principalAndInterest":{"type":"number","description":"Principal and interest count"},"fixed":{"type":"number","description":"Fixed rate count"},"variable":{"type":"number","description":"Variable rate count"}},"required":["interestOnly","principalAndInterest","fixed","variable"]},"ByPropertyUseDto":{"type":"object","properties":{"mainResidence":{"type":"number","description":"Main residence count"},"investment":{"type":"number","description":"Investment property count"},"total":{"type":"number","description":"Total count"}},"required":["mainResidence","investment","total"]},"ByPropertyTypeDto":{"type":"object","properties":{"house":{"type":"number","description":"House count"},"apartment":{"type":"number","description":"Apartment count"},"duplex":{"type":"number","description":"Duplex count"},"other":{"type":"number","description":"Other / unclassified security types — the complement of house + apartment + duplex (rural, vacant land, unflagged). Computed by subtraction so the block always ties to the book total (ACTUALS 'partition-by-construction', DevDocs r96)."},"total":{"type":"number","description":"Total count"}},"required":["house","apartment","duplex","other","total"]}}}}
```

## The BrokerDashboardLoanSizeDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"BrokerDashboardLoanSizeDto":{"type":"object","properties":{"byState":{"description":"Loan size by state","allOf":[{"$ref":"#/components/schemas/ByStateDto"}]},"byClientType":{"description":"Loan size by client type","allOf":[{"$ref":"#/components/schemas/ByClientTypeDto"}]},"byLender":{"description":"Loan size by lender","allOf":[{"$ref":"#/components/schemas/ByLenderDto"}]},"byDealTerms":{"description":"Loan size by deal terms","allOf":[{"$ref":"#/components/schemas/ByDealTermsDto"}]},"byPropertyUse":{"description":"Loan size by property use","allOf":[{"$ref":"#/components/schemas/ByPropertyUseDto"}]},"byPropertyType":{"description":"Loan size by property type","allOf":[{"$ref":"#/components/schemas/ByPropertyTypeDto"}]}},"required":["byState","byClientType","byLender","byDealTerms","byPropertyUse","byPropertyType"]},"ByStateDto":{"type":"object","properties":{"nsw":{"type":"number","description":"New South Wales count"},"qld":{"type":"number","description":"Queensland count"},"vic":{"type":"number","description":"Victoria count"},"act":{"type":"number","description":"Australian Capital Territory count"},"tas":{"type":"number","description":"Tasmania count"},"wa":{"type":"number","description":"Western Australia count"},"sa":{"type":"number","description":"South Australia count"},"nt":{"type":"number","description":"Northern Territory count"},"total":{"type":"number","description":"Total count"}},"required":["nsw","qld","vic","act","tas","wa","sa","nt","total"]},"ByClientTypeDto":{"type":"object","properties":{"depositsaver":{"type":"number","description":"Deposit saver count"},"firstTimeBuyer":{"type":"number","description":"First time buyer count"},"firstLoan":{"type":"number","description":"First loan count"},"reactivated":{"type":"number","description":"Reactivated count"},"total":{"type":"number","description":"Total count"}},"required":["depositsaver","firstTimeBuyer","firstLoan","reactivated","total"]},"ByLenderDto":{"type":"object","properties":{"cba":{"type":"number","description":"Commonwealth Bank of Australia count"},"wbc":{"type":"number","description":"Westpac count"},"nab":{"type":"number","description":"National Australia Bank count"},"anz":{"type":"number","description":"Australia and New Zealand Banking Group count"},"mcq":{"type":"number","description":"Macquarie count"},"ing":{"type":"number","description":"ING count"},"sun":{"type":"number","description":"Suncorp count"},"boq":{"type":"number","description":"Bank of Queensland count"},"amp":{"type":"number","description":"AMP count"},"other":{"type":"number","description":"Other lenders count"},"total":{"type":"number","description":"Total count"}},"required":["cba","wbc","nab","anz","mcq","ing","sun","boq","amp","other","total"]},"ByDealTermsDto":{"type":"object","properties":{"interestOnly":{"type":"number","description":"Interest only count"},"principalAndInterest":{"type":"number","description":"Principal and interest count"},"fixed":{"type":"number","description":"Fixed rate count"},"variable":{"type":"number","description":"Variable rate count"}},"required":["interestOnly","principalAndInterest","fixed","variable"]},"ByPropertyUseDto":{"type":"object","properties":{"mainResidence":{"type":"number","description":"Main residence count"},"investment":{"type":"number","description":"Investment property count"},"total":{"type":"number","description":"Total count"}},"required":["mainResidence","investment","total"]},"ByPropertyTypeDto":{"type":"object","properties":{"house":{"type":"number","description":"House count"},"apartment":{"type":"number","description":"Apartment count"},"duplex":{"type":"number","description":"Duplex count"},"other":{"type":"number","description":"Other / unclassified security types — the complement of house + apartment + duplex (rural, vacant land, unflagged). Computed by subtraction so the block always ties to the book total (ACTUALS 'partition-by-construction', DevDocs r96)."},"total":{"type":"number","description":"Total count"}},"required":["house","apartment","duplex","other","total"]}}}}
```

## The BrokerDashboardDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"BrokerDashboardDto":{"type":"object","properties":{"keyMetrics":{"description":"Key metrics including clients, loans, commissions, and timeline widgets","allOf":[{"$ref":"#/components/schemas/BrokerDashboardMetricsDto"}]},"dealFlow":{"description":"Deal flow metrics including new properties and commissions","allOf":[{"$ref":"#/components/schemas/BrokerDashboardDealFlowDto"}]},"ops":{"description":"Operations metrics including reviews, meetings, and conversion","allOf":[{"$ref":"#/components/schemas/BrokerDashboardOpsDto"}]},"clientPortfolios":{"description":"Client portfolio metrics including value, debt, and equity","allOf":[{"$ref":"#/components/schemas/BrokerDashboardClientPortfoliosDto"}]},"pipeline":{"description":"Pipeline metrics including deposit savers and pre-approvals","allOf":[{"$ref":"#/components/schemas/BrokerDashboardPipelineDto"}]},"lifetimeValue":{"description":"Lifetime value metrics for savers and active clients","allOf":[{"$ref":"#/components/schemas/BrokerDashboardLifetimeValueDto"}]},"loanComposition":{"description":"Loan composition by state, client type, lender, and property","allOf":[{"$ref":"#/components/schemas/BrokerDashboardLoanCompositionDto"}]},"loanSizeByState":{"description":"Loan size by state, client type, lender, and property","allOf":[{"$ref":"#/components/schemas/BrokerDashboardLoanSizeDto"}]}},"required":["keyMetrics","dealFlow","ops","clientPortfolios","pipeline","lifetimeValue","loanComposition","loanSizeByState"]},"BrokerDashboardMetricsDto":{"type":"object","properties":{"totalClients":{"type":"number","description":"Total number of clients"},"activeLoans":{"type":"number","description":"Number of active loans"},"totalLoanValue":{"type":"number","description":"Total loan value"},"averageLoanSize":{"type":"number","description":"Average loan size"},"totalCommissions":{"type":"number","description":"Total commissions"},"trailCommissions":{"type":"number","description":"Trail commissions"},"loanToIncome":{"type":"number","description":"Loan to income ratio"},"weightedAverageRate":{"type":"number","description":"Weighted average rate"},"dealVelocity":{"type":"number","description":"Deal velocity"},"timelineWidgets":{"description":"Timeline widgets","type":"array","items":{"$ref":"#/components/schemas/TimelineWidgetDto"}}},"required":["totalClients","activeLoans","totalLoanValue","averageLoanSize","totalCommissions","trailCommissions","loanToIncome","weightedAverageRate","dealVelocity","timelineWidgets"]},"TimelineWidgetDto":{"type":"object","properties":{"totalProperties":{"type":"number","description":"Total properties"},"clientsLessThan80PercentLvr":{"type":"number","description":"Clients with less than 80% LVR"},"propertiesLessThan80PercentLvr":{"type":"number","description":"Properties with less than 80% LVR"},"buyingEventsInNtm":{"type":"number","description":"Buying events in NTM (Next Twelve Months)"},"refinancingeventsInNtm":{"type":"number","description":"Refinancing events in NTM (Next Twelve Months)"}},"required":["totalProperties","clientsLessThan80PercentLvr","propertiesLessThan80PercentLvr","buyingEventsInNtm","refinancingeventsInNtm"]},"BrokerDashboardDealFlowDto":{"type":"object","properties":{"newProperties":{"type":"number","description":"New properties count"},"newPropertiesValue":{"type":"number","description":"New properties value"},"totalVolumeMonth":{"type":"number","description":"Total volume for the month"},"totalVolumeByMonth":{"type":"array","description":"Last 12 months of BROKER_M32 (new loan volume), one bar per month. Summed across the broker's clients the same way activeLoans sums BROKER_M14.","items":{"type":"object","properties":{"month":{"type":"string"},"value":{"type":"number"}}}},"upfrontCommissionMonth":{"type":"number","description":"Upfront commission for the month"},"trailCommissionMonth":{"type":"number","description":"Trail commission for the month"},"totalCommissionMonth":{"type":"number","description":"Total commission for the month"}},"required":["newProperties","newPropertiesValue","totalVolumeMonth","totalVolumeByMonth","upfrontCommissionMonth","trailCommissionMonth","totalCommissionMonth"]},"BrokerDashboardOpsDto":{"type":"object","properties":{"clientReviews":{"type":"number","description":"Number of client reviews"},"meetingsBooked":{"type":"number","description":"Number of meetings booked"},"aiHoursSaved":{"type":"number","description":"AI hours saved"},"dealConversion":{"type":"number","description":"Deal conversion rate"},"daysToSettlementAvg":{"type":"number","description":"Average days to settlement"},"clientSatisfactionNps":{"type":"number","description":"Client satisfaction NPS score"},"retentionRate":{"type":"number","description":"Retention rate"}},"required":["clientReviews","meetingsBooked","aiHoursSaved","dealConversion","daysToSettlementAvg","clientSatisfactionNps","retentionRate"]},"BrokerDashboardClientPortfoliosDto":{"type":"object","properties":{"portfolioValue":{"type":"number","description":"Portfolio value"},"debtOutstanding":{"type":"number","description":"Debt outstanding"},"equity":{"type":"number","description":"Equity"},"equityAvailable80PercentLvr":{"type":"number","description":"Equity available at 80% LVR"},"offsetBalance":{"type":"number","description":"Offset balance"},"debtNetOfOffset":{"type":"number","description":"Debt net of offset"},"portfolioLvrPercent":{"type":"number","description":"Portfolio LVR percentage"},"personalAndOtherLoans":{"type":"number","description":"Personal and other loans"},"hecsOutstanding":{"type":"number","description":"HECS outstanding"}},"required":["portfolioValue","debtOutstanding","equity","equityAvailable80PercentLvr","offsetBalance","debtNetOfOffset","portfolioLvrPercent","personalAndOtherLoans","hecsOutstanding"]},"BrokerDashboardPipelineDto":{"type":"object","properties":{"depositSaversCount":{"type":"number","description":"Deposit savers count"},"ftbPreApprovalCount":{"type":"number","description":"First time buyer pre-approval count"},"firstLoanActiveClientsCount":{"type":"number","description":"First loan active clients count"},"reactivatedCount":{"type":"number","description":"Reactivated count"},"savingPercent":{"type":"number","description":"Saving percentage"},"ftbPreApprovalPercent":{"type":"number","description":"First time buyer pre-approval percentage"},"firstLoanActivePercent":{"type":"number","description":"First loan active percentage"},"reactivatedPercent":{"type":"number","description":"Reactivated percentage"}},"required":["depositSaversCount","ftbPreApprovalCount","firstLoanActiveClientsCount","reactivatedCount","savingPercent","ftbPreApprovalPercent","firstLoanActivePercent","reactivatedPercent"]},"BrokerDashboardLifetimeValueDto":{"type":"object","properties":{"ltvSavers":{"type":"number","description":"Lifetime value for savers"},"ltvActiveClients":{"type":"number","description":"Lifetime value for active clients"},"totalLtv":{"type":"number","description":"Total lifetime value"},"totalLtvByMonth":{"type":"array","description":"Last 12 months of BROKER_M73 (total LTV), one point per month. Summed across the broker's clients the same way totalVolumeByMonth sums BROKER_M32.","items":{"type":"object","properties":{"month":{"type":"string"},"value":{"type":"number"}}}},"averageLrpu":{"type":"number","description":"Average lifetime revenue per user"},"runningRetentionEngagementRate":{"type":"number","description":"Running retention engagement rate"},"retentionPercentChange":{"type":"number","description":"Retention percentage change"},"retentionImpactOnLtv":{"type":"number","description":"Retention impact on lifetime value"},"scaleAiImpact":{"type":"number","description":"Scale AI impact"}},"required":["ltvSavers","ltvActiveClients","totalLtv","totalLtvByMonth","averageLrpu","runningRetentionEngagementRate","retentionPercentChange","retentionImpactOnLtv","scaleAiImpact"]},"BrokerDashboardLoanCompositionDto":{"type":"object","properties":{"byState":{"description":"Loan composition by state","allOf":[{"$ref":"#/components/schemas/ByStateDto"}]},"byClientType":{"description":"Loan composition by client type","allOf":[{"$ref":"#/components/schemas/ByClientTypeDto"}]},"byLender":{"description":"Loan composition by lender","allOf":[{"$ref":"#/components/schemas/ByLenderDto"}]},"byDealTerms":{"description":"Loan composition by deal terms","allOf":[{"$ref":"#/components/schemas/ByDealTermsDto"}]},"byPropertyUse":{"description":"Loan composition by property use","allOf":[{"$ref":"#/components/schemas/ByPropertyUseDto"}]},"byPropertyType":{"description":"Loan composition by property type","allOf":[{"$ref":"#/components/schemas/ByPropertyTypeDto"}]}},"required":["byState","byClientType","byLender","byDealTerms","byPropertyUse","byPropertyType"]},"ByStateDto":{"type":"object","properties":{"nsw":{"type":"number","description":"New South Wales count"},"qld":{"type":"number","description":"Queensland count"},"vic":{"type":"number","description":"Victoria count"},"act":{"type":"number","description":"Australian Capital Territory count"},"tas":{"type":"number","description":"Tasmania count"},"wa":{"type":"number","description":"Western Australia count"},"sa":{"type":"number","description":"South Australia count"},"nt":{"type":"number","description":"Northern Territory count"},"total":{"type":"number","description":"Total count"}},"required":["nsw","qld","vic","act","tas","wa","sa","nt","total"]},"ByClientTypeDto":{"type":"object","properties":{"depositsaver":{"type":"number","description":"Deposit saver count"},"firstTimeBuyer":{"type":"number","description":"First time buyer count"},"firstLoan":{"type":"number","description":"First loan count"},"reactivated":{"type":"number","description":"Reactivated count"},"total":{"type":"number","description":"Total count"}},"required":["depositsaver","firstTimeBuyer","firstLoan","reactivated","total"]},"ByLenderDto":{"type":"object","properties":{"cba":{"type":"number","description":"Commonwealth Bank of Australia count"},"wbc":{"type":"number","description":"Westpac count"},"nab":{"type":"number","description":"National Australia Bank count"},"anz":{"type":"number","description":"Australia and New Zealand Banking Group count"},"mcq":{"type":"number","description":"Macquarie count"},"ing":{"type":"number","description":"ING count"},"sun":{"type":"number","description":"Suncorp count"},"boq":{"type":"number","description":"Bank of Queensland count"},"amp":{"type":"number","description":"AMP count"},"other":{"type":"number","description":"Other lenders count"},"total":{"type":"number","description":"Total count"}},"required":["cba","wbc","nab","anz","mcq","ing","sun","boq","amp","other","total"]},"ByDealTermsDto":{"type":"object","properties":{"interestOnly":{"type":"number","description":"Interest only count"},"principalAndInterest":{"type":"number","description":"Principal and interest count"},"fixed":{"type":"number","description":"Fixed rate count"},"variable":{"type":"number","description":"Variable rate count"}},"required":["interestOnly","principalAndInterest","fixed","variable"]},"ByPropertyUseDto":{"type":"object","properties":{"mainResidence":{"type":"number","description":"Main residence count"},"investment":{"type":"number","description":"Investment property count"},"total":{"type":"number","description":"Total count"}},"required":["mainResidence","investment","total"]},"ByPropertyTypeDto":{"type":"object","properties":{"house":{"type":"number","description":"House count"},"apartment":{"type":"number","description":"Apartment count"},"duplex":{"type":"number","description":"Duplex count"},"other":{"type":"number","description":"Other / unclassified security types — the complement of house + apartment + duplex (rural, vacant land, unflagged). Computed by subtraction so the block always ties to the book total (ACTUALS 'partition-by-construction', DevDocs r96)."},"total":{"type":"number","description":"Total count"}},"required":["house","apartment","duplex","other","total"]},"BrokerDashboardLoanSizeDto":{"type":"object","properties":{"byState":{"description":"Loan size by state","allOf":[{"$ref":"#/components/schemas/ByStateDto"}]},"byClientType":{"description":"Loan size by client type","allOf":[{"$ref":"#/components/schemas/ByClientTypeDto"}]},"byLender":{"description":"Loan size by lender","allOf":[{"$ref":"#/components/schemas/ByLenderDto"}]},"byDealTerms":{"description":"Loan size by deal terms","allOf":[{"$ref":"#/components/schemas/ByDealTermsDto"}]},"byPropertyUse":{"description":"Loan size by property use","allOf":[{"$ref":"#/components/schemas/ByPropertyUseDto"}]},"byPropertyType":{"description":"Loan size by property type","allOf":[{"$ref":"#/components/schemas/ByPropertyTypeDto"}]}},"required":["byState","byClientType","byLender","byDealTerms","byPropertyUse","byPropertyType"]}}}}
```

## The BrokerDashboardResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"BrokerDashboardResponseDto":{"type":"object","properties":{"userId":{"type":"string","description":"User ID the dashboard belongs to"},"date":{"type":"string","description":"Optional date used for the dashboard calculation"},"value":{"description":"Broker dashboard sections","allOf":[{"$ref":"#/components/schemas/BrokerDashboardDto"}]}},"required":["userId","value"]},"BrokerDashboardDto":{"type":"object","properties":{"keyMetrics":{"description":"Key metrics including clients, loans, commissions, and timeline widgets","allOf":[{"$ref":"#/components/schemas/BrokerDashboardMetricsDto"}]},"dealFlow":{"description":"Deal flow metrics including new properties and commissions","allOf":[{"$ref":"#/components/schemas/BrokerDashboardDealFlowDto"}]},"ops":{"description":"Operations metrics including reviews, meetings, and conversion","allOf":[{"$ref":"#/components/schemas/BrokerDashboardOpsDto"}]},"clientPortfolios":{"description":"Client portfolio metrics including value, debt, and equity","allOf":[{"$ref":"#/components/schemas/BrokerDashboardClientPortfoliosDto"}]},"pipeline":{"description":"Pipeline metrics including deposit savers and pre-approvals","allOf":[{"$ref":"#/components/schemas/BrokerDashboardPipelineDto"}]},"lifetimeValue":{"description":"Lifetime value metrics for savers and active clients","allOf":[{"$ref":"#/components/schemas/BrokerDashboardLifetimeValueDto"}]},"loanComposition":{"description":"Loan composition by state, client type, lender, and property","allOf":[{"$ref":"#/components/schemas/BrokerDashboardLoanCompositionDto"}]},"loanSizeByState":{"description":"Loan size by state, client type, lender, and property","allOf":[{"$ref":"#/components/schemas/BrokerDashboardLoanSizeDto"}]}},"required":["keyMetrics","dealFlow","ops","clientPortfolios","pipeline","lifetimeValue","loanComposition","loanSizeByState"]},"BrokerDashboardMetricsDto":{"type":"object","properties":{"totalClients":{"type":"number","description":"Total number of clients"},"activeLoans":{"type":"number","description":"Number of active loans"},"totalLoanValue":{"type":"number","description":"Total loan value"},"averageLoanSize":{"type":"number","description":"Average loan size"},"totalCommissions":{"type":"number","description":"Total commissions"},"trailCommissions":{"type":"number","description":"Trail commissions"},"loanToIncome":{"type":"number","description":"Loan to income ratio"},"weightedAverageRate":{"type":"number","description":"Weighted average rate"},"dealVelocity":{"type":"number","description":"Deal velocity"},"timelineWidgets":{"description":"Timeline widgets","type":"array","items":{"$ref":"#/components/schemas/TimelineWidgetDto"}}},"required":["totalClients","activeLoans","totalLoanValue","averageLoanSize","totalCommissions","trailCommissions","loanToIncome","weightedAverageRate","dealVelocity","timelineWidgets"]},"TimelineWidgetDto":{"type":"object","properties":{"totalProperties":{"type":"number","description":"Total properties"},"clientsLessThan80PercentLvr":{"type":"number","description":"Clients with less than 80% LVR"},"propertiesLessThan80PercentLvr":{"type":"number","description":"Properties with less than 80% LVR"},"buyingEventsInNtm":{"type":"number","description":"Buying events in NTM (Next Twelve Months)"},"refinancingeventsInNtm":{"type":"number","description":"Refinancing events in NTM (Next Twelve Months)"}},"required":["totalProperties","clientsLessThan80PercentLvr","propertiesLessThan80PercentLvr","buyingEventsInNtm","refinancingeventsInNtm"]},"BrokerDashboardDealFlowDto":{"type":"object","properties":{"newProperties":{"type":"number","description":"New properties count"},"newPropertiesValue":{"type":"number","description":"New properties value"},"totalVolumeMonth":{"type":"number","description":"Total volume for the month"},"totalVolumeByMonth":{"type":"array","description":"Last 12 months of BROKER_M32 (new loan volume), one bar per month. Summed across the broker's clients the same way activeLoans sums BROKER_M14.","items":{"type":"object","properties":{"month":{"type":"string"},"value":{"type":"number"}}}},"upfrontCommissionMonth":{"type":"number","description":"Upfront commission for the month"},"trailCommissionMonth":{"type":"number","description":"Trail commission for the month"},"totalCommissionMonth":{"type":"number","description":"Total commission for the month"}},"required":["newProperties","newPropertiesValue","totalVolumeMonth","totalVolumeByMonth","upfrontCommissionMonth","trailCommissionMonth","totalCommissionMonth"]},"BrokerDashboardOpsDto":{"type":"object","properties":{"clientReviews":{"type":"number","description":"Number of client reviews"},"meetingsBooked":{"type":"number","description":"Number of meetings booked"},"aiHoursSaved":{"type":"number","description":"AI hours saved"},"dealConversion":{"type":"number","description":"Deal conversion rate"},"daysToSettlementAvg":{"type":"number","description":"Average days to settlement"},"clientSatisfactionNps":{"type":"number","description":"Client satisfaction NPS score"},"retentionRate":{"type":"number","description":"Retention rate"}},"required":["clientReviews","meetingsBooked","aiHoursSaved","dealConversion","daysToSettlementAvg","clientSatisfactionNps","retentionRate"]},"BrokerDashboardClientPortfoliosDto":{"type":"object","properties":{"portfolioValue":{"type":"number","description":"Portfolio value"},"debtOutstanding":{"type":"number","description":"Debt outstanding"},"equity":{"type":"number","description":"Equity"},"equityAvailable80PercentLvr":{"type":"number","description":"Equity available at 80% LVR"},"offsetBalance":{"type":"number","description":"Offset balance"},"debtNetOfOffset":{"type":"number","description":"Debt net of offset"},"portfolioLvrPercent":{"type":"number","description":"Portfolio LVR percentage"},"personalAndOtherLoans":{"type":"number","description":"Personal and other loans"},"hecsOutstanding":{"type":"number","description":"HECS outstanding"}},"required":["portfolioValue","debtOutstanding","equity","equityAvailable80PercentLvr","offsetBalance","debtNetOfOffset","portfolioLvrPercent","personalAndOtherLoans","hecsOutstanding"]},"BrokerDashboardPipelineDto":{"type":"object","properties":{"depositSaversCount":{"type":"number","description":"Deposit savers count"},"ftbPreApprovalCount":{"type":"number","description":"First time buyer pre-approval count"},"firstLoanActiveClientsCount":{"type":"number","description":"First loan active clients count"},"reactivatedCount":{"type":"number","description":"Reactivated count"},"savingPercent":{"type":"number","description":"Saving percentage"},"ftbPreApprovalPercent":{"type":"number","description":"First time buyer pre-approval percentage"},"firstLoanActivePercent":{"type":"number","description":"First loan active percentage"},"reactivatedPercent":{"type":"number","description":"Reactivated percentage"}},"required":["depositSaversCount","ftbPreApprovalCount","firstLoanActiveClientsCount","reactivatedCount","savingPercent","ftbPreApprovalPercent","firstLoanActivePercent","reactivatedPercent"]},"BrokerDashboardLifetimeValueDto":{"type":"object","properties":{"ltvSavers":{"type":"number","description":"Lifetime value for savers"},"ltvActiveClients":{"type":"number","description":"Lifetime value for active clients"},"totalLtv":{"type":"number","description":"Total lifetime value"},"totalLtvByMonth":{"type":"array","description":"Last 12 months of BROKER_M73 (total LTV), one point per month. Summed across the broker's clients the same way totalVolumeByMonth sums BROKER_M32.","items":{"type":"object","properties":{"month":{"type":"string"},"value":{"type":"number"}}}},"averageLrpu":{"type":"number","description":"Average lifetime revenue per user"},"runningRetentionEngagementRate":{"type":"number","description":"Running retention engagement rate"},"retentionPercentChange":{"type":"number","description":"Retention percentage change"},"retentionImpactOnLtv":{"type":"number","description":"Retention impact on lifetime value"},"scaleAiImpact":{"type":"number","description":"Scale AI impact"}},"required":["ltvSavers","ltvActiveClients","totalLtv","totalLtvByMonth","averageLrpu","runningRetentionEngagementRate","retentionPercentChange","retentionImpactOnLtv","scaleAiImpact"]},"BrokerDashboardLoanCompositionDto":{"type":"object","properties":{"byState":{"description":"Loan composition by state","allOf":[{"$ref":"#/components/schemas/ByStateDto"}]},"byClientType":{"description":"Loan composition by client type","allOf":[{"$ref":"#/components/schemas/ByClientTypeDto"}]},"byLender":{"description":"Loan composition by lender","allOf":[{"$ref":"#/components/schemas/ByLenderDto"}]},"byDealTerms":{"description":"Loan composition by deal terms","allOf":[{"$ref":"#/components/schemas/ByDealTermsDto"}]},"byPropertyUse":{"description":"Loan composition by property use","allOf":[{"$ref":"#/components/schemas/ByPropertyUseDto"}]},"byPropertyType":{"description":"Loan composition by property type","allOf":[{"$ref":"#/components/schemas/ByPropertyTypeDto"}]}},"required":["byState","byClientType","byLender","byDealTerms","byPropertyUse","byPropertyType"]},"ByStateDto":{"type":"object","properties":{"nsw":{"type":"number","description":"New South Wales count"},"qld":{"type":"number","description":"Queensland count"},"vic":{"type":"number","description":"Victoria count"},"act":{"type":"number","description":"Australian Capital Territory count"},"tas":{"type":"number","description":"Tasmania count"},"wa":{"type":"number","description":"Western Australia count"},"sa":{"type":"number","description":"South Australia count"},"nt":{"type":"number","description":"Northern Territory count"},"total":{"type":"number","description":"Total count"}},"required":["nsw","qld","vic","act","tas","wa","sa","nt","total"]},"ByClientTypeDto":{"type":"object","properties":{"depositsaver":{"type":"number","description":"Deposit saver count"},"firstTimeBuyer":{"type":"number","description":"First time buyer count"},"firstLoan":{"type":"number","description":"First loan count"},"reactivated":{"type":"number","description":"Reactivated count"},"total":{"type":"number","description":"Total count"}},"required":["depositsaver","firstTimeBuyer","firstLoan","reactivated","total"]},"ByLenderDto":{"type":"object","properties":{"cba":{"type":"number","description":"Commonwealth Bank of Australia count"},"wbc":{"type":"number","description":"Westpac count"},"nab":{"type":"number","description":"National Australia Bank count"},"anz":{"type":"number","description":"Australia and New Zealand Banking Group count"},"mcq":{"type":"number","description":"Macquarie count"},"ing":{"type":"number","description":"ING count"},"sun":{"type":"number","description":"Suncorp count"},"boq":{"type":"number","description":"Bank of Queensland count"},"amp":{"type":"number","description":"AMP count"},"other":{"type":"number","description":"Other lenders count"},"total":{"type":"number","description":"Total count"}},"required":["cba","wbc","nab","anz","mcq","ing","sun","boq","amp","other","total"]},"ByDealTermsDto":{"type":"object","properties":{"interestOnly":{"type":"number","description":"Interest only count"},"principalAndInterest":{"type":"number","description":"Principal and interest count"},"fixed":{"type":"number","description":"Fixed rate count"},"variable":{"type":"number","description":"Variable rate count"}},"required":["interestOnly","principalAndInterest","fixed","variable"]},"ByPropertyUseDto":{"type":"object","properties":{"mainResidence":{"type":"number","description":"Main residence count"},"investment":{"type":"number","description":"Investment property count"},"total":{"type":"number","description":"Total count"}},"required":["mainResidence","investment","total"]},"ByPropertyTypeDto":{"type":"object","properties":{"house":{"type":"number","description":"House count"},"apartment":{"type":"number","description":"Apartment count"},"duplex":{"type":"number","description":"Duplex count"},"other":{"type":"number","description":"Other / unclassified security types — the complement of house + apartment + duplex (rural, vacant land, unflagged). Computed by subtraction so the block always ties to the book total (ACTUALS 'partition-by-construction', DevDocs r96)."},"total":{"type":"number","description":"Total count"}},"required":["house","apartment","duplex","other","total"]},"BrokerDashboardLoanSizeDto":{"type":"object","properties":{"byState":{"description":"Loan size by state","allOf":[{"$ref":"#/components/schemas/ByStateDto"}]},"byClientType":{"description":"Loan size by client type","allOf":[{"$ref":"#/components/schemas/ByClientTypeDto"}]},"byLender":{"description":"Loan size by lender","allOf":[{"$ref":"#/components/schemas/ByLenderDto"}]},"byDealTerms":{"description":"Loan size by deal terms","allOf":[{"$ref":"#/components/schemas/ByDealTermsDto"}]},"byPropertyUse":{"description":"Loan size by property use","allOf":[{"$ref":"#/components/schemas/ByPropertyUseDto"}]},"byPropertyType":{"description":"Loan size by property type","allOf":[{"$ref":"#/components/schemas/ByPropertyTypeDto"}]}},"required":["byState","byClientType","byLender","byDealTerms","byPropertyUse","byPropertyType"]}}}}
```

## The ConnectGoalDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ConnectGoalDto":{"type":"object","properties":{"strategyId":{"type":"string","description":"The id of the strategy"},"userId":{"type":"string","description":"The id of the user"},"id":{"type":"string","description":"The id of the goal"},"goalType":{"type":"string","description":"The type of goal","enum":["PORTFOLIO_VALUE","DEBT","EQUITY","EQUITY_AVAILABLE","ANNUAL_CASHFLOW","PROCEEDS_FROM_SALE"]},"startDate":{"format":"date-time","type":"string","description":"The start date of the goal"},"targetValue":{"type":"number","description":"The target value of the goal"},"endDate":{"format":"date-time","type":"string","description":"The end date of the goal","nullable":true}}}}}}
```

## The MeetingTriggerDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"MeetingTriggerDto":{"type":"object","properties":{"strategyId":{"type":"string","description":"The id of the strategy"},"userId":{"type":"string","description":"The id of the user"},"id":{"type":"string","description":"The id of the trigger"},"startDate":{"format":"date-time","type":"string","description":"The start date of the trigger"},"lvrPercent":{"type":"number","description":"The target percent of the tri, e.g. 70% is 0.7"},"monthsFromGoal":{"type":"number","description":"Months from the goal trigger"},"endDate":{"format":"date-time","type":"string","description":"The end date of the trigger","nullable":true}}}}}}
```

## The ConnectLoanDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ConnectLoanDto":{"type":"object","properties":{"loanIndex":{"type":"number","description":"Canonical zero-based loan input table index"},"debt":{"type":"number","description":"Total properties"},"offsetBalance":{"type":"number","description":"Offset Balance"},"debtNetOfOffset":{"type":"number","description":"Debt (Net of Offset)"},"repaymentTerms":{"type":"number","description":"Repayment Terms"},"interestTerms":{"type":"number","description":"Interest Terms"},"fixedRate":{"type":"number","description":"Fixed rate"},"appliedRate":{"type":"number","description":"Applied rate"},"lender":{"type":"string","description":"Lender"},"state":{"type":"string","description":"State"},"clientType":{"type":"string","description":"Client Type"},"propertyUse":{"type":"number","description":"Property Use"},"propertyType":{"type":"string","description":"Property Type"},"upfrontCommission":{"type":"number","description":"Upfront commission"},"trailCommission":{"type":"number","description":"Trail commission"},"interestRevenueAndFinancingFees":{"type":"number","description":"Interest revenue & financing fees"},"expensedLMI":{"type":"number","description":"Expensed LMI"},"variableRate":{"type":"number","description":"Variable rate"},"loanVariableRate":{"type":"number","description":"Loan variable rates"},"loanBalance":{"type":"number","description":"Loan balance"},"loanBalancePercent":{"type":"number","description":"Loan balance percent"}},"required":["debt","offsetBalance","debtNetOfOffset","repaymentTerms","interestTerms","fixedRate","appliedRate","lender","state","clientType","propertyUse","propertyType","upfrontCommission","trailCommission","interestRevenueAndFinancingFees","expensedLMI","variableRate","loanVariableRate","loanBalance","loanBalancePercent"]}}}}
```

## The UpdateExpenseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"UpdateExpenseDto":{"type":"object","properties":{"date":{"format":"date-time","type":"string","default":"2026-10-09T07:16:46.714Z"},"endDate":{"format":"date-time","type":"string","default":"2026-10-09T07:16:46.714Z"},"amount":{"type":"number"},"name":{"type":"string","nullable":true},"frequency":{"type":"string","enum":["WEEKLY","MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUAL","ANNUAL","ONE_OFF"],"default":"MONTHLY"},"propertyId":{"type":"string","nullable":true},"type":{"type":"string","nullable":true,"enum":["LIVING_EXPENSES","COUNCIL_RATES","BODY_CORPORATE_FEES","WATER_AND_ELECTRICITY","MANAGEMENT_FEES","LANDLORDS_INSURANCE","BUILDING_INSURANCE","OFFSET_ACCOUNT_FEE","HECS_HELP_LOAN","OTHERS"]}}}}}}
```

## The StrategyDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"StrategyDto":{"type":"object","properties":{"id":{"type":"string","description":"Strategy identifier"},"name":{"type":"string","description":"Strategy name"},"createdAt":{"type":"string","description":"When strategy was created","format":"date-time"},"updatedAt":{"type":"string","description":"When strategy was last updated","format":"date-time"}},"required":["id","name","createdAt","updatedAt"]}}}}
```

## The StrategyListResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"StrategyListResponseDto":{"type":"object","properties":{"subControlCentres":{"description":"Array of sub-strategies/control centres","type":"array","items":{"$ref":"#/components/schemas/StrategyDto"}}},"required":["subControlCentres"]},"StrategyDto":{"type":"object","properties":{"id":{"type":"string","description":"Strategy identifier"},"name":{"type":"string","description":"Strategy name"},"createdAt":{"type":"string","description":"When strategy was created","format":"date-time"},"updatedAt":{"type":"string","description":"When strategy was last updated","format":"date-time"}},"required":["id","name","createdAt","updatedAt"]}}}}
```

## The UpdateStrategyDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"UpdateStrategyDto":{"type":"object","properties":{}}}}}
```

## The PropertyOverviewDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PropertyOverviewDto":{"type":"object","properties":{"date":{"type":"string","description":"Date for this historical value","format":"date"},"value":{"type":"number","description":"Property value at this date"},"avmValue":{"type":"number","description":"AVM value at this date"},"percentChange":{"type":"number","description":"Percentage change from previous period"},"appraisedValue":{"type":"number","description":"Appraised value at this date"}},"required":["date","value","avmValue","percentChange","appraisedValue"]}}}}
```

## The PropertyHistoryDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PropertyHistoryDto":{"type":"object","properties":{"date":{"type":"string","description":"Date for this historical value","format":"date"},"value":{"type":"number","description":"Property value at this date"},"avmValue":{"type":"number","description":"AVM value at this date"},"percentChange":{"type":"number","description":"Percentage change from previous period"},"appraisedValue":{"type":"number","description":"Appraised value at this date"}},"required":["date","value","avmValue","percentChange","appraisedValue"]}}}}
```

## The RentDetailDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"RentDetailDto":{"type":"object","properties":{"monthly":{"type":"number","description":"Monthly rental income"},"grossYield":{"type":"number","description":"Gross rental yield (percentage)"}},"required":["monthly","grossYield"]}}}}
```

## The NoiDetailDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"NoiDetailDto":{"type":"object","properties":{"monthly":{"type":"number","description":"Monthly net operating income"},"netYield":{"type":"number","description":"Net yield (percentage)"}},"required":["monthly","netYield"]}}}}
```

## The CashDetailDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CashDetailDto":{"type":"object","properties":{"monthly":{"type":"number","description":"Monthly cash amount"},"profitMargin":{"type":"number","description":"Profit margin (percentage)"}},"required":["monthly","profitMargin"]}}}}
```

## The CashflowDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CashflowDto":{"type":"object","properties":{"netCashflow":{"type":"number","description":"Net monthly cashflow"},"annualProjection":{"type":"number","description":"Projected annual cashflow"},"rentalIncome":{"type":"number","description":"Total rental income"},"netCashflowPercent":{"type":"number","description":"Net cashflow as percentage"},"operatingExpenses":{"type":"number","description":"Operating expenses"},"debtService":{"type":"number","description":"Debt service payments"},"rent":{"description":"Rent details","allOf":[{"$ref":"#/components/schemas/RentDetailDto"}]},"noi":{"description":"Net operating income details","allOf":[{"$ref":"#/components/schemas/NoiDetailDto"}]},"cash":{"description":"Cash details","allOf":[{"$ref":"#/components/schemas/CashDetailDto"}]}},"required":["netCashflow","annualProjection","rentalIncome","operatingExpenses","debtService","rent","noi","cash"]},"RentDetailDto":{"type":"object","properties":{"monthly":{"type":"number","description":"Monthly rental income"},"grossYield":{"type":"number","description":"Gross rental yield (percentage)"}},"required":["monthly","grossYield"]},"NoiDetailDto":{"type":"object","properties":{"monthly":{"type":"number","description":"Monthly net operating income"},"netYield":{"type":"number","description":"Net yield (percentage)"}},"required":["monthly","netYield"]},"CashDetailDto":{"type":"object","properties":{"monthly":{"type":"number","description":"Monthly cash amount"},"profitMargin":{"type":"number","description":"Profit margin (percentage)"}},"required":["monthly","profitMargin"]}}}}
```

## The PaymentDetailDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PaymentDetailDto":{"type":"object","properties":{"monthly":{"type":"number","description":"Monthly payment amount"},"annually":{"type":"number","description":"Annual payment amount"}},"required":["monthly","annually"]}}}}
```

## The PaybackDetailDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PaybackDetailDto":{"type":"object","properties":{"date":{"type":"string","description":"Date of debt payback","format":"date"},"years":{"type":"number","description":"Years to pay off debt"}},"required":["date","years"]}}}}
```

## The MonthlyPaymentDetailDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"MonthlyPaymentDetailDto":{"type":"object","properties":{"total":{"type":"number","description":"Total monthly payment"},"interest":{"type":"number","description":"Interest payment amount"},"principal":{"type":"number","description":"Principal payment amount"},"interestOffset":{"type":"number","description":"Interest offset amount"}},"required":["total","interest","principal","interestOffset"]}}}}
```

## The FundingDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"FundingDto":{"type":"object","properties":{"equity":{"type":"number","description":"Total equity in portfolio"},"debt":{"type":"number","description":"Total debt in portfolio"},"lvr":{"type":"number","description":"Loan-to-Value Ratio (percentage)"},"equityAvailable":{"type":"number","description":"Available equity that can be accessed"},"repaid":{"type":"number","description":"Principal repaid to date"},"payment":{"description":"Total loan payment details","allOf":[{"$ref":"#/components/schemas/PaymentDetailDto"}]},"interest":{"description":"Interest payment details","allOf":[{"$ref":"#/components/schemas/PaymentDetailDto"}]},"principal":{"description":"Principal payment details","allOf":[{"$ref":"#/components/schemas/PaymentDetailDto"}]},"debtPayback":{"description":"Debt payback details","allOf":[{"$ref":"#/components/schemas/PaybackDetailDto"}]},"equityPayback":{"description":"Equity payback details","allOf":[{"$ref":"#/components/schemas/PaybackDetailDto"}]},"monthlyPayment":{"description":"Monthly payment details","allOf":[{"$ref":"#/components/schemas/MonthlyPaymentDetailDto"}]}},"required":["equity","debt","lvr","equityAvailable","repaid","payment","interest","principal","debtPayback","equityPayback","monthlyPayment"]},"PaymentDetailDto":{"type":"object","properties":{"monthly":{"type":"number","description":"Monthly payment amount"},"annually":{"type":"number","description":"Annual payment amount"}},"required":["monthly","annually"]},"PaybackDetailDto":{"type":"object","properties":{"date":{"type":"string","description":"Date of debt payback","format":"date"},"years":{"type":"number","description":"Years to pay off debt"}},"required":["date","years"]},"MonthlyPaymentDetailDto":{"type":"object","properties":{"total":{"type":"number","description":"Total monthly payment"},"interest":{"type":"number","description":"Interest payment amount"},"principal":{"type":"number","description":"Principal payment amount"},"interestOffset":{"type":"number","description":"Interest offset amount"}},"required":["total","interest","principal","interestOffset"]}}}}
```

## The ValueTargetDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ValueTargetDto":{"type":"object","properties":{"value":{"type":"number","description":"Value target"},"years":{"type":"number","description":"Years to reach value target"}},"required":["value","years"]}}}}
```

## The GrowthMetricDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"GrowthMetricDto":{"type":"object","properties":{"value":{"type":"number","description":"Growth value in dollars"},"percent":{"type":"number","description":"Growth percentage"},"percentPerYear":{"type":"number","description":"Annualized growth percentage"}},"required":["value","percent","percentPerYear"]}}}}
```

## The GrowthAndReturnsDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"GrowthAndReturnsDto":{"type":"object","properties":{"valueTarget":{"description":"Value target","allOf":[{"$ref":"#/components/schemas/ValueTargetDto"}]},"capitalGrowth":{"description":"Capital growth metrics","allOf":[{"$ref":"#/components/schemas/GrowthMetricDto"}]},"equityGrowth":{"description":"Equity growth metrics","allOf":[{"$ref":"#/components/schemas/GrowthMetricDto"}]},"equityAvailableTarget":{"description":"Equity available target","allOf":[{"$ref":"#/components/schemas/ValueTargetDto"}]}},"required":["valueTarget","capitalGrowth","equityGrowth","equityAvailableTarget"]},"ValueTargetDto":{"type":"object","properties":{"value":{"type":"number","description":"Value target"},"years":{"type":"number","description":"Years to reach value target"}},"required":["value","years"]},"GrowthMetricDto":{"type":"object","properties":{"value":{"type":"number","description":"Growth value in dollars"},"percent":{"type":"number","description":"Growth percentage"},"percentPerYear":{"type":"number","description":"Annualized growth percentage"}},"required":["value","percent","percentPerYear"]}}}}
```

## The CgtPayableDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CgtPayableDto":{"type":"object","properties":{"value":{"type":"number","description":"CGT payable value"},"effectiveTaxRate":{"type":"number","description":"Effective tax rate"}},"required":["value","effectiveTaxRate"]}}}}
```

## The UnrealisedCapitalGainDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"UnrealisedCapitalGainDto":{"type":"object","properties":{"value":{"type":"number","description":"Unrealised capital gain value"},"percentPerYear":{"type":"number","description":"Unrealised capital gain percentage per year"}},"required":["value","percentPerYear"]}}}}
```

## The TaxDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"TaxDto":{"type":"object","properties":{"year":{"type":"number","description":"Year"},"saved":{"type":"number","description":"Saved tax"},"cgtPayable":{"description":"CGT payable","allOf":[{"$ref":"#/components/schemas/CgtPayableDto"}]},"taxableIncome":{"type":"number","description":"Taxable income from properties"},"negativeGearing":{"type":"number","description":"Negative gearing"},"positiveGearing":{"type":"number","description":"Positive gearing"},"unrealisedCapitalGain":{"description":"Unrealised capital gain","allOf":[{"$ref":"#/components/schemas/UnrealisedCapitalGainDto"}]}},"required":["year","saved","cgtPayable","taxableIncome","negativeGearing","positiveGearing","unrealisedCapitalGain"]},"CgtPayableDto":{"type":"object","properties":{"value":{"type":"number","description":"CGT payable value"},"effectiveTaxRate":{"type":"number","description":"Effective tax rate"}},"required":["value","effectiveTaxRate"]},"UnrealisedCapitalGainDto":{"type":"object","properties":{"value":{"type":"number","description":"Unrealised capital gain value"},"percentPerYear":{"type":"number","description":"Unrealised capital gain percentage per year"}},"required":["value","percentPerYear"]}}}}
```

## The KeyMetricsDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"KeyMetricsDto":{"type":"object","properties":{"dcr":{"type":"number","description":"Debt Coverage Ratio"},"grm":{"type":"number","description":"Gross Rent Multiplier"},"icr":{"type":"number","description":"Interest Coverage Ratio"},"nrm":{"type":"number","description":"Net Rent Multiplier"},"roe":{"type":"number","description":"Return on Equity (percentage)"},"roi":{"type":"number","description":"Return on Investment (percentage)"},"cocr":{"type":"number","description":"Cost of Capital Ratio"},"moic":{"type":"number","description":"Money on Money Ratio"},"rodc":{"type":"number","description":"Return on Development Capital"},"debtYield":{"type":"number","description":"Debt Yield (percentage)"},"equityIrr":{"type":"number","description":"Equity Internal Rate of Return (percentage)"}},"required":["dcr","grm","icr","nrm","roe","roi","cocr","moic","rodc","debtYield","equityIrr"]}}}}
```

## The PortfolioOverviewResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PortfolioOverviewResponseDto":{"type":"object","properties":{"properties":{"description":"Array of properties in the portfolio","type":"array","items":{"$ref":"#/components/schemas/PropertyOverviewDto"}},"history":{"description":"Portfolio-wide value history","type":"array","items":{"$ref":"#/components/schemas/PropertyHistoryDto"}},"cashflow":{"description":"Portfolio cashflow metrics","allOf":[{"$ref":"#/components/schemas/CashflowDto"}]},"funding":{"description":"Portfolio funding position","allOf":[{"$ref":"#/components/schemas/FundingDto"}]},"growthAndReturns":{"description":"Growth and returns metrics","allOf":[{"$ref":"#/components/schemas/GrowthAndReturnsDto"}]},"tax":{"description":"Tax position and benefits","allOf":[{"$ref":"#/components/schemas/TaxDto"}]},"keyMetrics":{"description":"Key performance metrics","allOf":[{"$ref":"#/components/schemas/KeyMetricsDto"}]}},"required":["properties","history","cashflow","funding","growthAndReturns","tax","keyMetrics"]},"PropertyOverviewDto":{"type":"object","properties":{"date":{"type":"string","description":"Date for this historical value","format":"date"},"value":{"type":"number","description":"Property value at this date"},"avmValue":{"type":"number","description":"AVM value at this date"},"percentChange":{"type":"number","description":"Percentage change from previous period"},"appraisedValue":{"type":"number","description":"Appraised value at this date"}},"required":["date","value","avmValue","percentChange","appraisedValue"]},"PropertyHistoryDto":{"type":"object","properties":{"date":{"type":"string","description":"Date for this historical value","format":"date"},"value":{"type":"number","description":"Property value at this date"},"avmValue":{"type":"number","description":"AVM value at this date"},"percentChange":{"type":"number","description":"Percentage change from previous period"},"appraisedValue":{"type":"number","description":"Appraised value at this date"}},"required":["date","value","avmValue","percentChange","appraisedValue"]},"CashflowDto":{"type":"object","properties":{"netCashflow":{"type":"number","description":"Net monthly cashflow"},"annualProjection":{"type":"number","description":"Projected annual cashflow"},"rentalIncome":{"type":"number","description":"Total rental income"},"netCashflowPercent":{"type":"number","description":"Net cashflow as percentage"},"operatingExpenses":{"type":"number","description":"Operating expenses"},"debtService":{"type":"number","description":"Debt service payments"},"rent":{"description":"Rent details","allOf":[{"$ref":"#/components/schemas/RentDetailDto"}]},"noi":{"description":"Net operating income details","allOf":[{"$ref":"#/components/schemas/NoiDetailDto"}]},"cash":{"description":"Cash details","allOf":[{"$ref":"#/components/schemas/CashDetailDto"}]}},"required":["netCashflow","annualProjection","rentalIncome","operatingExpenses","debtService","rent","noi","cash"]},"RentDetailDto":{"type":"object","properties":{"monthly":{"type":"number","description":"Monthly rental income"},"grossYield":{"type":"number","description":"Gross rental yield (percentage)"}},"required":["monthly","grossYield"]},"NoiDetailDto":{"type":"object","properties":{"monthly":{"type":"number","description":"Monthly net operating income"},"netYield":{"type":"number","description":"Net yield (percentage)"}},"required":["monthly","netYield"]},"CashDetailDto":{"type":"object","properties":{"monthly":{"type":"number","description":"Monthly cash amount"},"profitMargin":{"type":"number","description":"Profit margin (percentage)"}},"required":["monthly","profitMargin"]},"FundingDto":{"type":"object","properties":{"equity":{"type":"number","description":"Total equity in portfolio"},"debt":{"type":"number","description":"Total debt in portfolio"},"lvr":{"type":"number","description":"Loan-to-Value Ratio (percentage)"},"equityAvailable":{"type":"number","description":"Available equity that can be accessed"},"repaid":{"type":"number","description":"Principal repaid to date"},"payment":{"description":"Total loan payment details","allOf":[{"$ref":"#/components/schemas/PaymentDetailDto"}]},"interest":{"description":"Interest payment details","allOf":[{"$ref":"#/components/schemas/PaymentDetailDto"}]},"principal":{"description":"Principal payment details","allOf":[{"$ref":"#/components/schemas/PaymentDetailDto"}]},"debtPayback":{"description":"Debt payback details","allOf":[{"$ref":"#/components/schemas/PaybackDetailDto"}]},"equityPayback":{"description":"Equity payback details","allOf":[{"$ref":"#/components/schemas/PaybackDetailDto"}]},"monthlyPayment":{"description":"Monthly payment details","allOf":[{"$ref":"#/components/schemas/MonthlyPaymentDetailDto"}]}},"required":["equity","debt","lvr","equityAvailable","repaid","payment","interest","principal","debtPayback","equityPayback","monthlyPayment"]},"PaymentDetailDto":{"type":"object","properties":{"monthly":{"type":"number","description":"Monthly payment amount"},"annually":{"type":"number","description":"Annual payment amount"}},"required":["monthly","annually"]},"PaybackDetailDto":{"type":"object","properties":{"date":{"type":"string","description":"Date of debt payback","format":"date"},"years":{"type":"number","description":"Years to pay off debt"}},"required":["date","years"]},"MonthlyPaymentDetailDto":{"type":"object","properties":{"total":{"type":"number","description":"Total monthly payment"},"interest":{"type":"number","description":"Interest payment amount"},"principal":{"type":"number","description":"Principal payment amount"},"interestOffset":{"type":"number","description":"Interest offset amount"}},"required":["total","interest","principal","interestOffset"]},"GrowthAndReturnsDto":{"type":"object","properties":{"valueTarget":{"description":"Value target","allOf":[{"$ref":"#/components/schemas/ValueTargetDto"}]},"capitalGrowth":{"description":"Capital growth metrics","allOf":[{"$ref":"#/components/schemas/GrowthMetricDto"}]},"equityGrowth":{"description":"Equity growth metrics","allOf":[{"$ref":"#/components/schemas/GrowthMetricDto"}]},"equityAvailableTarget":{"description":"Equity available target","allOf":[{"$ref":"#/components/schemas/ValueTargetDto"}]}},"required":["valueTarget","capitalGrowth","equityGrowth","equityAvailableTarget"]},"ValueTargetDto":{"type":"object","properties":{"value":{"type":"number","description":"Value target"},"years":{"type":"number","description":"Years to reach value target"}},"required":["value","years"]},"GrowthMetricDto":{"type":"object","properties":{"value":{"type":"number","description":"Growth value in dollars"},"percent":{"type":"number","description":"Growth percentage"},"percentPerYear":{"type":"number","description":"Annualized growth percentage"}},"required":["value","percent","percentPerYear"]},"TaxDto":{"type":"object","properties":{"year":{"type":"number","description":"Year"},"saved":{"type":"number","description":"Saved tax"},"cgtPayable":{"description":"CGT payable","allOf":[{"$ref":"#/components/schemas/CgtPayableDto"}]},"taxableIncome":{"type":"number","description":"Taxable income from properties"},"negativeGearing":{"type":"number","description":"Negative gearing"},"positiveGearing":{"type":"number","description":"Positive gearing"},"unrealisedCapitalGain":{"description":"Unrealised capital gain","allOf":[{"$ref":"#/components/schemas/UnrealisedCapitalGainDto"}]}},"required":["year","saved","cgtPayable","taxableIncome","negativeGearing","positiveGearing","unrealisedCapitalGain"]},"CgtPayableDto":{"type":"object","properties":{"value":{"type":"number","description":"CGT payable value"},"effectiveTaxRate":{"type":"number","description":"Effective tax rate"}},"required":["value","effectiveTaxRate"]},"UnrealisedCapitalGainDto":{"type":"object","properties":{"value":{"type":"number","description":"Unrealised capital gain value"},"percentPerYear":{"type":"number","description":"Unrealised capital gain percentage per year"}},"required":["value","percentPerYear"]},"KeyMetricsDto":{"type":"object","properties":{"dcr":{"type":"number","description":"Debt Coverage Ratio"},"grm":{"type":"number","description":"Gross Rent Multiplier"},"icr":{"type":"number","description":"Interest Coverage Ratio"},"nrm":{"type":"number","description":"Net Rent Multiplier"},"roe":{"type":"number","description":"Return on Equity (percentage)"},"roi":{"type":"number","description":"Return on Investment (percentage)"},"cocr":{"type":"number","description":"Cost of Capital Ratio"},"moic":{"type":"number","description":"Money on Money Ratio"},"rodc":{"type":"number","description":"Return on Development Capital"},"debtYield":{"type":"number","description":"Debt Yield (percentage)"},"equityIrr":{"type":"number","description":"Equity Internal Rate of Return (percentage)"}},"required":["dcr","grm","icr","nrm","roe","roi","cocr","moic","rodc","debtYield","equityIrr"]}}}}
```

## The CreateGoalDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CreateGoalDto":{"type":"object","properties":{"type":{"type":"string","enum":["HOME","INVESTMENT"]},"name":{"type":"string"},"savingStyle":{"type":"string","enum":["CASH_AND_EQUITY","CASH_ONLY"]},"purchasePrice":{"type":"number"},"state":{"type":"string"},"propertyType":{"type":"string","enum":["HOUSE","DUPLEX","APARTMENT","MULTI_FAMILY","LAND","TOWNHOUSE","VILLA"]},"lotType":{"type":"string","enum":["NEW_HOME","ESTABLISHED","VACANT_LAND"]},"depositAmount":{"type":"number","default":0,"nullable":true},"depositPercent":{"type":"number","default":0,"nullable":true},"stampDuty":{"type":"number"},"lmiAmount":{"type":"number","default":0,"nullable":true},"lmiPercent":{"type":"number","default":0,"nullable":true},"otherExpenses":{"type":"number"},"totalAcquisitionCosts":{"type":"number"},"firstHomeBuyer":{"type":"boolean"}},"required":["type","name","savingStyle","purchasePrice","state","propertyType","lotType","depositAmount","depositPercent","stampDuty","lmiAmount","lmiPercent","otherExpenses","totalAcquisitionCosts","firstHomeBuyer"]}}}}
```

## The GoalResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"GoalResponseDto":{"type":"object","properties":{"id":{"type":"string","description":"Goal identifier"},"type":{"type":"string","description":"Type of goal"},"name":{"type":"string","description":"Goal name/description"},"savingStyle":{"type":"string","description":"Saving style/strategy"},"purchasePrice":{"type":"number","description":"Target purchase price"},"state":{"type":"string","description":"Property state/territory"},"propertyType":{"type":"string","description":"Property type"},"lotType":{"type":"string","description":"Land/lot type"},"depositAmount":{"type":"number","description":"Required deposit amount"},"stampDuty":{"type":"number","description":"Stamp duty amount"},"lmiAmount":{"type":"number","description":"Lenders Mortgage Insurance amount"},"otherExpenses":{"type":"number","description":"Other acquisition expenses"},"totalAcquisitionCosts":{"type":"number","description":"Total acquisition costs"},"firstHomeBuyer":{"type":"boolean","description":"Whether user is first home buyer"},"createdAt":{"type":"string","description":"When goal was created","format":"date-time"},"updatedAt":{"type":"string","description":"When goal was last updated","format":"date-time"}},"required":["id","type","name","savingStyle","purchasePrice","state","propertyType","lotType","depositAmount","stampDuty","lmiAmount","otherExpenses","totalAcquisitionCosts","firstHomeBuyer","createdAt","updatedAt"]}}}}
```

## The UpdateGoalDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"UpdateGoalDto":{"type":"object","properties":{"type":{"type":"string","enum":["HOME","INVESTMENT"]},"name":{"type":"string"},"savingStyle":{"type":"string","enum":["CASH_AND_EQUITY","CASH_ONLY"]},"purchasePrice":{"type":"number"},"state":{"type":"string"},"propertyType":{"type":"string","enum":["HOUSE","DUPLEX","APARTMENT","MULTI_FAMILY","LAND","TOWNHOUSE","VILLA"]},"lotType":{"type":"string","enum":["NEW_HOME","ESTABLISHED","VACANT_LAND"]},"depositAmount":{"type":"number","default":0,"nullable":true},"depositPercent":{"type":"number","default":0,"nullable":true},"stampDuty":{"type":"number"},"lmiAmount":{"type":"number","default":0,"nullable":true},"lmiPercent":{"type":"number","default":0,"nullable":true},"otherExpenses":{"type":"number"},"totalAcquisitionCosts":{"type":"number"},"firstHomeBuyer":{"type":"boolean"}}}}}}
```

## The GoalListResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"GoalListResponseDto":{"type":"object","properties":{"data":{"description":"Array of user goals","type":"array","items":{"$ref":"#/components/schemas/GoalResponseDto"}}},"required":["data"]},"GoalResponseDto":{"type":"object","properties":{"id":{"type":"string","description":"Goal identifier"},"type":{"type":"string","description":"Type of goal"},"name":{"type":"string","description":"Goal name/description"},"savingStyle":{"type":"string","description":"Saving style/strategy"},"purchasePrice":{"type":"number","description":"Target purchase price"},"state":{"type":"string","description":"Property state/territory"},"propertyType":{"type":"string","description":"Property type"},"lotType":{"type":"string","description":"Land/lot type"},"depositAmount":{"type":"number","description":"Required deposit amount"},"stampDuty":{"type":"number","description":"Stamp duty amount"},"lmiAmount":{"type":"number","description":"Lenders Mortgage Insurance amount"},"otherExpenses":{"type":"number","description":"Other acquisition expenses"},"totalAcquisitionCosts":{"type":"number","description":"Total acquisition costs"},"firstHomeBuyer":{"type":"boolean","description":"Whether user is first home buyer"},"createdAt":{"type":"string","description":"When goal was created","format":"date-time"},"updatedAt":{"type":"string","description":"When goal was last updated","format":"date-time"}},"required":["id","type","name","savingStyle","purchasePrice","state","propertyType","lotType","depositAmount","stampDuty","lmiAmount","otherExpenses","totalAcquisitionCosts","firstHomeBuyer","createdAt","updatedAt"]}}}}
```

## The PropertyValueDataPointDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PropertyValueDataPointDto":{"type":"object","properties":{"value":{"type":"number","description":"Property value at this point in time"},"percentChange":{"type":"number","description":"Percentage change from previous period"},"label":{"type":"string","description":"Property label/name"}},"required":["value","percentChange","label"]}}}}
```

## The PortfolioValueByPropertyDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PortfolioValueByPropertyDto":{"type":"object","properties":{"x":{"type":"string","description":"Timestamp for this data point","format":"date-time"},"properties":{"description":"Array of property values at this time","type":"array","items":{"$ref":"#/components/schemas/PropertyValueDataPointDto"}}},"required":["x","properties"]},"PropertyValueDataPointDto":{"type":"object","properties":{"value":{"type":"number","description":"Property value at this point in time"},"percentChange":{"type":"number","description":"Percentage change from previous period"},"label":{"type":"string","description":"Property label/name"}},"required":["value","percentChange","label"]}}}}
```

## The PeriodicEquityCashflowDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PeriodicEquityCashflowDto":{"type":"object","properties":{"x":{"type":"string","description":"Timestamp for this period","format":"date-time"},"inflow":{"type":"number","description":"Total cash inflow for the period"},"outflow":{"type":"number","description":"Total cash outflow for the period"},"cashflows":{"type":"number","description":"Net cashflow for the period (inflow - outflow)"},"cumulativeCashflows":{"type":"number","description":"Cumulative cashflows to date"}},"required":["x","inflow","outflow","cashflows","cumulativeCashflows"]}}}}
```

## The PreVsPostInvestmentCashflowDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PreVsPostInvestmentCashflowDto":{"type":"object","properties":{"x":{"type":"string","description":"Timestamp for this data point","format":"date-time"},"personalPlusExistingProperty":{"type":"number","description":"Cashflow with personal finances plus existing properties"},"personalOnly":{"type":"number","description":"Cashflow from personal finances only"},"personPlusNewStrategy":{"type":"number","description":"Cashflow with personal finances plus new strategy"}},"required":["x","personalPlusExistingProperty","personalOnly","personPlusNewStrategy"]}}}}
```

## The DebtVsEquityDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"DebtVsEquityDto":{"type":"object","properties":{"x":{"type":"string","description":"Timestamp for this data point","format":"date-time"},"portfolioValue":{"type":"number","description":"Total portfolio value"},"debtOutstanding":{"type":"number","description":"Outstanding debt on portfolio"},"equity":{"type":"number","description":"Total equity in portfolio"},"equityAvailable":{"type":"number","description":"Available equity that can be accessed"}},"required":["x","portfolioValue","debtOutstanding","equity","equityAvailable"]}}}}
```

## The WhoIsPayingDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"WhoIsPayingDto":{"type":"object","properties":{"x":{"type":"string","description":"Timestamp for this period","format":"date-time"},"you":{"type":"number","description":"Amount paid by property owner"},"tenant":{"type":"number","description":"Amount paid by tenant (rental income)"},"taxman":{"type":"number","description":"Amount offset by tax benefits"}},"required":["x","you","tenant","taxman"]}}}}
```

## The OperatingCashflowDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"OperatingCashflowDto":{"type":"object","properties":{"x":{"type":"string","description":"Timestamp for this period","format":"date-time"},"operatingCosts":{"type":"number","description":"Total operating costs"},"operatingIncome":{"type":"number","description":"Total operating income"},"netCashflow":{"type":"number","description":"Net operating cashflow"},"cumulative":{"type":"number","description":"Cumulative operating cashflow"}},"required":["x","operatingCosts","operatingIncome","netCashflow","cumulative"]}}}}
```

## The CashAndWealthImpactDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CashAndWealthImpactDto":{"type":"object","properties":{"x":{"type":"string","description":"Timestamp for this data point","format":"date-time"},"wealthImpact":{"type":"number","description":"Impact on overall wealth (equity growth)"},"cashImpact":{"type":"number","description":"Impact on available cash"}},"required":["x","wealthImpact","cashImpact"]}}}}
```

## The CumulativeCashflowImpactPointDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CumulativeCashflowImpactPointDto":{"type":"object","properties":{"x":{"type":"string","description":"Financial year of this point (CHARTS!H3 = DASHBOARD!H3). Same x convention as the other single-strategy series.","format":"date-time"},"personalOnly":{"type":"number","description":"CHARTS!H50 = SUM(DASHBOARD!$H$60:H60) — running total of personal cashflows (pre-tax). AUD."},"personalPlusPortfolio":{"type":"number","description":"CHARTS!H51 = SUM(DASHBOARD!$H$60:H60, DASHBOARD!$H$72:H72) — running total of personal + portfolio cashflows (pre-tax). AUD."},"personalPlusEntities":{"type":"number","description":"CHARTS!H52 = SUM(DASHBOARD!$H$60:H60, DASHBOARD!$H$74:H74); DASHBOARD!H74 = H309 (entity cashflows), read as H309. Running total of personal + entity cashflows. AUD. Zero until the entity input adapter lands; null only if the FY has no H3-matched column.","nullable":true},"total":{"type":"number","description":"CHARTS!H53 = DASHBOARD!H80 — cashflow available including offset accounts (= H93). AUD."}},"required":["x","personalOnly","personalPlusPortfolio","personalPlusEntities","total"]}}}}
```

## The LifetimeWealthImpactPointDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"LifetimeWealthImpactPointDto":{"type":"object","properties":{"x":{"type":"string","description":"Financial year of this point (CHARTS!H3 = DASHBOARD!H3). Same x convention as the other single-strategy series.","format":"date-time"},"personalOnly":{"type":"number","description":"CHARTS!H58 = H50 — cumulative personal-only cashflow. AUD."},"personalPlusPortfolio":{"type":"number","description":"CHARTS!H59 = H58 + DASHBOARD!H353 (Personal Lifetime Profit / Wealth Impact). AUD."},"relatedEntities":{"type":"number","description":"CHARTS!H60 = DASHBOARD!H290 (Total Entity Wealth = SUM(H285:H289)). Workbook label reads 'Personal + Related Entities' but the formula is the entity component alone. AUD. Zero until the entity input adapter lands."},"total":{"type":"number","description":"CHARTS!H61 = SUM(H58:H60). AUD."}},"required":["x","personalOnly","personalPlusPortfolio","relatedEntities","total"]}}}}
```

## The SingleStrategyChartResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"SingleStrategyChartResponseDto":{"type":"object","properties":{"portfolioValueByProperty":{"description":"Portfolio value breakdown by property over time","type":"array","items":{"$ref":"#/components/schemas/PortfolioValueByPropertyDto"}},"periodicEquityCashflow":{"description":"Periodic equity cashflow with inflows and outflows","type":"array","items":{"$ref":"#/components/schemas/PeriodicEquityCashflowDto"}},"preVsPostInvestmentCashflow":{"description":"Comparison of cashflow before and after investment","type":"array","items":{"$ref":"#/components/schemas/PreVsPostInvestmentCashflowDto"}},"debtVsEquity":{"description":"Debt vs equity position over time","type":"array","items":{"$ref":"#/components/schemas/DebtVsEquityDto"}},"whoIsPaying":{"description":"Breakdown of who pays for investment (owner, tenant, tax benefits)","type":"array","items":{"$ref":"#/components/schemas/WhoIsPayingDto"}},"operatingCashflow":{"description":"Operating cashflow analysis","type":"array","items":{"$ref":"#/components/schemas/OperatingCashflowDto"}},"cashAndWealthImpact":{"description":"Cash vs wealth impact comparison","type":"array","items":{"$ref":"#/components/schemas/CashAndWealthImpactDto"}},"cumulativeCashflowImpact":{"description":"CHARTS!49–53 'CUMULATIVE CASHFLOW IMPACT' — one point per financial year (same FYs as GET /v1/personal-cashflow). Values in AUD (the workbook's /$E$2 report-unit division is not applied).","type":"array","items":{"$ref":"#/components/schemas/CumulativeCashflowImpactPointDto"}},"lifetimeWealthImpact":{"description":"CHARTS!57–61 'LIFETIME WEALTH IMPACT' — one point per financial year (same FYs as GET /v1/personal-cashflow). Values in AUD.","type":"array","items":{"$ref":"#/components/schemas/LifetimeWealthImpactPointDto"}}},"required":["portfolioValueByProperty","periodicEquityCashflow","preVsPostInvestmentCashflow","debtVsEquity","whoIsPaying","operatingCashflow","cashAndWealthImpact","cumulativeCashflowImpact","lifetimeWealthImpact"]},"PortfolioValueByPropertyDto":{"type":"object","properties":{"x":{"type":"string","description":"Timestamp for this data point","format":"date-time"},"properties":{"description":"Array of property values at this time","type":"array","items":{"$ref":"#/components/schemas/PropertyValueDataPointDto"}}},"required":["x","properties"]},"PropertyValueDataPointDto":{"type":"object","properties":{"value":{"type":"number","description":"Property value at this point in time"},"percentChange":{"type":"number","description":"Percentage change from previous period"},"label":{"type":"string","description":"Property label/name"}},"required":["value","percentChange","label"]},"PeriodicEquityCashflowDto":{"type":"object","properties":{"x":{"type":"string","description":"Timestamp for this period","format":"date-time"},"inflow":{"type":"number","description":"Total cash inflow for the period"},"outflow":{"type":"number","description":"Total cash outflow for the period"},"cashflows":{"type":"number","description":"Net cashflow for the period (inflow - outflow)"},"cumulativeCashflows":{"type":"number","description":"Cumulative cashflows to date"}},"required":["x","inflow","outflow","cashflows","cumulativeCashflows"]},"PreVsPostInvestmentCashflowDto":{"type":"object","properties":{"x":{"type":"string","description":"Timestamp for this data point","format":"date-time"},"personalPlusExistingProperty":{"type":"number","description":"Cashflow with personal finances plus existing properties"},"personalOnly":{"type":"number","description":"Cashflow from personal finances only"},"personPlusNewStrategy":{"type":"number","description":"Cashflow with personal finances plus new strategy"}},"required":["x","personalPlusExistingProperty","personalOnly","personPlusNewStrategy"]},"DebtVsEquityDto":{"type":"object","properties":{"x":{"type":"string","description":"Timestamp for this data point","format":"date-time"},"portfolioValue":{"type":"number","description":"Total portfolio value"},"debtOutstanding":{"type":"number","description":"Outstanding debt on portfolio"},"equity":{"type":"number","description":"Total equity in portfolio"},"equityAvailable":{"type":"number","description":"Available equity that can be accessed"}},"required":["x","portfolioValue","debtOutstanding","equity","equityAvailable"]},"WhoIsPayingDto":{"type":"object","properties":{"x":{"type":"string","description":"Timestamp for this period","format":"date-time"},"you":{"type":"number","description":"Amount paid by property owner"},"tenant":{"type":"number","description":"Amount paid by tenant (rental income)"},"taxman":{"type":"number","description":"Amount offset by tax benefits"}},"required":["x","you","tenant","taxman"]},"OperatingCashflowDto":{"type":"object","properties":{"x":{"type":"string","description":"Timestamp for this period","format":"date-time"},"operatingCosts":{"type":"number","description":"Total operating costs"},"operatingIncome":{"type":"number","description":"Total operating income"},"netCashflow":{"type":"number","description":"Net operating cashflow"},"cumulative":{"type":"number","description":"Cumulative operating cashflow"}},"required":["x","operatingCosts","operatingIncome","netCashflow","cumulative"]},"CashAndWealthImpactDto":{"type":"object","properties":{"x":{"type":"string","description":"Timestamp for this data point","format":"date-time"},"wealthImpact":{"type":"number","description":"Impact on overall wealth (equity growth)"},"cashImpact":{"type":"number","description":"Impact on available cash"}},"required":["x","wealthImpact","cashImpact"]},"CumulativeCashflowImpactPointDto":{"type":"object","properties":{"x":{"type":"string","description":"Financial year of this point (CHARTS!H3 = DASHBOARD!H3). Same x convention as the other single-strategy series.","format":"date-time"},"personalOnly":{"type":"number","description":"CHARTS!H50 = SUM(DASHBOARD!$H$60:H60) — running total of personal cashflows (pre-tax). AUD."},"personalPlusPortfolio":{"type":"number","description":"CHARTS!H51 = SUM(DASHBOARD!$H$60:H60, DASHBOARD!$H$72:H72) — running total of personal + portfolio cashflows (pre-tax). AUD."},"personalPlusEntities":{"type":"number","description":"CHARTS!H52 = SUM(DASHBOARD!$H$60:H60, DASHBOARD!$H$74:H74); DASHBOARD!H74 = H309 (entity cashflows), read as H309. Running total of personal + entity cashflows. AUD. Zero until the entity input adapter lands; null only if the FY has no H3-matched column.","nullable":true},"total":{"type":"number","description":"CHARTS!H53 = DASHBOARD!H80 — cashflow available including offset accounts (= H93). AUD."}},"required":["x","personalOnly","personalPlusPortfolio","personalPlusEntities","total"]},"LifetimeWealthImpactPointDto":{"type":"object","properties":{"x":{"type":"string","description":"Financial year of this point (CHARTS!H3 = DASHBOARD!H3). Same x convention as the other single-strategy series.","format":"date-time"},"personalOnly":{"type":"number","description":"CHARTS!H58 = H50 — cumulative personal-only cashflow. AUD."},"personalPlusPortfolio":{"type":"number","description":"CHARTS!H59 = H58 + DASHBOARD!H353 (Personal Lifetime Profit / Wealth Impact). AUD."},"relatedEntities":{"type":"number","description":"CHARTS!H60 = DASHBOARD!H290 (Total Entity Wealth = SUM(H285:H289)). Workbook label reads 'Personal + Related Entities' but the formula is the entity component alone. AUD. Zero until the entity input adapter lands."},"total":{"type":"number","description":"CHARTS!H61 = SUM(H58:H60). AUD."}},"required":["x","personalOnly","personalPlusPortfolio","relatedEntities","total"]}}}}
```

## The PropertyDetailsDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PropertyDetailsDto":{"type":"object","properties":{"address":{"type":"string","description":"Property street address"},"suburb":{"type":"string","description":"Suburb/locality"},"state":{"type":"string","description":"State/territory"},"bedrooms":{"type":"number","description":"Number of bedrooms"},"bathrooms":{"type":"number","description":"Number of bathrooms"},"carSpaces":{"type":"number","description":"Number of car spaces"},"totalSqm":{"type":"number","description":"Total floor area in square meters"},"floorSpace":{"type":"number","description":"Total land area in square meters"},"residentialPropertyType":{"type":"string","description":"Type of residential property"},"name":{"type":"string","description":"The name of the property"},"priceEstimate":{"type":"number","description":"The price estimate of the property"},"purchasingCost":{"type":"number","description":"The purchasing cost of the property"},"rentalEstimate":{"type":"number","description":"The rental estimate of the property from Rental AVM external api(rent per week)"},"operatingExpenses":{"type":"number","description":"The Operating expense of the property from Rental AVM external api(Monthly)"},"initialLoanBalance":{"type":"number","description":"The initial loan balance of the property"},"interestRate":{"type":"number","description":"The interest rate of the property(Percentage)"},"monthlyPayment":{"type":"number","description":"The monthly payment of the property"},"portfolio":{"type":"boolean","description":"Add to portfolio"}},"required":["address","suburb","state","bedrooms","bathrooms","carSpaces","totalSqm","floorSpace","residentialPropertyType"]}}}}
```

## The StampDutyDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"StampDutyDto":{"type":"object","properties":{"exemptionOverride":{"type":"boolean","description":"Exemption override"},"stampDutyValuation":{"type":"number","description":"Stamp duty valuation"},"landValueAtPurchase":{"type":"number","description":"Land value at purchase"},"landUse":{"type":"string","description":"Land use"},"primaryResidence":{"type":"string","description":"Primary residence"},"firstHomeBuyer":{"type":"boolean","description":"First home buyer"},"lotType":{"type":"string","description":"Lot type"},"citizenshipStatus":{"type":"string","description":"Citizenship status"},"transactionMethod":{"type":"string","description":"Transaction method"},"ownershipEntity":{"type":"string","description":"Ownership entity"},"ownershipEntityType":{"type":"string","description":"Ownership entity type"},"percentOwnership":{"type":"number","description":"Percent ownership"},"isCoOwnerPartner":{"type":"boolean","description":"Is co-owner partner"},"percentOwnershipUser2":{"type":"number","description":"Percent ownership user 2"}}}}}}
```

## The AcquisitionDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"AcquisitionDto":{"type":"object","properties":{"settlementDate":{"type":"string","description":"Settlement date","format":"date-time"},"anticipatedHoldPeriod":{"type":"number"},"dateSold":{"type":"string","description":"Date property was sold/purchased","format":"date-time"},"purchasePrice":{"type":"number"}},"required":["settlementDate","dateSold"]}}}}
```

## The AcquisitionCostDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"AcquisitionCostDto":{"type":"object","properties":{"purchasePrice":{"type":"number"},"depositPercent":{"type":"number"},"depositAmount":{"type":"number"},"stampDuty":{"type":"number"},"lmiPercent":{"type":"number"},"lmiAmount":{"type":"number"},"otherExpensedClosingCosts":{"type":"number"},"capitaliseLmi":{"type":"boolean"}}}}}}
```

## The HomeLoanDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"HomeLoanDto":{"type":"object","properties":{"initialLoanBalance":{"type":"number"},"startDate":{"type":"string"},"tenor":{"type":"number"},"endDate":{"type":"string"},"currentLoanBalance":{"type":"number"},"currentOffsetAccountBalance":{"type":"number"},"currentOffsetAccountBalanceAsAtDate":{"type":"string","description":"The date when the offset account balance was recorded"},"isFixed":{"type":"boolean"},"fixedRate":{"type":"number"},"fixedPeriodStartDate":{"type":"string"},"fixedPeriodLength":{"type":"number"},"isInterestOnly":{"type":"boolean"},"interestOnlyStartDate":{"type":"string"},"interestOnlyLength":{"type":"number"},"interestOnlyEndDate":{"type":"string"},"upfrontFees":{"type":"number"},"annualFees":{"type":"number"},"hasOffsetAccount":{"type":"boolean"},"lender":{"type":"string","description":"The financial institution providing the loan"},"variableRate":{"type":"number","description":""},"upfrontCommission":{"type":"number","description":""},"trailCommission":{"type":"number","description":""},"endDateRefiOverride":{"type":"string"}},"required":["lender"]}}}}
```

## The OperationsDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"OperationsDto":{"type":"object","properties":{"weeklyRent":{"type":"number"},"occupancy":{"type":"number"},"operatingExpenses":{"type":"number"}}}}}}
```

## The ConstructionDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ConstructionDto":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for the construction"},"active":{"type":"boolean","description":"Indicates whether the construction is currently active"},"constructionStartDate":{"type":"string","description":"The start date of the construction"},"constructionLength":{"type":"string","description":"Length of the construction period"},"completionDate":{"type":"string","description":"The completion date of the construction"},"constructionCost":{"type":"number","description":"The cost of the construction"},"estimatedValueAtCompletion":{"type":"number","description":"The estimated value at the completion of the construction"}}}}}}
```

## The ConstructionLoanDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ConstructionLoanDto":{"type":"object","properties":{"constructionloanId":{"type":"string","description":"The unique identifier for the capital work or improvement"},"loanType":{"type":"string","description":"Type of the loan"},"ltc":{"type":"number","description":"Loan to Cost (LTC) ratio"},"ltv":{"type":"number","description":"Loan to Value (LTV) ratio"},"constructionInterestRate":{"type":"number","description":"Construction interest rate"},"interestReserveFunding":{"type":"string","description":"Interest reserve funding status"},"drawdownFacilityFees":{"type":"number","description":"Drawdown facility fees"},"timing":{"type":"string","description":"Timing for the construction loan"}}}}}}
```

## The RepaymentFacilityDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"RepaymentFacilityDto":{"type":"object","properties":{"financialInstitution":{"type":"string","description":"The financial institution providing the repayment facility"},"initialLoanBalance":{"type":"number","description":"The initial loan balance"},"interestOnlyLength":{"type":"number","description":"Length of the interest-only period in years"},"fixedRateLength":{"type":"string","description":"The fixed rate length"},"fixedRatePercent":{"type":"number","description":"The fixed interest rate percentage"},"startDate":{"type":"string","description":"The start date of the repayment facility"},"tenor":{"type":"number","description":"The tenor of the repayment facility"},"endDate":{"type":"string","description":"The end date of the repayment facility"}}}}}}
```

## The GrannyFlatDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"GrannyFlatDto":{"type":"object","properties":{"active":{"type":"boolean","description":"Indicates whether the granny flat is currently active"},"cost":{"type":"number","description":"Cost of constructing the granny flat"},"startDate":{"type":"string","description":"Start date of the granny flat construction"},"grannyFlatFloorSpaceRented":{"type":"number","description":"Floor Space in sqm"},"grannyFlatTotalFloorSpace":{"type":"number","description":"Total Floor Space in sqm"}}}}}}
```

## The DepreciationDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"DepreciationDto":{"type":"object","properties":{"plantAndEquipmentMethod":{"type":"string","description":"Plant and Equipment Method"},"lvaPooling":{"type":"boolean","description":"LVA Pooling"},"lcaPooling":{"type":"boolean","description":"LCA Pooling"},"capitalWorksTiming":{"type":"string","description":"Capital Works Timing"}}}}}}
```

## The ExistingCapitalWorksDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ExistingCapitalWorksDto":{"type":"object","properties":{"mostRecentCapitalWorks":{"type":"string","description":"Most recent capital works"},"yearsRemaining":{"type":"string","description":"Years remaining"},"estimatedCost":{"type":"number","description":"Estimated cost"},"estConstructionDate":{"type":"string","description":"Estimated construction date"}}}}}}
```

## The ValuationSaleDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ValuationSaleDto":{"type":"object","properties":{"mostRecentAppraisedValue":{"type":"number","description":"Most recent appraised value of the property"},"date":{"format":"date-time","type":"string","description":"Date of the valuation or sale"},"salePrice":{"type":"number","description":"Sale price of the property"},"sellingCosts":{"type":"number","description":"Selling costs associated with the sale of the property"},"primaryResidenceAtSale":{"type":"boolean","description":"Indicates whether the property is a primary residence at the time of sale"},"saleDate":{"type":"number","description":"Sale date"}}}}}}
```

## The ProjectionsAndParametersDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ProjectionsAndParametersDto":{"type":"object","properties":{"capitalGrowth":{"type":"number","description":"The capital growth amount"},"costEscalation":{"type":"number"},"revenueGrowth":{"type":"number"},"interestRate":{"type":"number"},"netRentPaidIntoOffsetAccount":{"type":"boolean"},"personalSalaryPaidIntoOffsetAccount":{"type":"boolean"},"equityInHomeGoalForCashOutRefinance":{"type":"number"},"profitOnSaleTarget":{"type":"number"},"startDate":{"type":"string"},"endDate":{"type":"string"}}}}}}
```

## The MainResidenceInputsDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"MainResidenceInputsDto":{"type":"object","properties":{"active":{"type":"boolean","description":"Indicates whether the change is active"},"currentUse":{"type":"string","description":"Current use of the property","enum":["Residence","Investment"]},"newUse":{"type":"string","description":"New use of the property","enum":["Residence","Investment"]},"date":{"type":"string","description":"The date of the change"},"years":{"type":"string","description":"The number of years for the change"},"untilSale":{"type":"boolean","description":"Indicates whether the change is until sale"},"endDate":{"type":"string","description":"The end date of the change"},"claimingNewMR":{"type":"boolean","description":"Indicates whether claiming new main residence"}},"required":["active","currentUse","newUse","date","years","untilSale","endDate","claimingNewMR"]}}}}
```

## The PropertyLoanDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PropertyLoanDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the loan"},"createdAt":{"format":"date-time","type":"string","description":"The created date of the loan"},"active":{"type":"boolean","description":"A property indicating if a loan is active or not"},"equityAvailable":{"type":"number","description":"The amount of equity available the property has"},"availableEquityRemaning":{"type":"number","description":"the avaiable equity after the loan balance"},"name":{"type":"string","description":"The name of the property"},"appraisalValueFromBank":{"type":"number","description":"The appraisal value from the bank"},"reasonForRefinancing":{"type":"string","description":"The reason for refinancing"},"dateLoanAdded":{"format":"date-time","type":"string","description":"The date the loan was added"},"startDatePortfolioAutomationTiming":{"format":"date-time","type":"string","description":"The start date of the portfolio automation timing"},"refinanceNumber":{"type":"number","description":"The refinance number"},"addingDollarsOfEquityWithdrawn":{"type":"number","description":"The adding dollars of equity withdrawn"},"dollarsOfEquityWithdrawnForInvestment":{"type":"number","description":"The dollars of equity withdrawn for investment"},"propertyInput":{"type":"string","description":"The property input"},"fixedPeriodStartDate":{"format":"date-time","type":"string","description":"The fixed period start date"},"interestOnlyPeriod":{"type":"boolean","description":"The interest only period"},"interestOnlyStartDate":{"format":"date-time","type":"string","description":"The interest only start date"},"interestOnlyLength":{"type":"number","description":"The interest only length"},"upfrontFeesAndLmiFees":{"type":"number","description":"The upfront fees and lmi fees"},"annualFees":{"type":"number","description":"The annual fees"},"endDate":{"format":"date-time","type":"string","description":"The end date of the loan"},"lender":{"type":"string","description":"The financial institution providing the loan"},"loanBalance":{"type":"number","description":"The initial loan balance"},"currentLoanBalance":{"type":"number","description":"The current (outstanding) loan balance. Falls back to loanBalance when absent."},"tenor":{"type":"number","description":"The duration of the loan in years"},"propertyTarget":{"type":"string","description":"The property target"},"startDate":{"format":"date-time","type":"string","description":"The start date of the loan"},"loanType":{"type":"string","description":"The type of the loan, either Principal & Interest or Interest Only","enum":["Principal&Interest","Interest Only"]},"propertyLoanInvestAmount":{"type":"number","description":"The amount inputted by the user when they invest into a property"},"interestRepaymentType":{"type":"string","description":"Describes the current interest repayments, either Variable or Fixed","enum":["Variable","Fixed"]},"fixedRate":{"type":"number","description":"The fixed rate amount set by the user"},"lengthOfInterestOnly":{"type":"number","description":"The length of the interest in years after the user has selected Interest Only"},"lengthOfFixedReypayment":{"type":"number","description":"The length of the interest in years after the user has selected Fixed current interest repayment"},"isAddLoan":{"type":"boolean","description":"Indicates if the loan is an add loan"},"hasOffsetAccount":{"type":"boolean","description":"Indicates if the loan has an offset account"},"currentOffsetAccountBalance":{"type":"number","description":"The current offset account balance"},"currentOffsetAccountBalanceAsAtDate":{"type":"string","description":"The date when the offset account balance was recorded"},"variableRate":{"type":"number","description":""},"upfrontCommission":{"type":"number","description":""},"trailCommission":{"type":"number","description":""},"endDateRefiOverride":{"format":"date-time","type":"string"},"startDateRefinanceLookup":{"format":"date-time","type":"string"},"dollarsOfResidualDebt":{"type":"number","description":"The residual debt of the loan"},"isFixed":{"type":"boolean","description":"Indicates if the loan is a fixed loan"},"isInterestOnly":{"type":"boolean","description":"Indicates if the loan is an interest only loan"},"refinanceArrayLookup":{"type":"number","description":"The refinance number/array lookup"},"positionInRefiArray":{"type":"number","description":"The position in the refinance array"},"debtFromRefi":{"type":"number","description":"The debt from the refinance. GET"},"equityFromRefi":{"type":"number","description":"The equity from the refinance. GET"},"loanBalanceFromRefi":{"type":"number","description":"The loan balance from the refinance. GET"},"refinanceId":{"type":"string","description":"Links this loan row to a refinanceDetails.refinanceId"}},"required":["createdAt","equityAvailable","availableEquityRemaning","name","appraisalValueFromBank","reasonForRefinancing","dateLoanAdded","startDatePortfolioAutomationTiming","refinanceNumber","addingDollarsOfEquityWithdrawn","dollarsOfEquityWithdrawnForInvestment","propertyInput","fixedPeriodStartDate","interestOnlyPeriod","interestOnlyStartDate","interestOnlyLength","upfrontFeesAndLmiFees","annualFees","endDate","lender","loanBalance","tenor","startDate","loanType","propertyLoanInvestAmount","interestRepaymentType","fixedRate","lengthOfInterestOnly","lengthOfFixedReypayment"]}}}}
```

## The RentalIncomeAndRevenueDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"RentalIncomeAndRevenueDto":{"type":"object","properties":{"rentalId":{"type":"string","description":"The unique identifier for the capital work or improvement"},"active":{"type":"boolean","description":"Indicates whether the rental income and revenue is currently active"},"name":{"type":"string","description":"Name of the rental income and revenue"},"startDate":{"format":"date-time","type":"string","description":"Start date of the rental income and revenue"},"length":{"type":"number","description":"Duration of rent in months"},"endDate":{"format":"date-time","type":"string","description":"End date of the rental income and revenue"},"rentPerWeek":{"type":"number","description":"Rent per Week for the rental income and revenue"},"floorSpaceRented":{"type":"number","description":"Floor space rented of property(Rental Partial)"},"totalFloorSpace":{"type":"number","description":"Total floor space rented of property(Rental Partial)"}}}}}}
```

## The ItemisedOperatingExpensesDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ItemisedOperatingExpensesDto":{"type":"object","properties":{"expenseId":{"type":"string","description":"The unique identifier for the operating expensex"},"amount":{"type":"number","description":"The amount of the itemised expense(Total Expense if One-off Expense)"},"active":{"type":"boolean","description":"Indicates whether the operating expense is currently active"},"name":{"type":"string","description":"The name of the operating expense"},"expenseType":{"type":"string","description":"The expense type of the itemised expense(Optional if one-off expense)"},"frequency":{"type":"string","description":"The frequency of the itemised expense (e.g., Monthly, Annually)"},"startDate":{"format":"date-time","type":"string","description":"The start date of the operating expense"},"endDate":{"format":"date-time","type":"string","description":"The end date of the operating expense"},"date":{"format":"date-time","type":"string","description":"The date of the operating expense"}}}}}}
```

## The ConstructionLoanForAdvancedInputDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ConstructionLoanForAdvancedInputDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the Construction Loan"},"constructionLength":{"type":"number","description":"The Construction length of the Drawdown facility In months"},"buildCost":{"type":"number","description":"The Build Cost of the Drawdown facility"},"initialLoanBalance":{"type":"number","description":"The Initial Loan Balance of the Drawdown facility"},"estAfterRepairValue":{"type":"number","description":"The estimated after Repair Value of the Drawdown facility"},"constructionInterestRate":{"type":"number","description":"The Construction interest rate of the Drawdown facility"},"financialInstitution":{"type":"string","description":"The financial institution providing the repayment facility"},"loanType":{"type":"string","description":"The Loan Type of the Construction Loan"},"interestOnlyLength":{"type":"number","description":"Length of the interest-only period in years"},"interestRepaymentType":{"type":"string","description":"Describes the current interest repayments, either Variable or Fixed"},"fixedRateLength":{"type":"string","description":"The fixed rate length"},"fixedRatePercent":{"type":"number","description":"The fixed interest rate percentage"},"startDate":{"type":"string","description":"The start date of the repayment facility"},"tenor":{"type":"number","description":"The tenor of the repayment facility"},"endDate":{"format":"date-time","type":"string","description":"The end date of the repayment facility"},"lengthOfInterestOnly":{"type":"number","description":"The length of the interest in years after the user has selected Interest Only"},"isAddLoan":{"type":"boolean","description":"Indicates if the loan is an add loan"},"currentOffsetAccountBalance":{"type":"number","description":"The current offset account balance"},"currentOffsetAccountBalanceAsAtDate":{"type":"string","description":"The date when the offset account balance was recorded"},"variableRate":{"type":"number","description":""},"upfrontCommission":{"type":"number","description":""},"trailCommission":{"type":"number","description":""},"endDateRefiOverride":{"type":"string"}},"required":["id","interestRepaymentType","lengthOfInterestOnly"]}}}}
```

## The ConstructionFacilityDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ConstructionFacilityDto":{"type":"object","properties":{"percentOfCost":{"type":"number","description":"The percentage of the cost that the construction facility is for"},"startDate":{"type":"string","description":"The start date of the construction facility"},"length":{"type":"string","description":"The length of the construction facility"},"endDate":{"type":"string","description":"The end date of the construction facility"}}}}}}
```

## The OngoingCapitalWorksAndImprovementsDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"OngoingCapitalWorksAndImprovementsDto":{"type":"object","properties":{"cwiId":{"type":"string","description":"The unique identifier for the capital work or improvement"},"name":{"type":"string","description":"The name of the capital work or improvement"},"active":{"type":"boolean","description":"Indicates whether the capital work or improvement is currently active"},"costOfCompletion":{"type":"number","description":"The amount it will cost on completion"},"completionDate":{"type":"string","description":"The completion date of the capital work or improvement"},"estValueAfterImprovements":{"type":"number","description":"The amount estimated on completion"}}}}}}
```

## The ValuationSaleAdvancedInputDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ValuationSaleAdvancedInputDto":{"type":"object","properties":{"valuationSaleId":{"type":"string","description":"The unique identifier for the capital work or improvement"},"mostRecentAppraisedValue":{"type":"number","description":"Most recent appraised value of the property"},"date":{"format":"date-time","type":"string","description":"Date of the valuation or sale"},"salePrice":{"type":"number","description":"Sale price of the property"},"saleDate":{"type":"number","description":"Sale date"},"sellingCosts":{"type":"number","description":"Selling costs associated with the sale of the property"},"primaryResidenceAtSale":{"type":"boolean","description":"Indicates whether the property is a primary residence at the time of sale"}}}}}}
```

## The ManualCapitalWorksDeprecationClaimsDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ManualCapitalWorksDeprecationClaimsDto":{"type":"object","properties":{"claimedYear":{"type":"number","description":"The year of the manual capital works depreciation claim"}}}}}}
```

## The StraightLineDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"StraightLineDto":{"type":"object","properties":{"perAnnum":{"type":"number","description":"Annual depreciation amount using the straight-line method"},"perPeriod":{"type":"number","description":"Per-period depreciation amount using the straight-line method"}}}}}}
```

## The DimishingValueDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"DimishingValueDto":{"type":"object","properties":{"perAnnum":{"type":"number","description":"Annual depreciation amount using the diminishing value method"},"perPeriod":{"type":"number","description":"Per-period depreciation amount using the diminishing value method"}}}}}}
```

## The BalancingAdjustmentDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"BalancingAdjustmentDto":{"type":"object","properties":{"saleDate":{"type":"string","description":"The sale date of the asset for balancing adjustment purposes"},"salvageValue":{"type":"number","description":"The salvage value of the asset at the end of its life"}}}}}}
```

## The ExpenseForPropertyDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ExpenseForPropertyDto":{"type":"object","properties":{"expenseId":{"type":"string","description":"The unique identifier for the Expense"},"name":{"type":"string","description":"The name of the expense item"},"date":{"format":"date-time","type":"string","description":"The date of the expense item"},"effectiveLife":{"type":"string","description":"The effective life of the PP&E item"},"bookValue":{"type":"number","description":"Book Value"},"method":{"type":"string","description":"The depreciation method used for the PP&E item","enum":["STRAIGHTLINE","DIMINISHING_VALUE","BALANCING_ADJUSTMENT"]},"expenseType":{"type":"string","description":"The type of expense","enum":["PPAndE","Operating","one-off"]},"straightLine":{"description":"Details of the straight-line depreciation method","allOf":[{"$ref":"#/components/schemas/StraightLineDto"}]},"dimishingValue":{"description":"Details of the diminishing value depreciation method","allOf":[{"$ref":"#/components/schemas/DimishingValueDto"}]},"balancingAdjustment":{"description":"Details of the balancing adjustment for the PP&E item","allOf":[{"$ref":"#/components/schemas/BalancingAdjustmentDto"}]}},"required":["expenseId"]},"StraightLineDto":{"type":"object","properties":{"perAnnum":{"type":"number","description":"Annual depreciation amount using the straight-line method"},"perPeriod":{"type":"number","description":"Per-period depreciation amount using the straight-line method"}}},"DimishingValueDto":{"type":"object","properties":{"perAnnum":{"type":"number","description":"Annual depreciation amount using the diminishing value method"},"perPeriod":{"type":"number","description":"Per-period depreciation amount using the diminishing value method"}}},"BalancingAdjustmentDto":{"type":"object","properties":{"saleDate":{"type":"string","description":"The sale date of the asset for balancing adjustment purposes"},"salvageValue":{"type":"number","description":"The salvage value of the asset at the end of its life"}}}}}}
```

## The AdjustLoanTermsDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"AdjustLoanTermsDto":{"type":"object","properties":{"loanId":{"type":"string","description":"The id of the loan that you want to adjust"},"loanType":{"type":"string","description":"The Loan type input(should only be Interest only if the user wants to change the loan type)"},"interestRepaymentType":{"type":"string","description":"The current repayments type input(should only be Fixed)"},"lengthOfInterestOnly":{"type":"number","description":"The length of the interest in years after the user has selected Interest Only"},"lengthOfFixedReypayment":{"type":"number","description":"The length of the interest in years after the user has selected Fixed current interest repayment"}},"required":["loanId","loanType","interestRepaymentType","lengthOfInterestOnly","lengthOfFixedReypayment"]}}}}
```

## The FinanceAndTaxDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"FinanceAndTaxDto":{"type":"object","properties":{"ownership":{"type":"string","description":"The ownership of the property"},"capitalWorksClaim":{"type":"string","description":"The capital works claim of the property","enum":["WEEKLY","MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUAL","ANNUAL","ONE_OFF"]},"lowValueAssetPooling":{"type":"boolean","description":"The low value asset pooling of the property"},"netRentPaidIntoOffsetAccount":{"type":"string","description":"The net rent paid into offset account of the property"},"claimCapitalWorksAnually":{"type":"boolean","description":"The claim capital works annually of the property"},"ppAndEDeprecriationMethod":{"type":"string","description":"The pp and e depreciation method of the property","enum":["STRAIGHTLINE","DIMINISHING_VALUE","BALANCING_ADJUSTMENT"]},"priceTarget":{"type":"number","description":"The price target of the property"},"cgtLiability":{"type":"number","description":"The cgt liability of the property"}}}}}}
```

## The ProjectionsAndParametersAdvancedInputsDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ProjectionsAndParametersAdvancedInputsDto":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for the projections and parameters"},"capitalGrowthAmount":{"type":"number","description":"Capital growth amount"},"costEscalation":{"type":"number","description":"Cost escalation"},"revenueGrowth":{"type":"number","description":"Revenue growth"},"interestRate":{"type":"number","description":"Interest rate"},"netRentPaidIntoOffsetAccount":{"type":"boolean","description":"Net rent paid into offset account"},"personalSalaryPaidIntoOffsetAccount":{"type":"boolean","description":"Personal salary paid into offset account"},"equityInHomeGoalForCashOutRefinance":{"type":"number","description":"Equity in home goal for cash out refinance"},"profitOnSaleTarget":{"type":"number","description":"Profit on sale target"},"startDate":{"type":"string","description":"Start date"},"endDate":{"type":"string","description":"End date"}}}}}}
```

## The SellPropertyDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"SellPropertyDto":{"type":"object","properties":{"sellId":{"type":"string","description":"The unique identifier for Sell"},"date":{"format":"date-time","type":"string","description":"Date of the valuation or sale"},"salePrice":{"type":"number","description":"Sale price of the property"},"sellingCosts":{"type":"number","description":"Selling costs associated with the sale of the property"},"netCapitalGainAtSale":{"type":"number","description":"Net capital gain at sale"}}}}}}
```

## The VariableRateForPropertyDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"VariableRateForPropertyDto":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for the variable rate"},"variableRate":{"type":"number","description":"The variable rate between 0.01 and 1 (0% and 100%)"},"date":{"type":"string","description":"The date of the variable rate"}},"required":["id"]}}}}
```

## The EscalationForPropertyDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"EscalationForPropertyDto":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for the escalation rate"},"costEscalationRate":{"type":"number","description":"The Cost Escalation Rate between 0.01 and 1 (0% and 100%)"},"date":{"type":"string","description":"The date of the variable rate"}},"required":["id"]}}}}
```

## The MoveHouseForQuickActionsDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"MoveHouseForQuickActionsDto":{"type":"object","properties":{"moveHouseId":{"type":"string","description":"The unique identifier for the capital work or improvement"},"currentMarketValue":{"type":"number","description":"Current Estimated Market Value (Only input when Investment > Main Residence)"},"newUse":{"type":"string","description":"New use of the property"},"startDate":{"format":"date-time","type":"string","description":"The start date of the change"},"untilSale":{"type":"boolean","description":"Indicates whether the change lasts until the sale date"},"endDate":{"format":"date-time","type":"string","description":"The end date of the rent"},"isPrimaryResidence":{"type":"boolean","description":"Indicates whether the residence is a primary residence"},"claimMainResidenceExemption":{"type":"boolean","description":"Whether claiming main residence exemption on another property"}},"required":["moveHouseId","currentMarketValue","newUse","startDate","untilSale","endDate","isPrimaryResidence"]}}}}
```

## The GrannyFlatForQuickActionsDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"GrannyFlatForQuickActionsDto":{"type":"object","properties":{"grannyFlatId":{"type":"string","description":"Unique Identifier for the Granny flat"},"totalCostAtCompletion":{"type":"number","description":"Total Cost at Completion"},"date":{"format":"date-time","type":"string","description":"The start date of the operating expense"},"grannyFlatFloorSpace":{"type":"number","description":"Granny Flat floor Space"},"mainHouseFloorSpace":{"type":"number","description":"Main House floor Space"}}}}}}
```

## The BaseParametersDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"BaseParametersDto":{"type":"object","properties":{"capitalGrowth":{"type":"number","description":"The capital growth of the property"},"rentAndCostGrowth":{"type":"number","description":"The rent & cost growth of the property"},"variableRate":{"type":"number","description":"The variable rate of the property"},"occupancy":{"type":"number","description":"The occupancy of the property"},"sellingCosts":{"type":"number","description":"The selling costs of the property"},"ownership":{"type":"number","description":"The ownership of the property"}}}}}}
```

## The VoluntaryRepaymentDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"VoluntaryRepaymentDto":{"type":"object","properties":{"voluntaryRepaymentId":{"type":"string","description":"The unique identifier for the voluntary repayment"},"amount":{"type":"number","description":"The amount of the voluntary repayment"},"date":{"type":"string","description":"The date of the voluntary repayment"},"loanId":{"type":"string","description":"The ID of the loan"},"loanIndex":{"type":"number","description":"The index of the loan"},"propertyId":{"type":"string","description":"The ID of the property"},"userId":{"type":"string","description":"The ID of the client whose personal timeline shows the repayment"}}}}}}
```

## The OffsetAccountDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"OffsetAccountDto":{"type":"object","properties":{"offsetAccountId":{"type":"string","description":"The unique identifier for the offset account transaction"},"amount":{"type":"number","description":"The amount of the offset account"},"date":{"type":"string","description":"The date of the offset account"},"loanId":{"type":"string","description":"The ID of the loan"},"loanIndex":{"type":"number","description":"The index of the loan"},"propertyId":{"type":"string","description":"The ID of the property"},"withdraw":{"type":"boolean","description":"If true = offset WITHDRAW (FCF withdraw to personal). If false = offset ADD (FCF contribution from personal)."},"userId":{"type":"string","description":"The ID of the client whose personal timeline shows the transaction"}}}}}}
```

## The RefinanceDetailsInputDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"RefinanceDetailsInputDto":{"type":"object","properties":{"refinanceId":{"type":"string","description":"Unique id of the refinance (generated on create)"},"active":{"type":"boolean","description":"Indicates if the refinance is active or not"},"refinanceDate":{"format":"date-time","type":"string","description":"The start date of the loan"},"refinanceNumber":{"type":"number","description":"The refinance number"},"newLender":{"type":"string","description":"The new lender"},"newLoans":{"description":"Details of the new loans","type":"array","items":{"type":"string"}},"refiLoans":{"description":"Details of the Loan","type":"array","items":{"type":"string"}}},"required":["refinanceDate","refinanceNumber","newLender","newLoans","refiLoans"]}}}}
```

## The AdvancedInputsDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"AdvancedInputsDto":{"type":"object","properties":{"rentalIncomeAndRevenue":{"description":"The rental income and revenue of the property","type":"array","items":{"$ref":"#/components/schemas/RentalIncomeAndRevenueDto"}},"itemisedOperatingExpenses":{"description":"The itemised operating expenses of the property","type":"array","items":{"$ref":"#/components/schemas/ItemisedOperatingExpensesDto"}},"constructionLoans":{"description":"The construction loan of the property","type":"array","items":{"$ref":"#/components/schemas/ConstructionLoanForAdvancedInputDto"}},"constructionFacility":{"description":"The construction facility of the property","type":"array","items":{"$ref":"#/components/schemas/ConstructionFacilityDto"}},"ongoingCapitalWorksAndImprovements":{"description":"The ongoing capital works and improvements of the property","type":"array","items":{"$ref":"#/components/schemas/OngoingCapitalWorksAndImprovementsDto"}},"valuationSales":{"description":"The valuation sale of the property","type":"array","items":{"$ref":"#/components/schemas/ValuationSaleAdvancedInputDto"}},"manualCapitalWorksDeprecationClaims":{"description":"The manual capital works depreciation claims of the property","type":"array","items":{"$ref":"#/components/schemas/ManualCapitalWorksDeprecationClaimsDto"}},"expenses":{"description":"The expense of the property","type":"array","items":{"$ref":"#/components/schemas/ExpenseForPropertyDto"}},"adjustLoanTerms":{"description":"The adjust loan terms of the property","type":"array","items":{"$ref":"#/components/schemas/AdjustLoanTermsDto"}},"financeAndTax":{"description":"The finance and tax of the property","allOf":[{"$ref":"#/components/schemas/FinanceAndTaxDto"}]},"projectionsAndParameters":{"description":"The projections and parameters of the property","type":"array","items":{"$ref":"#/components/schemas/ProjectionsAndParametersAdvancedInputsDto"}},"sell":{"description":"The sell of the property","type":"array","items":{"$ref":"#/components/schemas/SellPropertyDto"}},"variableRate":{"description":"The variable rate of the property","type":"array","items":{"$ref":"#/components/schemas/VariableRateForPropertyDto"}},"costEscalation":{"description":"The cost escalation of the property","type":"array","items":{"$ref":"#/components/schemas/EscalationForPropertyDto"}},"moveHouse":{"description":"The move house of the property","type":"array","items":{"$ref":"#/components/schemas/MoveHouseForQuickActionsDto"}},"grannyFlat":{"description":"The granny flat of the property","type":"array","items":{"$ref":"#/components/schemas/GrannyFlatForQuickActionsDto"}},"baseParameters":{"description":"The base parameters of the property","allOf":[{"$ref":"#/components/schemas/BaseParametersDto"}]},"voluntaryRepayments":{"description":"The voluntary repayments of the property","type":"array","items":{"$ref":"#/components/schemas/VoluntaryRepaymentDto"}},"offsetAccounts":{"description":"The offset account transactions of the property","type":"array","items":{"$ref":"#/components/schemas/OffsetAccountDto"}},"refinanceDetails":{"description":"The refinance details of the property","type":"array","items":{"$ref":"#/components/schemas/RefinanceDetailsInputDto"}}}},"RentalIncomeAndRevenueDto":{"type":"object","properties":{"rentalId":{"type":"string","description":"The unique identifier for the capital work or improvement"},"active":{"type":"boolean","description":"Indicates whether the rental income and revenue is currently active"},"name":{"type":"string","description":"Name of the rental income and revenue"},"startDate":{"format":"date-time","type":"string","description":"Start date of the rental income and revenue"},"length":{"type":"number","description":"Duration of rent in months"},"endDate":{"format":"date-time","type":"string","description":"End date of the rental income and revenue"},"rentPerWeek":{"type":"number","description":"Rent per Week for the rental income and revenue"},"floorSpaceRented":{"type":"number","description":"Floor space rented of property(Rental Partial)"},"totalFloorSpace":{"type":"number","description":"Total floor space rented of property(Rental Partial)"}}},"ItemisedOperatingExpensesDto":{"type":"object","properties":{"expenseId":{"type":"string","description":"The unique identifier for the operating expensex"},"amount":{"type":"number","description":"The amount of the itemised expense(Total Expense if One-off Expense)"},"active":{"type":"boolean","description":"Indicates whether the operating expense is currently active"},"name":{"type":"string","description":"The name of the operating expense"},"expenseType":{"type":"string","description":"The expense type of the itemised expense(Optional if one-off expense)"},"frequency":{"type":"string","description":"The frequency of the itemised expense (e.g., Monthly, Annually)"},"startDate":{"format":"date-time","type":"string","description":"The start date of the operating expense"},"endDate":{"format":"date-time","type":"string","description":"The end date of the operating expense"},"date":{"format":"date-time","type":"string","description":"The date of the operating expense"}}},"ConstructionLoanForAdvancedInputDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the Construction Loan"},"constructionLength":{"type":"number","description":"The Construction length of the Drawdown facility In months"},"buildCost":{"type":"number","description":"The Build Cost of the Drawdown facility"},"initialLoanBalance":{"type":"number","description":"The Initial Loan Balance of the Drawdown facility"},"estAfterRepairValue":{"type":"number","description":"The estimated after Repair Value of the Drawdown facility"},"constructionInterestRate":{"type":"number","description":"The Construction interest rate of the Drawdown facility"},"financialInstitution":{"type":"string","description":"The financial institution providing the repayment facility"},"loanType":{"type":"string","description":"The Loan Type of the Construction Loan"},"interestOnlyLength":{"type":"number","description":"Length of the interest-only period in years"},"interestRepaymentType":{"type":"string","description":"Describes the current interest repayments, either Variable or Fixed"},"fixedRateLength":{"type":"string","description":"The fixed rate length"},"fixedRatePercent":{"type":"number","description":"The fixed interest rate percentage"},"startDate":{"type":"string","description":"The start date of the repayment facility"},"tenor":{"type":"number","description":"The tenor of the repayment facility"},"endDate":{"format":"date-time","type":"string","description":"The end date of the repayment facility"},"lengthOfInterestOnly":{"type":"number","description":"The length of the interest in years after the user has selected Interest Only"},"isAddLoan":{"type":"boolean","description":"Indicates if the loan is an add loan"},"currentOffsetAccountBalance":{"type":"number","description":"The current offset account balance"},"currentOffsetAccountBalanceAsAtDate":{"type":"string","description":"The date when the offset account balance was recorded"},"variableRate":{"type":"number","description":""},"upfrontCommission":{"type":"number","description":""},"trailCommission":{"type":"number","description":""},"endDateRefiOverride":{"type":"string"}},"required":["id","interestRepaymentType","lengthOfInterestOnly"]},"ConstructionFacilityDto":{"type":"object","properties":{"percentOfCost":{"type":"number","description":"The percentage of the cost that the construction facility is for"},"startDate":{"type":"string","description":"The start date of the construction facility"},"length":{"type":"string","description":"The length of the construction facility"},"endDate":{"type":"string","description":"The end date of the construction facility"}}},"OngoingCapitalWorksAndImprovementsDto":{"type":"object","properties":{"cwiId":{"type":"string","description":"The unique identifier for the capital work or improvement"},"name":{"type":"string","description":"The name of the capital work or improvement"},"active":{"type":"boolean","description":"Indicates whether the capital work or improvement is currently active"},"costOfCompletion":{"type":"number","description":"The amount it will cost on completion"},"completionDate":{"type":"string","description":"The completion date of the capital work or improvement"},"estValueAfterImprovements":{"type":"number","description":"The amount estimated on completion"}}},"ValuationSaleAdvancedInputDto":{"type":"object","properties":{"valuationSaleId":{"type":"string","description":"The unique identifier for the capital work or improvement"},"mostRecentAppraisedValue":{"type":"number","description":"Most recent appraised value of the property"},"date":{"format":"date-time","type":"string","description":"Date of the valuation or sale"},"salePrice":{"type":"number","description":"Sale price of the property"},"saleDate":{"type":"number","description":"Sale date"},"sellingCosts":{"type":"number","description":"Selling costs associated with the sale of the property"},"primaryResidenceAtSale":{"type":"boolean","description":"Indicates whether the property is a primary residence at the time of sale"}}},"ManualCapitalWorksDeprecationClaimsDto":{"type":"object","properties":{"claimedYear":{"type":"number","description":"The year of the manual capital works depreciation claim"}}},"ExpenseForPropertyDto":{"type":"object","properties":{"expenseId":{"type":"string","description":"The unique identifier for the Expense"},"name":{"type":"string","description":"The name of the expense item"},"date":{"format":"date-time","type":"string","description":"The date of the expense item"},"effectiveLife":{"type":"string","description":"The effective life of the PP&E item"},"bookValue":{"type":"number","description":"Book Value"},"method":{"type":"string","description":"The depreciation method used for the PP&E item","enum":["STRAIGHTLINE","DIMINISHING_VALUE","BALANCING_ADJUSTMENT"]},"expenseType":{"type":"string","description":"The type of expense","enum":["PPAndE","Operating","one-off"]},"straightLine":{"description":"Details of the straight-line depreciation method","allOf":[{"$ref":"#/components/schemas/StraightLineDto"}]},"dimishingValue":{"description":"Details of the diminishing value depreciation method","allOf":[{"$ref":"#/components/schemas/DimishingValueDto"}]},"balancingAdjustment":{"description":"Details of the balancing adjustment for the PP&E item","allOf":[{"$ref":"#/components/schemas/BalancingAdjustmentDto"}]}},"required":["expenseId"]},"StraightLineDto":{"type":"object","properties":{"perAnnum":{"type":"number","description":"Annual depreciation amount using the straight-line method"},"perPeriod":{"type":"number","description":"Per-period depreciation amount using the straight-line method"}}},"DimishingValueDto":{"type":"object","properties":{"perAnnum":{"type":"number","description":"Annual depreciation amount using the diminishing value method"},"perPeriod":{"type":"number","description":"Per-period depreciation amount using the diminishing value method"}}},"BalancingAdjustmentDto":{"type":"object","properties":{"saleDate":{"type":"string","description":"The sale date of the asset for balancing adjustment purposes"},"salvageValue":{"type":"number","description":"The salvage value of the asset at the end of its life"}}},"AdjustLoanTermsDto":{"type":"object","properties":{"loanId":{"type":"string","description":"The id of the loan that you want to adjust"},"loanType":{"type":"string","description":"The Loan type input(should only be Interest only if the user wants to change the loan type)"},"interestRepaymentType":{"type":"string","description":"The current repayments type input(should only be Fixed)"},"lengthOfInterestOnly":{"type":"number","description":"The length of the interest in years after the user has selected Interest Only"},"lengthOfFixedReypayment":{"type":"number","description":"The length of the interest in years after the user has selected Fixed current interest repayment"}},"required":["loanId","loanType","interestRepaymentType","lengthOfInterestOnly","lengthOfFixedReypayment"]},"FinanceAndTaxDto":{"type":"object","properties":{"ownership":{"type":"string","description":"The ownership of the property"},"capitalWorksClaim":{"type":"string","description":"The capital works claim of the property","enum":["WEEKLY","MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUAL","ANNUAL","ONE_OFF"]},"lowValueAssetPooling":{"type":"boolean","description":"The low value asset pooling of the property"},"netRentPaidIntoOffsetAccount":{"type":"string","description":"The net rent paid into offset account of the property"},"claimCapitalWorksAnually":{"type":"boolean","description":"The claim capital works annually of the property"},"ppAndEDeprecriationMethod":{"type":"string","description":"The pp and e depreciation method of the property","enum":["STRAIGHTLINE","DIMINISHING_VALUE","BALANCING_ADJUSTMENT"]},"priceTarget":{"type":"number","description":"The price target of the property"},"cgtLiability":{"type":"number","description":"The cgt liability of the property"}}},"ProjectionsAndParametersAdvancedInputsDto":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for the projections and parameters"},"capitalGrowthAmount":{"type":"number","description":"Capital growth amount"},"costEscalation":{"type":"number","description":"Cost escalation"},"revenueGrowth":{"type":"number","description":"Revenue growth"},"interestRate":{"type":"number","description":"Interest rate"},"netRentPaidIntoOffsetAccount":{"type":"boolean","description":"Net rent paid into offset account"},"personalSalaryPaidIntoOffsetAccount":{"type":"boolean","description":"Personal salary paid into offset account"},"equityInHomeGoalForCashOutRefinance":{"type":"number","description":"Equity in home goal for cash out refinance"},"profitOnSaleTarget":{"type":"number","description":"Profit on sale target"},"startDate":{"type":"string","description":"Start date"},"endDate":{"type":"string","description":"End date"}}},"SellPropertyDto":{"type":"object","properties":{"sellId":{"type":"string","description":"The unique identifier for Sell"},"date":{"format":"date-time","type":"string","description":"Date of the valuation or sale"},"salePrice":{"type":"number","description":"Sale price of the property"},"sellingCosts":{"type":"number","description":"Selling costs associated with the sale of the property"},"netCapitalGainAtSale":{"type":"number","description":"Net capital gain at sale"}}},"VariableRateForPropertyDto":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for the variable rate"},"variableRate":{"type":"number","description":"The variable rate between 0.01 and 1 (0% and 100%)"},"date":{"type":"string","description":"The date of the variable rate"}},"required":["id"]},"EscalationForPropertyDto":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for the escalation rate"},"costEscalationRate":{"type":"number","description":"The Cost Escalation Rate between 0.01 and 1 (0% and 100%)"},"date":{"type":"string","description":"The date of the variable rate"}},"required":["id"]},"MoveHouseForQuickActionsDto":{"type":"object","properties":{"moveHouseId":{"type":"string","description":"The unique identifier for the capital work or improvement"},"currentMarketValue":{"type":"number","description":"Current Estimated Market Value (Only input when Investment > Main Residence)"},"newUse":{"type":"string","description":"New use of the property"},"startDate":{"format":"date-time","type":"string","description":"The start date of the change"},"untilSale":{"type":"boolean","description":"Indicates whether the change lasts until the sale date"},"endDate":{"format":"date-time","type":"string","description":"The end date of the rent"},"isPrimaryResidence":{"type":"boolean","description":"Indicates whether the residence is a primary residence"},"claimMainResidenceExemption":{"type":"boolean","description":"Whether claiming main residence exemption on another property"}},"required":["moveHouseId","currentMarketValue","newUse","startDate","untilSale","endDate","isPrimaryResidence"]},"GrannyFlatForQuickActionsDto":{"type":"object","properties":{"grannyFlatId":{"type":"string","description":"Unique Identifier for the Granny flat"},"totalCostAtCompletion":{"type":"number","description":"Total Cost at Completion"},"date":{"format":"date-time","type":"string","description":"The start date of the operating expense"},"grannyFlatFloorSpace":{"type":"number","description":"Granny Flat floor Space"},"mainHouseFloorSpace":{"type":"number","description":"Main House floor Space"}}},"BaseParametersDto":{"type":"object","properties":{"capitalGrowth":{"type":"number","description":"The capital growth of the property"},"rentAndCostGrowth":{"type":"number","description":"The rent & cost growth of the property"},"variableRate":{"type":"number","description":"The variable rate of the property"},"occupancy":{"type":"number","description":"The occupancy of the property"},"sellingCosts":{"type":"number","description":"The selling costs of the property"},"ownership":{"type":"number","description":"The ownership of the property"}}},"VoluntaryRepaymentDto":{"type":"object","properties":{"voluntaryRepaymentId":{"type":"string","description":"The unique identifier for the voluntary repayment"},"amount":{"type":"number","description":"The amount of the voluntary repayment"},"date":{"type":"string","description":"The date of the voluntary repayment"},"loanId":{"type":"string","description":"The ID of the loan"},"loanIndex":{"type":"number","description":"The index of the loan"},"propertyId":{"type":"string","description":"The ID of the property"},"userId":{"type":"string","description":"The ID of the client whose personal timeline shows the repayment"}}},"OffsetAccountDto":{"type":"object","properties":{"offsetAccountId":{"type":"string","description":"The unique identifier for the offset account transaction"},"amount":{"type":"number","description":"The amount of the offset account"},"date":{"type":"string","description":"The date of the offset account"},"loanId":{"type":"string","description":"The ID of the loan"},"loanIndex":{"type":"number","description":"The index of the loan"},"propertyId":{"type":"string","description":"The ID of the property"},"withdraw":{"type":"boolean","description":"If true = offset WITHDRAW (FCF withdraw to personal). If false = offset ADD (FCF contribution from personal)."},"userId":{"type":"string","description":"The ID of the client whose personal timeline shows the transaction"}}},"RefinanceDetailsInputDto":{"type":"object","properties":{"refinanceId":{"type":"string","description":"Unique id of the refinance (generated on create)"},"active":{"type":"boolean","description":"Indicates if the refinance is active or not"},"refinanceDate":{"format":"date-time","type":"string","description":"The start date of the loan"},"refinanceNumber":{"type":"number","description":"The refinance number"},"newLender":{"type":"string","description":"The new lender"},"newLoans":{"description":"Details of the new loans","type":"array","items":{"type":"string"}},"refiLoans":{"description":"Details of the Loan","type":"array","items":{"type":"string"}}},"required":["refinanceDate","refinanceNumber","newLender","newLoans","refiLoans"]}}}}
```

## The PropertyOwnershipEntityInputDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PropertyOwnershipEntityInputDto":{"type":"object","properties":{"slot":{"type":"number","description":"INPUTS!270 — owner slot 1–5 (\"Entity 1\"..\"Entity 5\" row label). Unique per property.","minimum":1,"maximum":5},"ownerName":{"type":"string","description":"INPUTS!271–275 OWNER NAMES — \"User1 Personal\" | \"User2 Personal\" | an entity name as saved on /v1/entities (INPUTS!199). Matched by text in the model; no id."},"ownershipPercent":{"type":"number","description":"INPUTS!277–281 — ownership %, 0–100 (sheet 0.25 = 25). Slots on a property must total 100 (INPUTS!289 check).","minimum":0,"maximum":100}},"required":["slot","ownerName","ownershipPercent"]}}}}
```

## The PropertyAssumptionDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PropertyAssumptionDto":{"type":"object","properties":{"amount":{"type":"number"},"date":{"format":"date-time","type":"string"},"type":{"type":"string","enum":["CAPITAL_GROWTH","RENTAL_GROWTH","RENTAL_INCOME","OPERATING_COSTS","DEBT_PAYMENTS","COST_ESCALATION","VARIABLE_RATE"]},"frequency":{"type":"string","enum":["WEEKLY","MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUAL","ANNUAL","ONE_OFF"]},"duration":{"type":"number"}}}}}}
```

## The PropertyAddress object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PropertyAddress":{"type":"object","properties":{}}}}}
```

## The PropertyInputsDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PropertyInputsDto":{"type":"object","properties":{"id":{"type":"string","description":"Optional id (e.g. import/sync). Omit to auto-generate."},"name":{"type":"string"},"propertyDetails":{"$ref":"#/components/schemas/PropertyDetailsDto"},"stampDuty":{"$ref":"#/components/schemas/StampDutyDto"},"acquisition":{"$ref":"#/components/schemas/AcquisitionDto"},"acquisitionCost":{"$ref":"#/components/schemas/AcquisitionCostDto"},"homeLoan":{"$ref":"#/components/schemas/HomeLoanDto"},"operations":{"$ref":"#/components/schemas/OperationsDto"},"construction":{"$ref":"#/components/schemas/ConstructionDto"},"constructionLoan":{"$ref":"#/components/schemas/ConstructionLoanDto"},"repaymentFacility":{"$ref":"#/components/schemas/RepaymentFacilityDto"},"grannyFlat":{"$ref":"#/components/schemas/GrannyFlatDto"},"depreciation":{"$ref":"#/components/schemas/DepreciationDto"},"existingCapitalWorks":{"$ref":"#/components/schemas/ExistingCapitalWorksDto"},"valuationAndSale":{"$ref":"#/components/schemas/ValuationSaleDto"},"projectionsAndParameters":{"$ref":"#/components/schemas/ProjectionsAndParametersDto"},"mainResidenceInputs":{"$ref":"#/components/schemas/MainResidenceInputsDto"},"loan":{"$ref":"#/components/schemas/PropertyLoanDto"},"advancedInputs":{"$ref":"#/components/schemas/AdvancedInputsDto"},"ownershipEntities":{"description":"INPUTS!269–281 \"PROPERTY OWNERS & RELATED PARTIES\" — 0–5 owner slots (name + %). Omit to leave unchanged on edit; send [] to clear. Rows must total 100. Replaces the legacy stampDuty.ownershipEntity/percentOwnership inputs (INPUTS!68–74, now formulas off this block in the workbook).","type":"array","items":{"$ref":"#/components/schemas/PropertyOwnershipEntityInputDto"}},"expenses":{"$ref":"#/components/schemas/ExpenseForPropertyDto"},"assumptions":{"$ref":"#/components/schemas/PropertyAssumptionDto"},"financeAndTax":{"$ref":"#/components/schemas/FinanceAndTaxDto"},"baseParameters":{"$ref":"#/components/schemas/BaseParametersDto"},"address":{"$ref":"#/components/schemas/PropertyAddress"},"deemedAcquisitionMarketValue":{"type":"number"},"deemedAcquisitionDate":{"format":"date-time","type":"string"}}},"PropertyDetailsDto":{"type":"object","properties":{"address":{"type":"string","description":"Property street address"},"suburb":{"type":"string","description":"Suburb/locality"},"state":{"type":"string","description":"State/territory"},"bedrooms":{"type":"number","description":"Number of bedrooms"},"bathrooms":{"type":"number","description":"Number of bathrooms"},"carSpaces":{"type":"number","description":"Number of car spaces"},"totalSqm":{"type":"number","description":"Total floor area in square meters"},"floorSpace":{"type":"number","description":"Total land area in square meters"},"residentialPropertyType":{"type":"string","description":"Type of residential property"},"name":{"type":"string","description":"The name of the property"},"priceEstimate":{"type":"number","description":"The price estimate of the property"},"purchasingCost":{"type":"number","description":"The purchasing cost of the property"},"rentalEstimate":{"type":"number","description":"The rental estimate of the property from Rental AVM external api(rent per week)"},"operatingExpenses":{"type":"number","description":"The Operating expense of the property from Rental AVM external api(Monthly)"},"initialLoanBalance":{"type":"number","description":"The initial loan balance of the property"},"interestRate":{"type":"number","description":"The interest rate of the property(Percentage)"},"monthlyPayment":{"type":"number","description":"The monthly payment of the property"},"portfolio":{"type":"boolean","description":"Add to portfolio"}},"required":["address","suburb","state","bedrooms","bathrooms","carSpaces","totalSqm","floorSpace","residentialPropertyType"]},"StampDutyDto":{"type":"object","properties":{"exemptionOverride":{"type":"boolean","description":"Exemption override"},"stampDutyValuation":{"type":"number","description":"Stamp duty valuation"},"landValueAtPurchase":{"type":"number","description":"Land value at purchase"},"landUse":{"type":"string","description":"Land use"},"primaryResidence":{"type":"string","description":"Primary residence"},"firstHomeBuyer":{"type":"boolean","description":"First home buyer"},"lotType":{"type":"string","description":"Lot type"},"citizenshipStatus":{"type":"string","description":"Citizenship status"},"transactionMethod":{"type":"string","description":"Transaction method"},"ownershipEntity":{"type":"string","description":"Ownership entity"},"ownershipEntityType":{"type":"string","description":"Ownership entity type"},"percentOwnership":{"type":"number","description":"Percent ownership"},"isCoOwnerPartner":{"type":"boolean","description":"Is co-owner partner"},"percentOwnershipUser2":{"type":"number","description":"Percent ownership user 2"}}},"AcquisitionDto":{"type":"object","properties":{"settlementDate":{"type":"string","description":"Settlement date","format":"date-time"},"anticipatedHoldPeriod":{"type":"number"},"dateSold":{"type":"string","description":"Date property was sold/purchased","format":"date-time"},"purchasePrice":{"type":"number"}},"required":["settlementDate","dateSold"]},"AcquisitionCostDto":{"type":"object","properties":{"purchasePrice":{"type":"number"},"depositPercent":{"type":"number"},"depositAmount":{"type":"number"},"stampDuty":{"type":"number"},"lmiPercent":{"type":"number"},"lmiAmount":{"type":"number"},"otherExpensedClosingCosts":{"type":"number"},"capitaliseLmi":{"type":"boolean"}}},"HomeLoanDto":{"type":"object","properties":{"initialLoanBalance":{"type":"number"},"startDate":{"type":"string"},"tenor":{"type":"number"},"endDate":{"type":"string"},"currentLoanBalance":{"type":"number"},"currentOffsetAccountBalance":{"type":"number"},"currentOffsetAccountBalanceAsAtDate":{"type":"string","description":"The date when the offset account balance was recorded"},"isFixed":{"type":"boolean"},"fixedRate":{"type":"number"},"fixedPeriodStartDate":{"type":"string"},"fixedPeriodLength":{"type":"number"},"isInterestOnly":{"type":"boolean"},"interestOnlyStartDate":{"type":"string"},"interestOnlyLength":{"type":"number"},"interestOnlyEndDate":{"type":"string"},"upfrontFees":{"type":"number"},"annualFees":{"type":"number"},"hasOffsetAccount":{"type":"boolean"},"lender":{"type":"string","description":"The financial institution providing the loan"},"variableRate":{"type":"number","description":""},"upfrontCommission":{"type":"number","description":""},"trailCommission":{"type":"number","description":""},"endDateRefiOverride":{"type":"string"}},"required":["lender"]},"OperationsDto":{"type":"object","properties":{"weeklyRent":{"type":"number"},"occupancy":{"type":"number"},"operatingExpenses":{"type":"number"}}},"ConstructionDto":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for the construction"},"active":{"type":"boolean","description":"Indicates whether the construction is currently active"},"constructionStartDate":{"type":"string","description":"The start date of the construction"},"constructionLength":{"type":"string","description":"Length of the construction period"},"completionDate":{"type":"string","description":"The completion date of the construction"},"constructionCost":{"type":"number","description":"The cost of the construction"},"estimatedValueAtCompletion":{"type":"number","description":"The estimated value at the completion of the construction"}}},"ConstructionLoanDto":{"type":"object","properties":{"constructionloanId":{"type":"string","description":"The unique identifier for the capital work or improvement"},"loanType":{"type":"string","description":"Type of the loan"},"ltc":{"type":"number","description":"Loan to Cost (LTC) ratio"},"ltv":{"type":"number","description":"Loan to Value (LTV) ratio"},"constructionInterestRate":{"type":"number","description":"Construction interest rate"},"interestReserveFunding":{"type":"string","description":"Interest reserve funding status"},"drawdownFacilityFees":{"type":"number","description":"Drawdown facility fees"},"timing":{"type":"string","description":"Timing for the construction loan"}}},"RepaymentFacilityDto":{"type":"object","properties":{"financialInstitution":{"type":"string","description":"The financial institution providing the repayment facility"},"initialLoanBalance":{"type":"number","description":"The initial loan balance"},"interestOnlyLength":{"type":"number","description":"Length of the interest-only period in years"},"fixedRateLength":{"type":"string","description":"The fixed rate length"},"fixedRatePercent":{"type":"number","description":"The fixed interest rate percentage"},"startDate":{"type":"string","description":"The start date of the repayment facility"},"tenor":{"type":"number","description":"The tenor of the repayment facility"},"endDate":{"type":"string","description":"The end date of the repayment facility"}}},"GrannyFlatDto":{"type":"object","properties":{"active":{"type":"boolean","description":"Indicates whether the granny flat is currently active"},"cost":{"type":"number","description":"Cost of constructing the granny flat"},"startDate":{"type":"string","description":"Start date of the granny flat construction"},"grannyFlatFloorSpaceRented":{"type":"number","description":"Floor Space in sqm"},"grannyFlatTotalFloorSpace":{"type":"number","description":"Total Floor Space in sqm"}}},"DepreciationDto":{"type":"object","properties":{"plantAndEquipmentMethod":{"type":"string","description":"Plant and Equipment Method"},"lvaPooling":{"type":"boolean","description":"LVA Pooling"},"lcaPooling":{"type":"boolean","description":"LCA Pooling"},"capitalWorksTiming":{"type":"string","description":"Capital Works Timing"}}},"ExistingCapitalWorksDto":{"type":"object","properties":{"mostRecentCapitalWorks":{"type":"string","description":"Most recent capital works"},"yearsRemaining":{"type":"string","description":"Years remaining"},"estimatedCost":{"type":"number","description":"Estimated cost"},"estConstructionDate":{"type":"string","description":"Estimated construction date"}}},"ValuationSaleDto":{"type":"object","properties":{"mostRecentAppraisedValue":{"type":"number","description":"Most recent appraised value of the property"},"date":{"format":"date-time","type":"string","description":"Date of the valuation or sale"},"salePrice":{"type":"number","description":"Sale price of the property"},"sellingCosts":{"type":"number","description":"Selling costs associated with the sale of the property"},"primaryResidenceAtSale":{"type":"boolean","description":"Indicates whether the property is a primary residence at the time of sale"},"saleDate":{"type":"number","description":"Sale date"}}},"ProjectionsAndParametersDto":{"type":"object","properties":{"capitalGrowth":{"type":"number","description":"The capital growth amount"},"costEscalation":{"type":"number"},"revenueGrowth":{"type":"number"},"interestRate":{"type":"number"},"netRentPaidIntoOffsetAccount":{"type":"boolean"},"personalSalaryPaidIntoOffsetAccount":{"type":"boolean"},"equityInHomeGoalForCashOutRefinance":{"type":"number"},"profitOnSaleTarget":{"type":"number"},"startDate":{"type":"string"},"endDate":{"type":"string"}}},"MainResidenceInputsDto":{"type":"object","properties":{"active":{"type":"boolean","description":"Indicates whether the change is active"},"currentUse":{"type":"string","description":"Current use of the property","enum":["Residence","Investment"]},"newUse":{"type":"string","description":"New use of the property","enum":["Residence","Investment"]},"date":{"type":"string","description":"The date of the change"},"years":{"type":"string","description":"The number of years for the change"},"untilSale":{"type":"boolean","description":"Indicates whether the change is until sale"},"endDate":{"type":"string","description":"The end date of the change"},"claimingNewMR":{"type":"boolean","description":"Indicates whether claiming new main residence"}},"required":["active","currentUse","newUse","date","years","untilSale","endDate","claimingNewMR"]},"PropertyLoanDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the loan"},"createdAt":{"format":"date-time","type":"string","description":"The created date of the loan"},"active":{"type":"boolean","description":"A property indicating if a loan is active or not"},"equityAvailable":{"type":"number","description":"The amount of equity available the property has"},"availableEquityRemaning":{"type":"number","description":"the avaiable equity after the loan balance"},"name":{"type":"string","description":"The name of the property"},"appraisalValueFromBank":{"type":"number","description":"The appraisal value from the bank"},"reasonForRefinancing":{"type":"string","description":"The reason for refinancing"},"dateLoanAdded":{"format":"date-time","type":"string","description":"The date the loan was added"},"startDatePortfolioAutomationTiming":{"format":"date-time","type":"string","description":"The start date of the portfolio automation timing"},"refinanceNumber":{"type":"number","description":"The refinance number"},"addingDollarsOfEquityWithdrawn":{"type":"number","description":"The adding dollars of equity withdrawn"},"dollarsOfEquityWithdrawnForInvestment":{"type":"number","description":"The dollars of equity withdrawn for investment"},"propertyInput":{"type":"string","description":"The property input"},"fixedPeriodStartDate":{"format":"date-time","type":"string","description":"The fixed period start date"},"interestOnlyPeriod":{"type":"boolean","description":"The interest only period"},"interestOnlyStartDate":{"format":"date-time","type":"string","description":"The interest only start date"},"interestOnlyLength":{"type":"number","description":"The interest only length"},"upfrontFeesAndLmiFees":{"type":"number","description":"The upfront fees and lmi fees"},"annualFees":{"type":"number","description":"The annual fees"},"endDate":{"format":"date-time","type":"string","description":"The end date of the loan"},"lender":{"type":"string","description":"The financial institution providing the loan"},"loanBalance":{"type":"number","description":"The initial loan balance"},"currentLoanBalance":{"type":"number","description":"The current (outstanding) loan balance. Falls back to loanBalance when absent."},"tenor":{"type":"number","description":"The duration of the loan in years"},"propertyTarget":{"type":"string","description":"The property target"},"startDate":{"format":"date-time","type":"string","description":"The start date of the loan"},"loanType":{"type":"string","description":"The type of the loan, either Principal & Interest or Interest Only","enum":["Principal&Interest","Interest Only"]},"propertyLoanInvestAmount":{"type":"number","description":"The amount inputted by the user when they invest into a property"},"interestRepaymentType":{"type":"string","description":"Describes the current interest repayments, either Variable or Fixed","enum":["Variable","Fixed"]},"fixedRate":{"type":"number","description":"The fixed rate amount set by the user"},"lengthOfInterestOnly":{"type":"number","description":"The length of the interest in years after the user has selected Interest Only"},"lengthOfFixedReypayment":{"type":"number","description":"The length of the interest in years after the user has selected Fixed current interest repayment"},"isAddLoan":{"type":"boolean","description":"Indicates if the loan is an add loan"},"hasOffsetAccount":{"type":"boolean","description":"Indicates if the loan has an offset account"},"currentOffsetAccountBalance":{"type":"number","description":"The current offset account balance"},"currentOffsetAccountBalanceAsAtDate":{"type":"string","description":"The date when the offset account balance was recorded"},"variableRate":{"type":"number","description":""},"upfrontCommission":{"type":"number","description":""},"trailCommission":{"type":"number","description":""},"endDateRefiOverride":{"format":"date-time","type":"string"},"startDateRefinanceLookup":{"format":"date-time","type":"string"},"dollarsOfResidualDebt":{"type":"number","description":"The residual debt of the loan"},"isFixed":{"type":"boolean","description":"Indicates if the loan is a fixed loan"},"isInterestOnly":{"type":"boolean","description":"Indicates if the loan is an interest only loan"},"refinanceArrayLookup":{"type":"number","description":"The refinance number/array lookup"},"positionInRefiArray":{"type":"number","description":"The position in the refinance array"},"debtFromRefi":{"type":"number","description":"The debt from the refinance. GET"},"equityFromRefi":{"type":"number","description":"The equity from the refinance. GET"},"loanBalanceFromRefi":{"type":"number","description":"The loan balance from the refinance. GET"},"refinanceId":{"type":"string","description":"Links this loan row to a refinanceDetails.refinanceId"}},"required":["createdAt","equityAvailable","availableEquityRemaning","name","appraisalValueFromBank","reasonForRefinancing","dateLoanAdded","startDatePortfolioAutomationTiming","refinanceNumber","addingDollarsOfEquityWithdrawn","dollarsOfEquityWithdrawnForInvestment","propertyInput","fixedPeriodStartDate","interestOnlyPeriod","interestOnlyStartDate","interestOnlyLength","upfrontFeesAndLmiFees","annualFees","endDate","lender","loanBalance","tenor","startDate","loanType","propertyLoanInvestAmount","interestRepaymentType","fixedRate","lengthOfInterestOnly","lengthOfFixedReypayment"]},"AdvancedInputsDto":{"type":"object","properties":{"rentalIncomeAndRevenue":{"description":"The rental income and revenue of the property","type":"array","items":{"$ref":"#/components/schemas/RentalIncomeAndRevenueDto"}},"itemisedOperatingExpenses":{"description":"The itemised operating expenses of the property","type":"array","items":{"$ref":"#/components/schemas/ItemisedOperatingExpensesDto"}},"constructionLoans":{"description":"The construction loan of the property","type":"array","items":{"$ref":"#/components/schemas/ConstructionLoanForAdvancedInputDto"}},"constructionFacility":{"description":"The construction facility of the property","type":"array","items":{"$ref":"#/components/schemas/ConstructionFacilityDto"}},"ongoingCapitalWorksAndImprovements":{"description":"The ongoing capital works and improvements of the property","type":"array","items":{"$ref":"#/components/schemas/OngoingCapitalWorksAndImprovementsDto"}},"valuationSales":{"description":"The valuation sale of the property","type":"array","items":{"$ref":"#/components/schemas/ValuationSaleAdvancedInputDto"}},"manualCapitalWorksDeprecationClaims":{"description":"The manual capital works depreciation claims of the property","type":"array","items":{"$ref":"#/components/schemas/ManualCapitalWorksDeprecationClaimsDto"}},"expenses":{"description":"The expense of the property","type":"array","items":{"$ref":"#/components/schemas/ExpenseForPropertyDto"}},"adjustLoanTerms":{"description":"The adjust loan terms of the property","type":"array","items":{"$ref":"#/components/schemas/AdjustLoanTermsDto"}},"financeAndTax":{"description":"The finance and tax of the property","allOf":[{"$ref":"#/components/schemas/FinanceAndTaxDto"}]},"projectionsAndParameters":{"description":"The projections and parameters of the property","type":"array","items":{"$ref":"#/components/schemas/ProjectionsAndParametersAdvancedInputsDto"}},"sell":{"description":"The sell of the property","type":"array","items":{"$ref":"#/components/schemas/SellPropertyDto"}},"variableRate":{"description":"The variable rate of the property","type":"array","items":{"$ref":"#/components/schemas/VariableRateForPropertyDto"}},"costEscalation":{"description":"The cost escalation of the property","type":"array","items":{"$ref":"#/components/schemas/EscalationForPropertyDto"}},"moveHouse":{"description":"The move house of the property","type":"array","items":{"$ref":"#/components/schemas/MoveHouseForQuickActionsDto"}},"grannyFlat":{"description":"The granny flat of the property","type":"array","items":{"$ref":"#/components/schemas/GrannyFlatForQuickActionsDto"}},"baseParameters":{"description":"The base parameters of the property","allOf":[{"$ref":"#/components/schemas/BaseParametersDto"}]},"voluntaryRepayments":{"description":"The voluntary repayments of the property","type":"array","items":{"$ref":"#/components/schemas/VoluntaryRepaymentDto"}},"offsetAccounts":{"description":"The offset account transactions of the property","type":"array","items":{"$ref":"#/components/schemas/OffsetAccountDto"}},"refinanceDetails":{"description":"The refinance details of the property","type":"array","items":{"$ref":"#/components/schemas/RefinanceDetailsInputDto"}}}},"RentalIncomeAndRevenueDto":{"type":"object","properties":{"rentalId":{"type":"string","description":"The unique identifier for the capital work or improvement"},"active":{"type":"boolean","description":"Indicates whether the rental income and revenue is currently active"},"name":{"type":"string","description":"Name of the rental income and revenue"},"startDate":{"format":"date-time","type":"string","description":"Start date of the rental income and revenue"},"length":{"type":"number","description":"Duration of rent in months"},"endDate":{"format":"date-time","type":"string","description":"End date of the rental income and revenue"},"rentPerWeek":{"type":"number","description":"Rent per Week for the rental income and revenue"},"floorSpaceRented":{"type":"number","description":"Floor space rented of property(Rental Partial)"},"totalFloorSpace":{"type":"number","description":"Total floor space rented of property(Rental Partial)"}}},"ItemisedOperatingExpensesDto":{"type":"object","properties":{"expenseId":{"type":"string","description":"The unique identifier for the operating expensex"},"amount":{"type":"number","description":"The amount of the itemised expense(Total Expense if One-off Expense)"},"active":{"type":"boolean","description":"Indicates whether the operating expense is currently active"},"name":{"type":"string","description":"The name of the operating expense"},"expenseType":{"type":"string","description":"The expense type of the itemised expense(Optional if one-off expense)"},"frequency":{"type":"string","description":"The frequency of the itemised expense (e.g., Monthly, Annually)"},"startDate":{"format":"date-time","type":"string","description":"The start date of the operating expense"},"endDate":{"format":"date-time","type":"string","description":"The end date of the operating expense"},"date":{"format":"date-time","type":"string","description":"The date of the operating expense"}}},"ConstructionLoanForAdvancedInputDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the Construction Loan"},"constructionLength":{"type":"number","description":"The Construction length of the Drawdown facility In months"},"buildCost":{"type":"number","description":"The Build Cost of the Drawdown facility"},"initialLoanBalance":{"type":"number","description":"The Initial Loan Balance of the Drawdown facility"},"estAfterRepairValue":{"type":"number","description":"The estimated after Repair Value of the Drawdown facility"},"constructionInterestRate":{"type":"number","description":"The Construction interest rate of the Drawdown facility"},"financialInstitution":{"type":"string","description":"The financial institution providing the repayment facility"},"loanType":{"type":"string","description":"The Loan Type of the Construction Loan"},"interestOnlyLength":{"type":"number","description":"Length of the interest-only period in years"},"interestRepaymentType":{"type":"string","description":"Describes the current interest repayments, either Variable or Fixed"},"fixedRateLength":{"type":"string","description":"The fixed rate length"},"fixedRatePercent":{"type":"number","description":"The fixed interest rate percentage"},"startDate":{"type":"string","description":"The start date of the repayment facility"},"tenor":{"type":"number","description":"The tenor of the repayment facility"},"endDate":{"format":"date-time","type":"string","description":"The end date of the repayment facility"},"lengthOfInterestOnly":{"type":"number","description":"The length of the interest in years after the user has selected Interest Only"},"isAddLoan":{"type":"boolean","description":"Indicates if the loan is an add loan"},"currentOffsetAccountBalance":{"type":"number","description":"The current offset account balance"},"currentOffsetAccountBalanceAsAtDate":{"type":"string","description":"The date when the offset account balance was recorded"},"variableRate":{"type":"number","description":""},"upfrontCommission":{"type":"number","description":""},"trailCommission":{"type":"number","description":""},"endDateRefiOverride":{"type":"string"}},"required":["id","interestRepaymentType","lengthOfInterestOnly"]},"ConstructionFacilityDto":{"type":"object","properties":{"percentOfCost":{"type":"number","description":"The percentage of the cost that the construction facility is for"},"startDate":{"type":"string","description":"The start date of the construction facility"},"length":{"type":"string","description":"The length of the construction facility"},"endDate":{"type":"string","description":"The end date of the construction facility"}}},"OngoingCapitalWorksAndImprovementsDto":{"type":"object","properties":{"cwiId":{"type":"string","description":"The unique identifier for the capital work or improvement"},"name":{"type":"string","description":"The name of the capital work or improvement"},"active":{"type":"boolean","description":"Indicates whether the capital work or improvement is currently active"},"costOfCompletion":{"type":"number","description":"The amount it will cost on completion"},"completionDate":{"type":"string","description":"The completion date of the capital work or improvement"},"estValueAfterImprovements":{"type":"number","description":"The amount estimated on completion"}}},"ValuationSaleAdvancedInputDto":{"type":"object","properties":{"valuationSaleId":{"type":"string","description":"The unique identifier for the capital work or improvement"},"mostRecentAppraisedValue":{"type":"number","description":"Most recent appraised value of the property"},"date":{"format":"date-time","type":"string","description":"Date of the valuation or sale"},"salePrice":{"type":"number","description":"Sale price of the property"},"saleDate":{"type":"number","description":"Sale date"},"sellingCosts":{"type":"number","description":"Selling costs associated with the sale of the property"},"primaryResidenceAtSale":{"type":"boolean","description":"Indicates whether the property is a primary residence at the time of sale"}}},"ManualCapitalWorksDeprecationClaimsDto":{"type":"object","properties":{"claimedYear":{"type":"number","description":"The year of the manual capital works depreciation claim"}}},"ExpenseForPropertyDto":{"type":"object","properties":{"expenseId":{"type":"string","description":"The unique identifier for the Expense"},"name":{"type":"string","description":"The name of the expense item"},"date":{"format":"date-time","type":"string","description":"The date of the expense item"},"effectiveLife":{"type":"string","description":"The effective life of the PP&E item"},"bookValue":{"type":"number","description":"Book Value"},"method":{"type":"string","description":"The depreciation method used for the PP&E item","enum":["STRAIGHTLINE","DIMINISHING_VALUE","BALANCING_ADJUSTMENT"]},"expenseType":{"type":"string","description":"The type of expense","enum":["PPAndE","Operating","one-off"]},"straightLine":{"description":"Details of the straight-line depreciation method","allOf":[{"$ref":"#/components/schemas/StraightLineDto"}]},"dimishingValue":{"description":"Details of the diminishing value depreciation method","allOf":[{"$ref":"#/components/schemas/DimishingValueDto"}]},"balancingAdjustment":{"description":"Details of the balancing adjustment for the PP&E item","allOf":[{"$ref":"#/components/schemas/BalancingAdjustmentDto"}]}},"required":["expenseId"]},"StraightLineDto":{"type":"object","properties":{"perAnnum":{"type":"number","description":"Annual depreciation amount using the straight-line method"},"perPeriod":{"type":"number","description":"Per-period depreciation amount using the straight-line method"}}},"DimishingValueDto":{"type":"object","properties":{"perAnnum":{"type":"number","description":"Annual depreciation amount using the diminishing value method"},"perPeriod":{"type":"number","description":"Per-period depreciation amount using the diminishing value method"}}},"BalancingAdjustmentDto":{"type":"object","properties":{"saleDate":{"type":"string","description":"The sale date of the asset for balancing adjustment purposes"},"salvageValue":{"type":"number","description":"The salvage value of the asset at the end of its life"}}},"AdjustLoanTermsDto":{"type":"object","properties":{"loanId":{"type":"string","description":"The id of the loan that you want to adjust"},"loanType":{"type":"string","description":"The Loan type input(should only be Interest only if the user wants to change the loan type)"},"interestRepaymentType":{"type":"string","description":"The current repayments type input(should only be Fixed)"},"lengthOfInterestOnly":{"type":"number","description":"The length of the interest in years after the user has selected Interest Only"},"lengthOfFixedReypayment":{"type":"number","description":"The length of the interest in years after the user has selected Fixed current interest repayment"}},"required":["loanId","loanType","interestRepaymentType","lengthOfInterestOnly","lengthOfFixedReypayment"]},"FinanceAndTaxDto":{"type":"object","properties":{"ownership":{"type":"string","description":"The ownership of the property"},"capitalWorksClaim":{"type":"string","description":"The capital works claim of the property","enum":["WEEKLY","MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUAL","ANNUAL","ONE_OFF"]},"lowValueAssetPooling":{"type":"boolean","description":"The low value asset pooling of the property"},"netRentPaidIntoOffsetAccount":{"type":"string","description":"The net rent paid into offset account of the property"},"claimCapitalWorksAnually":{"type":"boolean","description":"The claim capital works annually of the property"},"ppAndEDeprecriationMethod":{"type":"string","description":"The pp and e depreciation method of the property","enum":["STRAIGHTLINE","DIMINISHING_VALUE","BALANCING_ADJUSTMENT"]},"priceTarget":{"type":"number","description":"The price target of the property"},"cgtLiability":{"type":"number","description":"The cgt liability of the property"}}},"ProjectionsAndParametersAdvancedInputsDto":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for the projections and parameters"},"capitalGrowthAmount":{"type":"number","description":"Capital growth amount"},"costEscalation":{"type":"number","description":"Cost escalation"},"revenueGrowth":{"type":"number","description":"Revenue growth"},"interestRate":{"type":"number","description":"Interest rate"},"netRentPaidIntoOffsetAccount":{"type":"boolean","description":"Net rent paid into offset account"},"personalSalaryPaidIntoOffsetAccount":{"type":"boolean","description":"Personal salary paid into offset account"},"equityInHomeGoalForCashOutRefinance":{"type":"number","description":"Equity in home goal for cash out refinance"},"profitOnSaleTarget":{"type":"number","description":"Profit on sale target"},"startDate":{"type":"string","description":"Start date"},"endDate":{"type":"string","description":"End date"}}},"SellPropertyDto":{"type":"object","properties":{"sellId":{"type":"string","description":"The unique identifier for Sell"},"date":{"format":"date-time","type":"string","description":"Date of the valuation or sale"},"salePrice":{"type":"number","description":"Sale price of the property"},"sellingCosts":{"type":"number","description":"Selling costs associated with the sale of the property"},"netCapitalGainAtSale":{"type":"number","description":"Net capital gain at sale"}}},"VariableRateForPropertyDto":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for the variable rate"},"variableRate":{"type":"number","description":"The variable rate between 0.01 and 1 (0% and 100%)"},"date":{"type":"string","description":"The date of the variable rate"}},"required":["id"]},"EscalationForPropertyDto":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for the escalation rate"},"costEscalationRate":{"type":"number","description":"The Cost Escalation Rate between 0.01 and 1 (0% and 100%)"},"date":{"type":"string","description":"The date of the variable rate"}},"required":["id"]},"MoveHouseForQuickActionsDto":{"type":"object","properties":{"moveHouseId":{"type":"string","description":"The unique identifier for the capital work or improvement"},"currentMarketValue":{"type":"number","description":"Current Estimated Market Value (Only input when Investment > Main Residence)"},"newUse":{"type":"string","description":"New use of the property"},"startDate":{"format":"date-time","type":"string","description":"The start date of the change"},"untilSale":{"type":"boolean","description":"Indicates whether the change lasts until the sale date"},"endDate":{"format":"date-time","type":"string","description":"The end date of the rent"},"isPrimaryResidence":{"type":"boolean","description":"Indicates whether the residence is a primary residence"},"claimMainResidenceExemption":{"type":"boolean","description":"Whether claiming main residence exemption on another property"}},"required":["moveHouseId","currentMarketValue","newUse","startDate","untilSale","endDate","isPrimaryResidence"]},"GrannyFlatForQuickActionsDto":{"type":"object","properties":{"grannyFlatId":{"type":"string","description":"Unique Identifier for the Granny flat"},"totalCostAtCompletion":{"type":"number","description":"Total Cost at Completion"},"date":{"format":"date-time","type":"string","description":"The start date of the operating expense"},"grannyFlatFloorSpace":{"type":"number","description":"Granny Flat floor Space"},"mainHouseFloorSpace":{"type":"number","description":"Main House floor Space"}}},"BaseParametersDto":{"type":"object","properties":{"capitalGrowth":{"type":"number","description":"The capital growth of the property"},"rentAndCostGrowth":{"type":"number","description":"The rent & cost growth of the property"},"variableRate":{"type":"number","description":"The variable rate of the property"},"occupancy":{"type":"number","description":"The occupancy of the property"},"sellingCosts":{"type":"number","description":"The selling costs of the property"},"ownership":{"type":"number","description":"The ownership of the property"}}},"VoluntaryRepaymentDto":{"type":"object","properties":{"voluntaryRepaymentId":{"type":"string","description":"The unique identifier for the voluntary repayment"},"amount":{"type":"number","description":"The amount of the voluntary repayment"},"date":{"type":"string","description":"The date of the voluntary repayment"},"loanId":{"type":"string","description":"The ID of the loan"},"loanIndex":{"type":"number","description":"The index of the loan"},"propertyId":{"type":"string","description":"The ID of the property"},"userId":{"type":"string","description":"The ID of the client whose personal timeline shows the repayment"}}},"OffsetAccountDto":{"type":"object","properties":{"offsetAccountId":{"type":"string","description":"The unique identifier for the offset account transaction"},"amount":{"type":"number","description":"The amount of the offset account"},"date":{"type":"string","description":"The date of the offset account"},"loanId":{"type":"string","description":"The ID of the loan"},"loanIndex":{"type":"number","description":"The index of the loan"},"propertyId":{"type":"string","description":"The ID of the property"},"withdraw":{"type":"boolean","description":"If true = offset WITHDRAW (FCF withdraw to personal). If false = offset ADD (FCF contribution from personal)."},"userId":{"type":"string","description":"The ID of the client whose personal timeline shows the transaction"}}},"RefinanceDetailsInputDto":{"type":"object","properties":{"refinanceId":{"type":"string","description":"Unique id of the refinance (generated on create)"},"active":{"type":"boolean","description":"Indicates if the refinance is active or not"},"refinanceDate":{"format":"date-time","type":"string","description":"The start date of the loan"},"refinanceNumber":{"type":"number","description":"The refinance number"},"newLender":{"type":"string","description":"The new lender"},"newLoans":{"description":"Details of the new loans","type":"array","items":{"type":"string"}},"refiLoans":{"description":"Details of the Loan","type":"array","items":{"type":"string"}}},"required":["refinanceDate","refinanceNumber","newLender","newLoans","refiLoans"]},"PropertyOwnershipEntityInputDto":{"type":"object","properties":{"slot":{"type":"number","description":"INPUTS!270 — owner slot 1–5 (\"Entity 1\"..\"Entity 5\" row label). Unique per property.","minimum":1,"maximum":5},"ownerName":{"type":"string","description":"INPUTS!271–275 OWNER NAMES — \"User1 Personal\" | \"User2 Personal\" | an entity name as saved on /v1/entities (INPUTS!199). Matched by text in the model; no id."},"ownershipPercent":{"type":"number","description":"INPUTS!277–281 — ownership %, 0–100 (sheet 0.25 = 25). Slots on a property must total 100 (INPUTS!289 check).","minimum":0,"maximum":100}},"required":["slot","ownerName","ownershipPercent"]},"PropertyAssumptionDto":{"type":"object","properties":{"amount":{"type":"number"},"date":{"format":"date-time","type":"string"},"type":{"type":"string","enum":["CAPITAL_GROWTH","RENTAL_GROWTH","RENTAL_INCOME","OPERATING_COSTS","DEBT_PAYMENTS","COST_ESCALATION","VARIABLE_RATE"]},"frequency":{"type":"string","enum":["WEEKLY","MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUAL","ANNUAL","ONE_OFF"]},"duration":{"type":"number"}}},"PropertyAddress":{"type":"object","properties":{}}}}}
```

## The AvmAddressDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"AvmAddressDto":{"type":"object","properties":{"state":{"type":"string","description":"State"},"suburb":{"type":"string","description":"Suburb"},"postcode":{"type":"string","description":"Postcode"},"lotNumber":{"type":"string","description":"Lot number"},"streetName":{"type":"string","description":"Street name"},"streetType":{"type":"string","description":"Street type"},"unitNumber":{"type":"string","description":"Unit number"},"fullAddress":{"type":"string","description":"Full address"},"streetNumber":{"type":"string","description":"Street number"}},"required":["state","suburb","postcode","lotNumber","streetName","streetType","unitNumber","fullAddress","streetNumber"]}}}}
```

## The PropertyAddressAvmResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PropertyAddressAvmResponseDto":{"type":"object","properties":{"gpid":{"type":"string","description":"Gpid"},"address":{"description":"Address","allOf":[{"$ref":"#/components/schemas/AvmAddressDto"}]},"matchScore":{"type":"string","description":"Match score"},"propertyId":{"type":"string","description":"Property id"}},"required":["gpid","address","matchScore","propertyId"]},"AvmAddressDto":{"type":"object","properties":{"state":{"type":"string","description":"State"},"suburb":{"type":"string","description":"Suburb"},"postcode":{"type":"string","description":"Postcode"},"lotNumber":{"type":"string","description":"Lot number"},"streetName":{"type":"string","description":"Street name"},"streetType":{"type":"string","description":"Street type"},"unitNumber":{"type":"string","description":"Unit number"},"fullAddress":{"type":"string","description":"Full address"},"streetNumber":{"type":"string","description":"Street number"}},"required":["state","suburb","postcode","lotNumber","streetName","streetType","unitNumber","fullAddress","streetNumber"]}}}}
```

## The PropertyAddressAvmDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PropertyAddressAvmDto":{"type":"object","properties":{"error":{"type":"string","description":"Error"},"response":{"description":"Response","allOf":[{"$ref":"#/components/schemas/PropertyAddressAvmResponseDto"}]}},"required":["error","response"]},"PropertyAddressAvmResponseDto":{"type":"object","properties":{"gpid":{"type":"string","description":"Gpid"},"address":{"description":"Address","allOf":[{"$ref":"#/components/schemas/AvmAddressDto"}]},"matchScore":{"type":"string","description":"Match score"},"propertyId":{"type":"string","description":"Property id"}},"required":["gpid","address","matchScore","propertyId"]},"AvmAddressDto":{"type":"object","properties":{"state":{"type":"string","description":"State"},"suburb":{"type":"string","description":"Suburb"},"postcode":{"type":"string","description":"Postcode"},"lotNumber":{"type":"string","description":"Lot number"},"streetName":{"type":"string","description":"Street name"},"streetType":{"type":"string","description":"Street type"},"unitNumber":{"type":"string","description":"Unit number"},"fullAddress":{"type":"string","description":"Full address"},"streetNumber":{"type":"string","description":"Street number"}},"required":["state","suburb","postcode","lotNumber","streetName","streetType","unitNumber","fullAddress","streetNumber"]}}}}
```

## The PropertyDetailsWithAvmDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PropertyDetailsWithAvmDto":{"type":"object","properties":{"address":{"description":"Avm","allOf":[{"$ref":"#/components/schemas/PropertyAddressAvmDto"}]}},"required":["address"]},"PropertyAddressAvmDto":{"type":"object","properties":{"error":{"type":"string","description":"Error"},"response":{"description":"Response","allOf":[{"$ref":"#/components/schemas/PropertyAddressAvmResponseDto"}]}},"required":["error","response"]},"PropertyAddressAvmResponseDto":{"type":"object","properties":{"gpid":{"type":"string","description":"Gpid"},"address":{"description":"Address","allOf":[{"$ref":"#/components/schemas/AvmAddressDto"}]},"matchScore":{"type":"string","description":"Match score"},"propertyId":{"type":"string","description":"Property id"}},"required":["gpid","address","matchScore","propertyId"]},"AvmAddressDto":{"type":"object","properties":{"state":{"type":"string","description":"State"},"suburb":{"type":"string","description":"Suburb"},"postcode":{"type":"string","description":"Postcode"},"lotNumber":{"type":"string","description":"Lot number"},"streetName":{"type":"string","description":"Street name"},"streetType":{"type":"string","description":"Street type"},"unitNumber":{"type":"string","description":"Unit number"},"fullAddress":{"type":"string","description":"Full address"},"streetNumber":{"type":"string","description":"Street number"}},"required":["state","suburb","postcode","lotNumber","streetName","streetType","unitNumber","fullAddress","streetNumber"]}}}}
```

## The PropertyHistoryDataDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PropertyHistoryDataDto":{"type":"object","properties":{"id":{"type":"string","description":"Property id"},"createdAt":{"type":"string","description":"Created at"},"updatedAt":{"type":"string","description":"Updated at"},"propertyId":{"type":"string","description":"Property id"},"propertyName":{"type":"string","description":"Property name"},"propertyDetails":{"description":"Property details","allOf":[{"$ref":"#/components/schemas/PropertyDetailsWithAvmDto"}]}},"required":["id","createdAt","updatedAt","propertyId","propertyName","propertyDetails"]},"PropertyDetailsWithAvmDto":{"type":"object","properties":{"address":{"description":"Avm","allOf":[{"$ref":"#/components/schemas/PropertyAddressAvmDto"}]}},"required":["address"]},"PropertyAddressAvmDto":{"type":"object","properties":{"error":{"type":"string","description":"Error"},"response":{"description":"Response","allOf":[{"$ref":"#/components/schemas/PropertyAddressAvmResponseDto"}]}},"required":["error","response"]},"PropertyAddressAvmResponseDto":{"type":"object","properties":{"gpid":{"type":"string","description":"Gpid"},"address":{"description":"Address","allOf":[{"$ref":"#/components/schemas/AvmAddressDto"}]},"matchScore":{"type":"string","description":"Match score"},"propertyId":{"type":"string","description":"Property id"}},"required":["gpid","address","matchScore","propertyId"]},"AvmAddressDto":{"type":"object","properties":{"state":{"type":"string","description":"State"},"suburb":{"type":"string","description":"Suburb"},"postcode":{"type":"string","description":"Postcode"},"lotNumber":{"type":"string","description":"Lot number"},"streetName":{"type":"string","description":"Street name"},"streetType":{"type":"string","description":"Street type"},"unitNumber":{"type":"string","description":"Unit number"},"fullAddress":{"type":"string","description":"Full address"},"streetNumber":{"type":"string","description":"Street number"}},"required":["state","suburb","postcode","lotNumber","streetName","streetType","unitNumber","fullAddress","streetNumber"]}}}}
```

## The PropertyHistoryWrapperDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PropertyHistoryWrapperDto":{"type":"object","properties":{"success":{"type":"boolean","description":"Success"},"data":{"description":"Data","type":"array","items":{"$ref":"#/components/schemas/PropertyHistoryDataDto"}},"message":{"type":"string","description":"Message"}},"required":["success","data","message"]},"PropertyHistoryDataDto":{"type":"object","properties":{"id":{"type":"string","description":"Property id"},"createdAt":{"type":"string","description":"Created at"},"updatedAt":{"type":"string","description":"Updated at"},"propertyId":{"type":"string","description":"Property id"},"propertyName":{"type":"string","description":"Property name"},"propertyDetails":{"description":"Property details","allOf":[{"$ref":"#/components/schemas/PropertyDetailsWithAvmDto"}]}},"required":["id","createdAt","updatedAt","propertyId","propertyName","propertyDetails"]},"PropertyDetailsWithAvmDto":{"type":"object","properties":{"address":{"description":"Avm","allOf":[{"$ref":"#/components/schemas/PropertyAddressAvmDto"}]}},"required":["address"]},"PropertyAddressAvmDto":{"type":"object","properties":{"error":{"type":"string","description":"Error"},"response":{"description":"Response","allOf":[{"$ref":"#/components/schemas/PropertyAddressAvmResponseDto"}]}},"required":["error","response"]},"PropertyAddressAvmResponseDto":{"type":"object","properties":{"gpid":{"type":"string","description":"Gpid"},"address":{"description":"Address","allOf":[{"$ref":"#/components/schemas/AvmAddressDto"}]},"matchScore":{"type":"string","description":"Match score"},"propertyId":{"type":"string","description":"Property id"}},"required":["gpid","address","matchScore","propertyId"]},"AvmAddressDto":{"type":"object","properties":{"state":{"type":"string","description":"State"},"suburb":{"type":"string","description":"Suburb"},"postcode":{"type":"string","description":"Postcode"},"lotNumber":{"type":"string","description":"Lot number"},"streetName":{"type":"string","description":"Street name"},"streetType":{"type":"string","description":"Street type"},"unitNumber":{"type":"string","description":"Unit number"},"fullAddress":{"type":"string","description":"Full address"},"streetNumber":{"type":"string","description":"Street number"}},"required":["state","suburb","postcode","lotNumber","streetName","streetType","unitNumber","fullAddress","streetNumber"]}}}}
```

## The SearchPropertyInputDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"SearchPropertyInputDto":{"type":"object","properties":{}}}}}
```

## The PropertyOwnershipEntityDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PropertyOwnershipEntityDto":{"type":"object","properties":{"slot":{"type":"number","description":"INPUTS!270 — owner slot 1–5 (\"Entity 1\"..\"Entity 5\" row label). Unique per property.","minimum":1,"maximum":5},"ownerName":{"type":"string","description":"INPUTS!271–275 OWNER NAMES — \"User1 Personal\" | \"User2 Personal\" | an entity name as saved on /v1/entities (INPUTS!199). Matched by text in the model; no id."},"ownershipPercent":{"type":"number","description":"INPUTS!277–281 — ownership %, 0–100 (sheet 0.25 = 25). Slots on a property must total 100 (INPUTS!289 check).","minimum":0,"maximum":100},"entityType":{"type":"string","description":"INPUTS!283–287 DERIVED — ENTITY TYPE = XLOOKUP(ownerName, INPUTS!199, INPUTS!200) → Personal | Company | Trust | SMSF. Read-only. Slot 1 is wired to sheet-all `INPUTS_H283`; slots 2–5 (`INPUTS_H284–H287`) are not ported yet and return null. Also null for entity owners until the entity input adapter lands.","nullable":true,"readOnly":true}},"required":["slot","ownerName","ownershipPercent","entityType"]}}}}
```

## The PropertyOwnershipDerivedTotalsDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PropertyOwnershipDerivedTotalsDto":{"type":"object","properties":{"totalOwnershipPercent":{"type":"number","description":"INPUTS!289 Total Ownership % = SUM(277:281) (check row). `INPUTS_H289` not ported → null.","nullable":true,"readOnly":true},"user1PlusRelatedEntities":{"type":"number","description":"INPUTS!290 Property Owned by User 1 + Related Entities. `INPUTS_H290` not ported → null.","nullable":true,"readOnly":true},"user2PlusRelatedEntities":{"type":"number","description":"INPUTS!291 Property Owned by User 2 + Related Entities. `INPUTS_H291` not ported → null.","nullable":true,"readOnly":true},"totalUser1AndUser2":{"type":"number","description":"INPUTS!292 Total % Owned by User 1 & 2. `INPUTS_H292` not ported → null.","nullable":true,"readOnly":true},"user1EntityOwnership":{"type":"number","description":"INPUTS!293 User 1 Entity Ownership % — sheet-all `INPUTS_H293`. Zero until the entity input adapter lands.","nullable":true,"readOnly":true},"user2EntityOwnership":{"type":"number","description":"INPUTS!294 User 2 Entity Ownership % — sheet-all `INPUTS_H294`. Zero until the entity input adapter lands.","nullable":true,"readOnly":true},"totalUser1AndUser2Entities":{"type":"number","description":"INPUTS!295 Total % Owned by User 1&2 Entities = SUM(293:294) — sheet-all `INPUTS_H295`.","nullable":true,"readOnly":true},"user1PersonalOwnership":{"type":"number","description":"INPUTS!296 User 1 Personal Ownership % — sheet-all `INPUTS_H296` (sum of slots whose ownerName = Owner_1).","nullable":true,"readOnly":true},"user2PersonalOwnership":{"type":"number","description":"INPUTS!297 User 2 Personal Ownership % — sheet-all `INPUTS_H297` (sum of slots whose ownerName = Owner_2).","nullable":true,"readOnly":true}},"required":["totalOwnershipPercent","user1PlusRelatedEntities","user2PlusRelatedEntities","totalUser1AndUser2","user1EntityOwnership","user2EntityOwnership","totalUser1AndUser2Entities","user1PersonalOwnership","user2PersonalOwnership"]}}}}
```

## The PropertyInputsResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PropertyInputsResponseDto":{"type":"object","properties":{"id":{"type":"string","description":"Optional id (e.g. import/sync). Omit to auto-generate."},"name":{"type":"string"},"propertyDetails":{"$ref":"#/components/schemas/PropertyDetailsDto"},"stampDuty":{"$ref":"#/components/schemas/StampDutyDto"},"acquisition":{"$ref":"#/components/schemas/AcquisitionDto"},"acquisitionCost":{"$ref":"#/components/schemas/AcquisitionCostDto"},"homeLoan":{"$ref":"#/components/schemas/HomeLoanDto"},"operations":{"$ref":"#/components/schemas/OperationsDto"},"construction":{"$ref":"#/components/schemas/ConstructionDto"},"constructionLoan":{"$ref":"#/components/schemas/ConstructionLoanDto"},"repaymentFacility":{"$ref":"#/components/schemas/RepaymentFacilityDto"},"grannyFlat":{"$ref":"#/components/schemas/GrannyFlatDto"},"depreciation":{"$ref":"#/components/schemas/DepreciationDto"},"existingCapitalWorks":{"$ref":"#/components/schemas/ExistingCapitalWorksDto"},"valuationAndSale":{"$ref":"#/components/schemas/ValuationSaleDto"},"projectionsAndParameters":{"$ref":"#/components/schemas/ProjectionsAndParametersDto"},"mainResidenceInputs":{"$ref":"#/components/schemas/MainResidenceInputsDto"},"loan":{"$ref":"#/components/schemas/PropertyLoanDto"},"advancedInputs":{"$ref":"#/components/schemas/AdvancedInputsDto"},"expenses":{"$ref":"#/components/schemas/ExpenseForPropertyDto"},"assumptions":{"$ref":"#/components/schemas/PropertyAssumptionDto"},"financeAndTax":{"$ref":"#/components/schemas/FinanceAndTaxDto"},"baseParameters":{"$ref":"#/components/schemas/BaseParametersDto"},"address":{"$ref":"#/components/schemas/PropertyAddress"},"deemedAcquisitionMarketValue":{"type":"number"},"deemedAcquisitionDate":{"format":"date-time","type":"string"},"ownershipEntities":{"description":"INPUTS!269–281 \"PROPERTY OWNERS & RELATED PARTIES\" — stored owner slots with the derived entity type (INPUTS!283–287) on each row.","type":"array","items":{"$ref":"#/components/schemas/PropertyOwnershipEntityDto"}},"derivedTotals":{"description":"INPUTS!288 \"DERIVED — TOTALS\" (rows 289–297), computed by the model from ownershipEntities; never accepted as input. null when the property could not be evaluated (no strategy / model error).","nullable":true,"allOf":[{"$ref":"#/components/schemas/PropertyOwnershipDerivedTotalsDto"}]}}},"PropertyDetailsDto":{"type":"object","properties":{"address":{"type":"string","description":"Property street address"},"suburb":{"type":"string","description":"Suburb/locality"},"state":{"type":"string","description":"State/territory"},"bedrooms":{"type":"number","description":"Number of bedrooms"},"bathrooms":{"type":"number","description":"Number of bathrooms"},"carSpaces":{"type":"number","description":"Number of car spaces"},"totalSqm":{"type":"number","description":"Total floor area in square meters"},"floorSpace":{"type":"number","description":"Total land area in square meters"},"residentialPropertyType":{"type":"string","description":"Type of residential property"},"name":{"type":"string","description":"The name of the property"},"priceEstimate":{"type":"number","description":"The price estimate of the property"},"purchasingCost":{"type":"number","description":"The purchasing cost of the property"},"rentalEstimate":{"type":"number","description":"The rental estimate of the property from Rental AVM external api(rent per week)"},"operatingExpenses":{"type":"number","description":"The Operating expense of the property from Rental AVM external api(Monthly)"},"initialLoanBalance":{"type":"number","description":"The initial loan balance of the property"},"interestRate":{"type":"number","description":"The interest rate of the property(Percentage)"},"monthlyPayment":{"type":"number","description":"The monthly payment of the property"},"portfolio":{"type":"boolean","description":"Add to portfolio"}},"required":["address","suburb","state","bedrooms","bathrooms","carSpaces","totalSqm","floorSpace","residentialPropertyType"]},"StampDutyDto":{"type":"object","properties":{"exemptionOverride":{"type":"boolean","description":"Exemption override"},"stampDutyValuation":{"type":"number","description":"Stamp duty valuation"},"landValueAtPurchase":{"type":"number","description":"Land value at purchase"},"landUse":{"type":"string","description":"Land use"},"primaryResidence":{"type":"string","description":"Primary residence"},"firstHomeBuyer":{"type":"boolean","description":"First home buyer"},"lotType":{"type":"string","description":"Lot type"},"citizenshipStatus":{"type":"string","description":"Citizenship status"},"transactionMethod":{"type":"string","description":"Transaction method"},"ownershipEntity":{"type":"string","description":"Ownership entity"},"ownershipEntityType":{"type":"string","description":"Ownership entity type"},"percentOwnership":{"type":"number","description":"Percent ownership"},"isCoOwnerPartner":{"type":"boolean","description":"Is co-owner partner"},"percentOwnershipUser2":{"type":"number","description":"Percent ownership user 2"}}},"AcquisitionDto":{"type":"object","properties":{"settlementDate":{"type":"string","description":"Settlement date","format":"date-time"},"anticipatedHoldPeriod":{"type":"number"},"dateSold":{"type":"string","description":"Date property was sold/purchased","format":"date-time"},"purchasePrice":{"type":"number"}},"required":["settlementDate","dateSold"]},"AcquisitionCostDto":{"type":"object","properties":{"purchasePrice":{"type":"number"},"depositPercent":{"type":"number"},"depositAmount":{"type":"number"},"stampDuty":{"type":"number"},"lmiPercent":{"type":"number"},"lmiAmount":{"type":"number"},"otherExpensedClosingCosts":{"type":"number"},"capitaliseLmi":{"type":"boolean"}}},"HomeLoanDto":{"type":"object","properties":{"initialLoanBalance":{"type":"number"},"startDate":{"type":"string"},"tenor":{"type":"number"},"endDate":{"type":"string"},"currentLoanBalance":{"type":"number"},"currentOffsetAccountBalance":{"type":"number"},"currentOffsetAccountBalanceAsAtDate":{"type":"string","description":"The date when the offset account balance was recorded"},"isFixed":{"type":"boolean"},"fixedRate":{"type":"number"},"fixedPeriodStartDate":{"type":"string"},"fixedPeriodLength":{"type":"number"},"isInterestOnly":{"type":"boolean"},"interestOnlyStartDate":{"type":"string"},"interestOnlyLength":{"type":"number"},"interestOnlyEndDate":{"type":"string"},"upfrontFees":{"type":"number"},"annualFees":{"type":"number"},"hasOffsetAccount":{"type":"boolean"},"lender":{"type":"string","description":"The financial institution providing the loan"},"variableRate":{"type":"number","description":""},"upfrontCommission":{"type":"number","description":""},"trailCommission":{"type":"number","description":""},"endDateRefiOverride":{"type":"string"}},"required":["lender"]},"OperationsDto":{"type":"object","properties":{"weeklyRent":{"type":"number"},"occupancy":{"type":"number"},"operatingExpenses":{"type":"number"}}},"ConstructionDto":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for the construction"},"active":{"type":"boolean","description":"Indicates whether the construction is currently active"},"constructionStartDate":{"type":"string","description":"The start date of the construction"},"constructionLength":{"type":"string","description":"Length of the construction period"},"completionDate":{"type":"string","description":"The completion date of the construction"},"constructionCost":{"type":"number","description":"The cost of the construction"},"estimatedValueAtCompletion":{"type":"number","description":"The estimated value at the completion of the construction"}}},"ConstructionLoanDto":{"type":"object","properties":{"constructionloanId":{"type":"string","description":"The unique identifier for the capital work or improvement"},"loanType":{"type":"string","description":"Type of the loan"},"ltc":{"type":"number","description":"Loan to Cost (LTC) ratio"},"ltv":{"type":"number","description":"Loan to Value (LTV) ratio"},"constructionInterestRate":{"type":"number","description":"Construction interest rate"},"interestReserveFunding":{"type":"string","description":"Interest reserve funding status"},"drawdownFacilityFees":{"type":"number","description":"Drawdown facility fees"},"timing":{"type":"string","description":"Timing for the construction loan"}}},"RepaymentFacilityDto":{"type":"object","properties":{"financialInstitution":{"type":"string","description":"The financial institution providing the repayment facility"},"initialLoanBalance":{"type":"number","description":"The initial loan balance"},"interestOnlyLength":{"type":"number","description":"Length of the interest-only period in years"},"fixedRateLength":{"type":"string","description":"The fixed rate length"},"fixedRatePercent":{"type":"number","description":"The fixed interest rate percentage"},"startDate":{"type":"string","description":"The start date of the repayment facility"},"tenor":{"type":"number","description":"The tenor of the repayment facility"},"endDate":{"type":"string","description":"The end date of the repayment facility"}}},"GrannyFlatDto":{"type":"object","properties":{"active":{"type":"boolean","description":"Indicates whether the granny flat is currently active"},"cost":{"type":"number","description":"Cost of constructing the granny flat"},"startDate":{"type":"string","description":"Start date of the granny flat construction"},"grannyFlatFloorSpaceRented":{"type":"number","description":"Floor Space in sqm"},"grannyFlatTotalFloorSpace":{"type":"number","description":"Total Floor Space in sqm"}}},"DepreciationDto":{"type":"object","properties":{"plantAndEquipmentMethod":{"type":"string","description":"Plant and Equipment Method"},"lvaPooling":{"type":"boolean","description":"LVA Pooling"},"lcaPooling":{"type":"boolean","description":"LCA Pooling"},"capitalWorksTiming":{"type":"string","description":"Capital Works Timing"}}},"ExistingCapitalWorksDto":{"type":"object","properties":{"mostRecentCapitalWorks":{"type":"string","description":"Most recent capital works"},"yearsRemaining":{"type":"string","description":"Years remaining"},"estimatedCost":{"type":"number","description":"Estimated cost"},"estConstructionDate":{"type":"string","description":"Estimated construction date"}}},"ValuationSaleDto":{"type":"object","properties":{"mostRecentAppraisedValue":{"type":"number","description":"Most recent appraised value of the property"},"date":{"format":"date-time","type":"string","description":"Date of the valuation or sale"},"salePrice":{"type":"number","description":"Sale price of the property"},"sellingCosts":{"type":"number","description":"Selling costs associated with the sale of the property"},"primaryResidenceAtSale":{"type":"boolean","description":"Indicates whether the property is a primary residence at the time of sale"},"saleDate":{"type":"number","description":"Sale date"}}},"ProjectionsAndParametersDto":{"type":"object","properties":{"capitalGrowth":{"type":"number","description":"The capital growth amount"},"costEscalation":{"type":"number"},"revenueGrowth":{"type":"number"},"interestRate":{"type":"number"},"netRentPaidIntoOffsetAccount":{"type":"boolean"},"personalSalaryPaidIntoOffsetAccount":{"type":"boolean"},"equityInHomeGoalForCashOutRefinance":{"type":"number"},"profitOnSaleTarget":{"type":"number"},"startDate":{"type":"string"},"endDate":{"type":"string"}}},"MainResidenceInputsDto":{"type":"object","properties":{"active":{"type":"boolean","description":"Indicates whether the change is active"},"currentUse":{"type":"string","description":"Current use of the property","enum":["Residence","Investment"]},"newUse":{"type":"string","description":"New use of the property","enum":["Residence","Investment"]},"date":{"type":"string","description":"The date of the change"},"years":{"type":"string","description":"The number of years for the change"},"untilSale":{"type":"boolean","description":"Indicates whether the change is until sale"},"endDate":{"type":"string","description":"The end date of the change"},"claimingNewMR":{"type":"boolean","description":"Indicates whether claiming new main residence"}},"required":["active","currentUse","newUse","date","years","untilSale","endDate","claimingNewMR"]},"PropertyLoanDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the loan"},"createdAt":{"format":"date-time","type":"string","description":"The created date of the loan"},"active":{"type":"boolean","description":"A property indicating if a loan is active or not"},"equityAvailable":{"type":"number","description":"The amount of equity available the property has"},"availableEquityRemaning":{"type":"number","description":"the avaiable equity after the loan balance"},"name":{"type":"string","description":"The name of the property"},"appraisalValueFromBank":{"type":"number","description":"The appraisal value from the bank"},"reasonForRefinancing":{"type":"string","description":"The reason for refinancing"},"dateLoanAdded":{"format":"date-time","type":"string","description":"The date the loan was added"},"startDatePortfolioAutomationTiming":{"format":"date-time","type":"string","description":"The start date of the portfolio automation timing"},"refinanceNumber":{"type":"number","description":"The refinance number"},"addingDollarsOfEquityWithdrawn":{"type":"number","description":"The adding dollars of equity withdrawn"},"dollarsOfEquityWithdrawnForInvestment":{"type":"number","description":"The dollars of equity withdrawn for investment"},"propertyInput":{"type":"string","description":"The property input"},"fixedPeriodStartDate":{"format":"date-time","type":"string","description":"The fixed period start date"},"interestOnlyPeriod":{"type":"boolean","description":"The interest only period"},"interestOnlyStartDate":{"format":"date-time","type":"string","description":"The interest only start date"},"interestOnlyLength":{"type":"number","description":"The interest only length"},"upfrontFeesAndLmiFees":{"type":"number","description":"The upfront fees and lmi fees"},"annualFees":{"type":"number","description":"The annual fees"},"endDate":{"format":"date-time","type":"string","description":"The end date of the loan"},"lender":{"type":"string","description":"The financial institution providing the loan"},"loanBalance":{"type":"number","description":"The initial loan balance"},"currentLoanBalance":{"type":"number","description":"The current (outstanding) loan balance. Falls back to loanBalance when absent."},"tenor":{"type":"number","description":"The duration of the loan in years"},"propertyTarget":{"type":"string","description":"The property target"},"startDate":{"format":"date-time","type":"string","description":"The start date of the loan"},"loanType":{"type":"string","description":"The type of the loan, either Principal & Interest or Interest Only","enum":["Principal&Interest","Interest Only"]},"propertyLoanInvestAmount":{"type":"number","description":"The amount inputted by the user when they invest into a property"},"interestRepaymentType":{"type":"string","description":"Describes the current interest repayments, either Variable or Fixed","enum":["Variable","Fixed"]},"fixedRate":{"type":"number","description":"The fixed rate amount set by the user"},"lengthOfInterestOnly":{"type":"number","description":"The length of the interest in years after the user has selected Interest Only"},"lengthOfFixedReypayment":{"type":"number","description":"The length of the interest in years after the user has selected Fixed current interest repayment"},"isAddLoan":{"type":"boolean","description":"Indicates if the loan is an add loan"},"hasOffsetAccount":{"type":"boolean","description":"Indicates if the loan has an offset account"},"currentOffsetAccountBalance":{"type":"number","description":"The current offset account balance"},"currentOffsetAccountBalanceAsAtDate":{"type":"string","description":"The date when the offset account balance was recorded"},"variableRate":{"type":"number","description":""},"upfrontCommission":{"type":"number","description":""},"trailCommission":{"type":"number","description":""},"endDateRefiOverride":{"format":"date-time","type":"string"},"startDateRefinanceLookup":{"format":"date-time","type":"string"},"dollarsOfResidualDebt":{"type":"number","description":"The residual debt of the loan"},"isFixed":{"type":"boolean","description":"Indicates if the loan is a fixed loan"},"isInterestOnly":{"type":"boolean","description":"Indicates if the loan is an interest only loan"},"refinanceArrayLookup":{"type":"number","description":"The refinance number/array lookup"},"positionInRefiArray":{"type":"number","description":"The position in the refinance array"},"debtFromRefi":{"type":"number","description":"The debt from the refinance. GET"},"equityFromRefi":{"type":"number","description":"The equity from the refinance. GET"},"loanBalanceFromRefi":{"type":"number","description":"The loan balance from the refinance. GET"},"refinanceId":{"type":"string","description":"Links this loan row to a refinanceDetails.refinanceId"}},"required":["createdAt","equityAvailable","availableEquityRemaning","name","appraisalValueFromBank","reasonForRefinancing","dateLoanAdded","startDatePortfolioAutomationTiming","refinanceNumber","addingDollarsOfEquityWithdrawn","dollarsOfEquityWithdrawnForInvestment","propertyInput","fixedPeriodStartDate","interestOnlyPeriod","interestOnlyStartDate","interestOnlyLength","upfrontFeesAndLmiFees","annualFees","endDate","lender","loanBalance","tenor","startDate","loanType","propertyLoanInvestAmount","interestRepaymentType","fixedRate","lengthOfInterestOnly","lengthOfFixedReypayment"]},"AdvancedInputsDto":{"type":"object","properties":{"rentalIncomeAndRevenue":{"description":"The rental income and revenue of the property","type":"array","items":{"$ref":"#/components/schemas/RentalIncomeAndRevenueDto"}},"itemisedOperatingExpenses":{"description":"The itemised operating expenses of the property","type":"array","items":{"$ref":"#/components/schemas/ItemisedOperatingExpensesDto"}},"constructionLoans":{"description":"The construction loan of the property","type":"array","items":{"$ref":"#/components/schemas/ConstructionLoanForAdvancedInputDto"}},"constructionFacility":{"description":"The construction facility of the property","type":"array","items":{"$ref":"#/components/schemas/ConstructionFacilityDto"}},"ongoingCapitalWorksAndImprovements":{"description":"The ongoing capital works and improvements of the property","type":"array","items":{"$ref":"#/components/schemas/OngoingCapitalWorksAndImprovementsDto"}},"valuationSales":{"description":"The valuation sale of the property","type":"array","items":{"$ref":"#/components/schemas/ValuationSaleAdvancedInputDto"}},"manualCapitalWorksDeprecationClaims":{"description":"The manual capital works depreciation claims of the property","type":"array","items":{"$ref":"#/components/schemas/ManualCapitalWorksDeprecationClaimsDto"}},"expenses":{"description":"The expense of the property","type":"array","items":{"$ref":"#/components/schemas/ExpenseForPropertyDto"}},"adjustLoanTerms":{"description":"The adjust loan terms of the property","type":"array","items":{"$ref":"#/components/schemas/AdjustLoanTermsDto"}},"financeAndTax":{"description":"The finance and tax of the property","allOf":[{"$ref":"#/components/schemas/FinanceAndTaxDto"}]},"projectionsAndParameters":{"description":"The projections and parameters of the property","type":"array","items":{"$ref":"#/components/schemas/ProjectionsAndParametersAdvancedInputsDto"}},"sell":{"description":"The sell of the property","type":"array","items":{"$ref":"#/components/schemas/SellPropertyDto"}},"variableRate":{"description":"The variable rate of the property","type":"array","items":{"$ref":"#/components/schemas/VariableRateForPropertyDto"}},"costEscalation":{"description":"The cost escalation of the property","type":"array","items":{"$ref":"#/components/schemas/EscalationForPropertyDto"}},"moveHouse":{"description":"The move house of the property","type":"array","items":{"$ref":"#/components/schemas/MoveHouseForQuickActionsDto"}},"grannyFlat":{"description":"The granny flat of the property","type":"array","items":{"$ref":"#/components/schemas/GrannyFlatForQuickActionsDto"}},"baseParameters":{"description":"The base parameters of the property","allOf":[{"$ref":"#/components/schemas/BaseParametersDto"}]},"voluntaryRepayments":{"description":"The voluntary repayments of the property","type":"array","items":{"$ref":"#/components/schemas/VoluntaryRepaymentDto"}},"offsetAccounts":{"description":"The offset account transactions of the property","type":"array","items":{"$ref":"#/components/schemas/OffsetAccountDto"}},"refinanceDetails":{"description":"The refinance details of the property","type":"array","items":{"$ref":"#/components/schemas/RefinanceDetailsInputDto"}}}},"RentalIncomeAndRevenueDto":{"type":"object","properties":{"rentalId":{"type":"string","description":"The unique identifier for the capital work or improvement"},"active":{"type":"boolean","description":"Indicates whether the rental income and revenue is currently active"},"name":{"type":"string","description":"Name of the rental income and revenue"},"startDate":{"format":"date-time","type":"string","description":"Start date of the rental income and revenue"},"length":{"type":"number","description":"Duration of rent in months"},"endDate":{"format":"date-time","type":"string","description":"End date of the rental income and revenue"},"rentPerWeek":{"type":"number","description":"Rent per Week for the rental income and revenue"},"floorSpaceRented":{"type":"number","description":"Floor space rented of property(Rental Partial)"},"totalFloorSpace":{"type":"number","description":"Total floor space rented of property(Rental Partial)"}}},"ItemisedOperatingExpensesDto":{"type":"object","properties":{"expenseId":{"type":"string","description":"The unique identifier for the operating expensex"},"amount":{"type":"number","description":"The amount of the itemised expense(Total Expense if One-off Expense)"},"active":{"type":"boolean","description":"Indicates whether the operating expense is currently active"},"name":{"type":"string","description":"The name of the operating expense"},"expenseType":{"type":"string","description":"The expense type of the itemised expense(Optional if one-off expense)"},"frequency":{"type":"string","description":"The frequency of the itemised expense (e.g., Monthly, Annually)"},"startDate":{"format":"date-time","type":"string","description":"The start date of the operating expense"},"endDate":{"format":"date-time","type":"string","description":"The end date of the operating expense"},"date":{"format":"date-time","type":"string","description":"The date of the operating expense"}}},"ConstructionLoanForAdvancedInputDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the Construction Loan"},"constructionLength":{"type":"number","description":"The Construction length of the Drawdown facility In months"},"buildCost":{"type":"number","description":"The Build Cost of the Drawdown facility"},"initialLoanBalance":{"type":"number","description":"The Initial Loan Balance of the Drawdown facility"},"estAfterRepairValue":{"type":"number","description":"The estimated after Repair Value of the Drawdown facility"},"constructionInterestRate":{"type":"number","description":"The Construction interest rate of the Drawdown facility"},"financialInstitution":{"type":"string","description":"The financial institution providing the repayment facility"},"loanType":{"type":"string","description":"The Loan Type of the Construction Loan"},"interestOnlyLength":{"type":"number","description":"Length of the interest-only period in years"},"interestRepaymentType":{"type":"string","description":"Describes the current interest repayments, either Variable or Fixed"},"fixedRateLength":{"type":"string","description":"The fixed rate length"},"fixedRatePercent":{"type":"number","description":"The fixed interest rate percentage"},"startDate":{"type":"string","description":"The start date of the repayment facility"},"tenor":{"type":"number","description":"The tenor of the repayment facility"},"endDate":{"format":"date-time","type":"string","description":"The end date of the repayment facility"},"lengthOfInterestOnly":{"type":"number","description":"The length of the interest in years after the user has selected Interest Only"},"isAddLoan":{"type":"boolean","description":"Indicates if the loan is an add loan"},"currentOffsetAccountBalance":{"type":"number","description":"The current offset account balance"},"currentOffsetAccountBalanceAsAtDate":{"type":"string","description":"The date when the offset account balance was recorded"},"variableRate":{"type":"number","description":""},"upfrontCommission":{"type":"number","description":""},"trailCommission":{"type":"number","description":""},"endDateRefiOverride":{"type":"string"}},"required":["id","interestRepaymentType","lengthOfInterestOnly"]},"ConstructionFacilityDto":{"type":"object","properties":{"percentOfCost":{"type":"number","description":"The percentage of the cost that the construction facility is for"},"startDate":{"type":"string","description":"The start date of the construction facility"},"length":{"type":"string","description":"The length of the construction facility"},"endDate":{"type":"string","description":"The end date of the construction facility"}}},"OngoingCapitalWorksAndImprovementsDto":{"type":"object","properties":{"cwiId":{"type":"string","description":"The unique identifier for the capital work or improvement"},"name":{"type":"string","description":"The name of the capital work or improvement"},"active":{"type":"boolean","description":"Indicates whether the capital work or improvement is currently active"},"costOfCompletion":{"type":"number","description":"The amount it will cost on completion"},"completionDate":{"type":"string","description":"The completion date of the capital work or improvement"},"estValueAfterImprovements":{"type":"number","description":"The amount estimated on completion"}}},"ValuationSaleAdvancedInputDto":{"type":"object","properties":{"valuationSaleId":{"type":"string","description":"The unique identifier for the capital work or improvement"},"mostRecentAppraisedValue":{"type":"number","description":"Most recent appraised value of the property"},"date":{"format":"date-time","type":"string","description":"Date of the valuation or sale"},"salePrice":{"type":"number","description":"Sale price of the property"},"saleDate":{"type":"number","description":"Sale date"},"sellingCosts":{"type":"number","description":"Selling costs associated with the sale of the property"},"primaryResidenceAtSale":{"type":"boolean","description":"Indicates whether the property is a primary residence at the time of sale"}}},"ManualCapitalWorksDeprecationClaimsDto":{"type":"object","properties":{"claimedYear":{"type":"number","description":"The year of the manual capital works depreciation claim"}}},"ExpenseForPropertyDto":{"type":"object","properties":{"expenseId":{"type":"string","description":"The unique identifier for the Expense"},"name":{"type":"string","description":"The name of the expense item"},"date":{"format":"date-time","type":"string","description":"The date of the expense item"},"effectiveLife":{"type":"string","description":"The effective life of the PP&E item"},"bookValue":{"type":"number","description":"Book Value"},"method":{"type":"string","description":"The depreciation method used for the PP&E item","enum":["STRAIGHTLINE","DIMINISHING_VALUE","BALANCING_ADJUSTMENT"]},"expenseType":{"type":"string","description":"The type of expense","enum":["PPAndE","Operating","one-off"]},"straightLine":{"description":"Details of the straight-line depreciation method","allOf":[{"$ref":"#/components/schemas/StraightLineDto"}]},"dimishingValue":{"description":"Details of the diminishing value depreciation method","allOf":[{"$ref":"#/components/schemas/DimishingValueDto"}]},"balancingAdjustment":{"description":"Details of the balancing adjustment for the PP&E item","allOf":[{"$ref":"#/components/schemas/BalancingAdjustmentDto"}]}},"required":["expenseId"]},"StraightLineDto":{"type":"object","properties":{"perAnnum":{"type":"number","description":"Annual depreciation amount using the straight-line method"},"perPeriod":{"type":"number","description":"Per-period depreciation amount using the straight-line method"}}},"DimishingValueDto":{"type":"object","properties":{"perAnnum":{"type":"number","description":"Annual depreciation amount using the diminishing value method"},"perPeriod":{"type":"number","description":"Per-period depreciation amount using the diminishing value method"}}},"BalancingAdjustmentDto":{"type":"object","properties":{"saleDate":{"type":"string","description":"The sale date of the asset for balancing adjustment purposes"},"salvageValue":{"type":"number","description":"The salvage value of the asset at the end of its life"}}},"AdjustLoanTermsDto":{"type":"object","properties":{"loanId":{"type":"string","description":"The id of the loan that you want to adjust"},"loanType":{"type":"string","description":"The Loan type input(should only be Interest only if the user wants to change the loan type)"},"interestRepaymentType":{"type":"string","description":"The current repayments type input(should only be Fixed)"},"lengthOfInterestOnly":{"type":"number","description":"The length of the interest in years after the user has selected Interest Only"},"lengthOfFixedReypayment":{"type":"number","description":"The length of the interest in years after the user has selected Fixed current interest repayment"}},"required":["loanId","loanType","interestRepaymentType","lengthOfInterestOnly","lengthOfFixedReypayment"]},"FinanceAndTaxDto":{"type":"object","properties":{"ownership":{"type":"string","description":"The ownership of the property"},"capitalWorksClaim":{"type":"string","description":"The capital works claim of the property","enum":["WEEKLY","MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUAL","ANNUAL","ONE_OFF"]},"lowValueAssetPooling":{"type":"boolean","description":"The low value asset pooling of the property"},"netRentPaidIntoOffsetAccount":{"type":"string","description":"The net rent paid into offset account of the property"},"claimCapitalWorksAnually":{"type":"boolean","description":"The claim capital works annually of the property"},"ppAndEDeprecriationMethod":{"type":"string","description":"The pp and e depreciation method of the property","enum":["STRAIGHTLINE","DIMINISHING_VALUE","BALANCING_ADJUSTMENT"]},"priceTarget":{"type":"number","description":"The price target of the property"},"cgtLiability":{"type":"number","description":"The cgt liability of the property"}}},"ProjectionsAndParametersAdvancedInputsDto":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for the projections and parameters"},"capitalGrowthAmount":{"type":"number","description":"Capital growth amount"},"costEscalation":{"type":"number","description":"Cost escalation"},"revenueGrowth":{"type":"number","description":"Revenue growth"},"interestRate":{"type":"number","description":"Interest rate"},"netRentPaidIntoOffsetAccount":{"type":"boolean","description":"Net rent paid into offset account"},"personalSalaryPaidIntoOffsetAccount":{"type":"boolean","description":"Personal salary paid into offset account"},"equityInHomeGoalForCashOutRefinance":{"type":"number","description":"Equity in home goal for cash out refinance"},"profitOnSaleTarget":{"type":"number","description":"Profit on sale target"},"startDate":{"type":"string","description":"Start date"},"endDate":{"type":"string","description":"End date"}}},"SellPropertyDto":{"type":"object","properties":{"sellId":{"type":"string","description":"The unique identifier for Sell"},"date":{"format":"date-time","type":"string","description":"Date of the valuation or sale"},"salePrice":{"type":"number","description":"Sale price of the property"},"sellingCosts":{"type":"number","description":"Selling costs associated with the sale of the property"},"netCapitalGainAtSale":{"type":"number","description":"Net capital gain at sale"}}},"VariableRateForPropertyDto":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for the variable rate"},"variableRate":{"type":"number","description":"The variable rate between 0.01 and 1 (0% and 100%)"},"date":{"type":"string","description":"The date of the variable rate"}},"required":["id"]},"EscalationForPropertyDto":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for the escalation rate"},"costEscalationRate":{"type":"number","description":"The Cost Escalation Rate between 0.01 and 1 (0% and 100%)"},"date":{"type":"string","description":"The date of the variable rate"}},"required":["id"]},"MoveHouseForQuickActionsDto":{"type":"object","properties":{"moveHouseId":{"type":"string","description":"The unique identifier for the capital work or improvement"},"currentMarketValue":{"type":"number","description":"Current Estimated Market Value (Only input when Investment > Main Residence)"},"newUse":{"type":"string","description":"New use of the property"},"startDate":{"format":"date-time","type":"string","description":"The start date of the change"},"untilSale":{"type":"boolean","description":"Indicates whether the change lasts until the sale date"},"endDate":{"format":"date-time","type":"string","description":"The end date of the rent"},"isPrimaryResidence":{"type":"boolean","description":"Indicates whether the residence is a primary residence"},"claimMainResidenceExemption":{"type":"boolean","description":"Whether claiming main residence exemption on another property"}},"required":["moveHouseId","currentMarketValue","newUse","startDate","untilSale","endDate","isPrimaryResidence"]},"GrannyFlatForQuickActionsDto":{"type":"object","properties":{"grannyFlatId":{"type":"string","description":"Unique Identifier for the Granny flat"},"totalCostAtCompletion":{"type":"number","description":"Total Cost at Completion"},"date":{"format":"date-time","type":"string","description":"The start date of the operating expense"},"grannyFlatFloorSpace":{"type":"number","description":"Granny Flat floor Space"},"mainHouseFloorSpace":{"type":"number","description":"Main House floor Space"}}},"BaseParametersDto":{"type":"object","properties":{"capitalGrowth":{"type":"number","description":"The capital growth of the property"},"rentAndCostGrowth":{"type":"number","description":"The rent & cost growth of the property"},"variableRate":{"type":"number","description":"The variable rate of the property"},"occupancy":{"type":"number","description":"The occupancy of the property"},"sellingCosts":{"type":"number","description":"The selling costs of the property"},"ownership":{"type":"number","description":"The ownership of the property"}}},"VoluntaryRepaymentDto":{"type":"object","properties":{"voluntaryRepaymentId":{"type":"string","description":"The unique identifier for the voluntary repayment"},"amount":{"type":"number","description":"The amount of the voluntary repayment"},"date":{"type":"string","description":"The date of the voluntary repayment"},"loanId":{"type":"string","description":"The ID of the loan"},"loanIndex":{"type":"number","description":"The index of the loan"},"propertyId":{"type":"string","description":"The ID of the property"},"userId":{"type":"string","description":"The ID of the client whose personal timeline shows the repayment"}}},"OffsetAccountDto":{"type":"object","properties":{"offsetAccountId":{"type":"string","description":"The unique identifier for the offset account transaction"},"amount":{"type":"number","description":"The amount of the offset account"},"date":{"type":"string","description":"The date of the offset account"},"loanId":{"type":"string","description":"The ID of the loan"},"loanIndex":{"type":"number","description":"The index of the loan"},"propertyId":{"type":"string","description":"The ID of the property"},"withdraw":{"type":"boolean","description":"If true = offset WITHDRAW (FCF withdraw to personal). If false = offset ADD (FCF contribution from personal)."},"userId":{"type":"string","description":"The ID of the client whose personal timeline shows the transaction"}}},"RefinanceDetailsInputDto":{"type":"object","properties":{"refinanceId":{"type":"string","description":"Unique id of the refinance (generated on create)"},"active":{"type":"boolean","description":"Indicates if the refinance is active or not"},"refinanceDate":{"format":"date-time","type":"string","description":"The start date of the loan"},"refinanceNumber":{"type":"number","description":"The refinance number"},"newLender":{"type":"string","description":"The new lender"},"newLoans":{"description":"Details of the new loans","type":"array","items":{"type":"string"}},"refiLoans":{"description":"Details of the Loan","type":"array","items":{"type":"string"}}},"required":["refinanceDate","refinanceNumber","newLender","newLoans","refiLoans"]},"PropertyAssumptionDto":{"type":"object","properties":{"amount":{"type":"number"},"date":{"format":"date-time","type":"string"},"type":{"type":"string","enum":["CAPITAL_GROWTH","RENTAL_GROWTH","RENTAL_INCOME","OPERATING_COSTS","DEBT_PAYMENTS","COST_ESCALATION","VARIABLE_RATE"]},"frequency":{"type":"string","enum":["WEEKLY","MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUAL","ANNUAL","ONE_OFF"]},"duration":{"type":"number"}}},"PropertyAddress":{"type":"object","properties":{}},"PropertyOwnershipEntityDto":{"type":"object","properties":{"slot":{"type":"number","description":"INPUTS!270 — owner slot 1–5 (\"Entity 1\"..\"Entity 5\" row label). Unique per property.","minimum":1,"maximum":5},"ownerName":{"type":"string","description":"INPUTS!271–275 OWNER NAMES — \"User1 Personal\" | \"User2 Personal\" | an entity name as saved on /v1/entities (INPUTS!199). Matched by text in the model; no id."},"ownershipPercent":{"type":"number","description":"INPUTS!277–281 — ownership %, 0–100 (sheet 0.25 = 25). Slots on a property must total 100 (INPUTS!289 check).","minimum":0,"maximum":100},"entityType":{"type":"string","description":"INPUTS!283–287 DERIVED — ENTITY TYPE = XLOOKUP(ownerName, INPUTS!199, INPUTS!200) → Personal | Company | Trust | SMSF. Read-only. Slot 1 is wired to sheet-all `INPUTS_H283`; slots 2–5 (`INPUTS_H284–H287`) are not ported yet and return null. Also null for entity owners until the entity input adapter lands.","nullable":true,"readOnly":true}},"required":["slot","ownerName","ownershipPercent","entityType"]},"PropertyOwnershipDerivedTotalsDto":{"type":"object","properties":{"totalOwnershipPercent":{"type":"number","description":"INPUTS!289 Total Ownership % = SUM(277:281) (check row). `INPUTS_H289` not ported → null.","nullable":true,"readOnly":true},"user1PlusRelatedEntities":{"type":"number","description":"INPUTS!290 Property Owned by User 1 + Related Entities. `INPUTS_H290` not ported → null.","nullable":true,"readOnly":true},"user2PlusRelatedEntities":{"type":"number","description":"INPUTS!291 Property Owned by User 2 + Related Entities. `INPUTS_H291` not ported → null.","nullable":true,"readOnly":true},"totalUser1AndUser2":{"type":"number","description":"INPUTS!292 Total % Owned by User 1 & 2. `INPUTS_H292` not ported → null.","nullable":true,"readOnly":true},"user1EntityOwnership":{"type":"number","description":"INPUTS!293 User 1 Entity Ownership % — sheet-all `INPUTS_H293`. Zero until the entity input adapter lands.","nullable":true,"readOnly":true},"user2EntityOwnership":{"type":"number","description":"INPUTS!294 User 2 Entity Ownership % — sheet-all `INPUTS_H294`. Zero until the entity input adapter lands.","nullable":true,"readOnly":true},"totalUser1AndUser2Entities":{"type":"number","description":"INPUTS!295 Total % Owned by User 1&2 Entities = SUM(293:294) — sheet-all `INPUTS_H295`.","nullable":true,"readOnly":true},"user1PersonalOwnership":{"type":"number","description":"INPUTS!296 User 1 Personal Ownership % — sheet-all `INPUTS_H296` (sum of slots whose ownerName = Owner_1).","nullable":true,"readOnly":true},"user2PersonalOwnership":{"type":"number","description":"INPUTS!297 User 2 Personal Ownership % — sheet-all `INPUTS_H297` (sum of slots whose ownerName = Owner_2).","nullable":true,"readOnly":true}},"required":["totalOwnershipPercent","user1PlusRelatedEntities","user2PlusRelatedEntities","totalUser1AndUser2","user1EntityOwnership","user2EntityOwnership","totalUser1AndUser2Entities","user1PersonalOwnership","user2PersonalOwnership"]}}}}
```

## The PropertyInputsForAiDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PropertyInputsForAiDto":{"type":"object","properties":{"propertyDetails":{"$ref":"#/components/schemas/PropertyDetailsDto"},"stampDuty":{"$ref":"#/components/schemas/StampDutyDto"},"acquisition":{"$ref":"#/components/schemas/AcquisitionDto"},"acquisitionCost":{"$ref":"#/components/schemas/AcquisitionCostDto"},"homeLoan":{"$ref":"#/components/schemas/HomeLoanDto"},"operations":{"$ref":"#/components/schemas/OperationsDto"},"construction":{"$ref":"#/components/schemas/ConstructionDto"},"repaymentFacility":{"$ref":"#/components/schemas/RepaymentFacilityDto"},"grannyFlat":{"$ref":"#/components/schemas/GrannyFlatDto"},"depreciation":{"$ref":"#/components/schemas/DepreciationDto"},"valuationAndSale":{"$ref":"#/components/schemas/ValuationSaleDto"},"projectionsAndParameters":{"$ref":"#/components/schemas/ProjectionsAndParametersDto"},"mainResidenceInputs":{"$ref":"#/components/schemas/MainResidenceInputsDto"},"loan":{"$ref":"#/components/schemas/PropertyLoanDto"},"advancedInputs":{"$ref":"#/components/schemas/AdvancedInputsDto"},"expenses":{"$ref":"#/components/schemas/ExpenseForPropertyDto"},"assumptions":{"$ref":"#/components/schemas/PropertyAssumptionDto"},"financeAndTax":{"$ref":"#/components/schemas/FinanceAndTaxDto"},"baseParameters":{"$ref":"#/components/schemas/BaseParametersDto"},"address":{"$ref":"#/components/schemas/PropertyAddress"},"deemedAcquisitionMarketValue":{"type":"number"},"deemedAcquisitionDate":{"format":"date-time","type":"string"}}},"PropertyDetailsDto":{"type":"object","properties":{"address":{"type":"string","description":"Property street address"},"suburb":{"type":"string","description":"Suburb/locality"},"state":{"type":"string","description":"State/territory"},"bedrooms":{"type":"number","description":"Number of bedrooms"},"bathrooms":{"type":"number","description":"Number of bathrooms"},"carSpaces":{"type":"number","description":"Number of car spaces"},"totalSqm":{"type":"number","description":"Total floor area in square meters"},"floorSpace":{"type":"number","description":"Total land area in square meters"},"residentialPropertyType":{"type":"string","description":"Type of residential property"},"name":{"type":"string","description":"The name of the property"},"priceEstimate":{"type":"number","description":"The price estimate of the property"},"purchasingCost":{"type":"number","description":"The purchasing cost of the property"},"rentalEstimate":{"type":"number","description":"The rental estimate of the property from Rental AVM external api(rent per week)"},"operatingExpenses":{"type":"number","description":"The Operating expense of the property from Rental AVM external api(Monthly)"},"initialLoanBalance":{"type":"number","description":"The initial loan balance of the property"},"interestRate":{"type":"number","description":"The interest rate of the property(Percentage)"},"monthlyPayment":{"type":"number","description":"The monthly payment of the property"},"portfolio":{"type":"boolean","description":"Add to portfolio"}},"required":["address","suburb","state","bedrooms","bathrooms","carSpaces","totalSqm","floorSpace","residentialPropertyType"]},"StampDutyDto":{"type":"object","properties":{"exemptionOverride":{"type":"boolean","description":"Exemption override"},"stampDutyValuation":{"type":"number","description":"Stamp duty valuation"},"landValueAtPurchase":{"type":"number","description":"Land value at purchase"},"landUse":{"type":"string","description":"Land use"},"primaryResidence":{"type":"string","description":"Primary residence"},"firstHomeBuyer":{"type":"boolean","description":"First home buyer"},"lotType":{"type":"string","description":"Lot type"},"citizenshipStatus":{"type":"string","description":"Citizenship status"},"transactionMethod":{"type":"string","description":"Transaction method"},"ownershipEntity":{"type":"string","description":"Ownership entity"},"ownershipEntityType":{"type":"string","description":"Ownership entity type"},"percentOwnership":{"type":"number","description":"Percent ownership"},"isCoOwnerPartner":{"type":"boolean","description":"Is co-owner partner"},"percentOwnershipUser2":{"type":"number","description":"Percent ownership user 2"}}},"AcquisitionDto":{"type":"object","properties":{"settlementDate":{"type":"string","description":"Settlement date","format":"date-time"},"anticipatedHoldPeriod":{"type":"number"},"dateSold":{"type":"string","description":"Date property was sold/purchased","format":"date-time"},"purchasePrice":{"type":"number"}},"required":["settlementDate","dateSold"]},"AcquisitionCostDto":{"type":"object","properties":{"purchasePrice":{"type":"number"},"depositPercent":{"type":"number"},"depositAmount":{"type":"number"},"stampDuty":{"type":"number"},"lmiPercent":{"type":"number"},"lmiAmount":{"type":"number"},"otherExpensedClosingCosts":{"type":"number"},"capitaliseLmi":{"type":"boolean"}}},"HomeLoanDto":{"type":"object","properties":{"initialLoanBalance":{"type":"number"},"startDate":{"type":"string"},"tenor":{"type":"number"},"endDate":{"type":"string"},"currentLoanBalance":{"type":"number"},"currentOffsetAccountBalance":{"type":"number"},"currentOffsetAccountBalanceAsAtDate":{"type":"string","description":"The date when the offset account balance was recorded"},"isFixed":{"type":"boolean"},"fixedRate":{"type":"number"},"fixedPeriodStartDate":{"type":"string"},"fixedPeriodLength":{"type":"number"},"isInterestOnly":{"type":"boolean"},"interestOnlyStartDate":{"type":"string"},"interestOnlyLength":{"type":"number"},"interestOnlyEndDate":{"type":"string"},"upfrontFees":{"type":"number"},"annualFees":{"type":"number"},"hasOffsetAccount":{"type":"boolean"},"lender":{"type":"string","description":"The financial institution providing the loan"},"variableRate":{"type":"number","description":""},"upfrontCommission":{"type":"number","description":""},"trailCommission":{"type":"number","description":""},"endDateRefiOverride":{"type":"string"}},"required":["lender"]},"OperationsDto":{"type":"object","properties":{"weeklyRent":{"type":"number"},"occupancy":{"type":"number"},"operatingExpenses":{"type":"number"}}},"ConstructionDto":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for the construction"},"active":{"type":"boolean","description":"Indicates whether the construction is currently active"},"constructionStartDate":{"type":"string","description":"The start date of the construction"},"constructionLength":{"type":"string","description":"Length of the construction period"},"completionDate":{"type":"string","description":"The completion date of the construction"},"constructionCost":{"type":"number","description":"The cost of the construction"},"estimatedValueAtCompletion":{"type":"number","description":"The estimated value at the completion of the construction"}}},"RepaymentFacilityDto":{"type":"object","properties":{"financialInstitution":{"type":"string","description":"The financial institution providing the repayment facility"},"initialLoanBalance":{"type":"number","description":"The initial loan balance"},"interestOnlyLength":{"type":"number","description":"Length of the interest-only period in years"},"fixedRateLength":{"type":"string","description":"The fixed rate length"},"fixedRatePercent":{"type":"number","description":"The fixed interest rate percentage"},"startDate":{"type":"string","description":"The start date of the repayment facility"},"tenor":{"type":"number","description":"The tenor of the repayment facility"},"endDate":{"type":"string","description":"The end date of the repayment facility"}}},"GrannyFlatDto":{"type":"object","properties":{"active":{"type":"boolean","description":"Indicates whether the granny flat is currently active"},"cost":{"type":"number","description":"Cost of constructing the granny flat"},"startDate":{"type":"string","description":"Start date of the granny flat construction"},"grannyFlatFloorSpaceRented":{"type":"number","description":"Floor Space in sqm"},"grannyFlatTotalFloorSpace":{"type":"number","description":"Total Floor Space in sqm"}}},"DepreciationDto":{"type":"object","properties":{"plantAndEquipmentMethod":{"type":"string","description":"Plant and Equipment Method"},"lvaPooling":{"type":"boolean","description":"LVA Pooling"},"lcaPooling":{"type":"boolean","description":"LCA Pooling"},"capitalWorksTiming":{"type":"string","description":"Capital Works Timing"}}},"ValuationSaleDto":{"type":"object","properties":{"mostRecentAppraisedValue":{"type":"number","description":"Most recent appraised value of the property"},"date":{"format":"date-time","type":"string","description":"Date of the valuation or sale"},"salePrice":{"type":"number","description":"Sale price of the property"},"sellingCosts":{"type":"number","description":"Selling costs associated with the sale of the property"},"primaryResidenceAtSale":{"type":"boolean","description":"Indicates whether the property is a primary residence at the time of sale"},"saleDate":{"type":"number","description":"Sale date"}}},"ProjectionsAndParametersDto":{"type":"object","properties":{"capitalGrowth":{"type":"number","description":"The capital growth amount"},"costEscalation":{"type":"number"},"revenueGrowth":{"type":"number"},"interestRate":{"type":"number"},"netRentPaidIntoOffsetAccount":{"type":"boolean"},"personalSalaryPaidIntoOffsetAccount":{"type":"boolean"},"equityInHomeGoalForCashOutRefinance":{"type":"number"},"profitOnSaleTarget":{"type":"number"},"startDate":{"type":"string"},"endDate":{"type":"string"}}},"MainResidenceInputsDto":{"type":"object","properties":{"active":{"type":"boolean","description":"Indicates whether the change is active"},"currentUse":{"type":"string","description":"Current use of the property","enum":["Residence","Investment"]},"newUse":{"type":"string","description":"New use of the property","enum":["Residence","Investment"]},"date":{"type":"string","description":"The date of the change"},"years":{"type":"string","description":"The number of years for the change"},"untilSale":{"type":"boolean","description":"Indicates whether the change is until sale"},"endDate":{"type":"string","description":"The end date of the change"},"claimingNewMR":{"type":"boolean","description":"Indicates whether claiming new main residence"}},"required":["active","currentUse","newUse","date","years","untilSale","endDate","claimingNewMR"]},"PropertyLoanDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the loan"},"createdAt":{"format":"date-time","type":"string","description":"The created date of the loan"},"active":{"type":"boolean","description":"A property indicating if a loan is active or not"},"equityAvailable":{"type":"number","description":"The amount of equity available the property has"},"availableEquityRemaning":{"type":"number","description":"the avaiable equity after the loan balance"},"name":{"type":"string","description":"The name of the property"},"appraisalValueFromBank":{"type":"number","description":"The appraisal value from the bank"},"reasonForRefinancing":{"type":"string","description":"The reason for refinancing"},"dateLoanAdded":{"format":"date-time","type":"string","description":"The date the loan was added"},"startDatePortfolioAutomationTiming":{"format":"date-time","type":"string","description":"The start date of the portfolio automation timing"},"refinanceNumber":{"type":"number","description":"The refinance number"},"addingDollarsOfEquityWithdrawn":{"type":"number","description":"The adding dollars of equity withdrawn"},"dollarsOfEquityWithdrawnForInvestment":{"type":"number","description":"The dollars of equity withdrawn for investment"},"propertyInput":{"type":"string","description":"The property input"},"fixedPeriodStartDate":{"format":"date-time","type":"string","description":"The fixed period start date"},"interestOnlyPeriod":{"type":"boolean","description":"The interest only period"},"interestOnlyStartDate":{"format":"date-time","type":"string","description":"The interest only start date"},"interestOnlyLength":{"type":"number","description":"The interest only length"},"upfrontFeesAndLmiFees":{"type":"number","description":"The upfront fees and lmi fees"},"annualFees":{"type":"number","description":"The annual fees"},"endDate":{"format":"date-time","type":"string","description":"The end date of the loan"},"lender":{"type":"string","description":"The financial institution providing the loan"},"loanBalance":{"type":"number","description":"The initial loan balance"},"currentLoanBalance":{"type":"number","description":"The current (outstanding) loan balance. Falls back to loanBalance when absent."},"tenor":{"type":"number","description":"The duration of the loan in years"},"propertyTarget":{"type":"string","description":"The property target"},"startDate":{"format":"date-time","type":"string","description":"The start date of the loan"},"loanType":{"type":"string","description":"The type of the loan, either Principal & Interest or Interest Only","enum":["Principal&Interest","Interest Only"]},"propertyLoanInvestAmount":{"type":"number","description":"The amount inputted by the user when they invest into a property"},"interestRepaymentType":{"type":"string","description":"Describes the current interest repayments, either Variable or Fixed","enum":["Variable","Fixed"]},"fixedRate":{"type":"number","description":"The fixed rate amount set by the user"},"lengthOfInterestOnly":{"type":"number","description":"The length of the interest in years after the user has selected Interest Only"},"lengthOfFixedReypayment":{"type":"number","description":"The length of the interest in years after the user has selected Fixed current interest repayment"},"isAddLoan":{"type":"boolean","description":"Indicates if the loan is an add loan"},"hasOffsetAccount":{"type":"boolean","description":"Indicates if the loan has an offset account"},"currentOffsetAccountBalance":{"type":"number","description":"The current offset account balance"},"currentOffsetAccountBalanceAsAtDate":{"type":"string","description":"The date when the offset account balance was recorded"},"variableRate":{"type":"number","description":""},"upfrontCommission":{"type":"number","description":""},"trailCommission":{"type":"number","description":""},"endDateRefiOverride":{"format":"date-time","type":"string"},"startDateRefinanceLookup":{"format":"date-time","type":"string"},"dollarsOfResidualDebt":{"type":"number","description":"The residual debt of the loan"},"isFixed":{"type":"boolean","description":"Indicates if the loan is a fixed loan"},"isInterestOnly":{"type":"boolean","description":"Indicates if the loan is an interest only loan"},"refinanceArrayLookup":{"type":"number","description":"The refinance number/array lookup"},"positionInRefiArray":{"type":"number","description":"The position in the refinance array"},"debtFromRefi":{"type":"number","description":"The debt from the refinance. GET"},"equityFromRefi":{"type":"number","description":"The equity from the refinance. GET"},"loanBalanceFromRefi":{"type":"number","description":"The loan balance from the refinance. GET"},"refinanceId":{"type":"string","description":"Links this loan row to a refinanceDetails.refinanceId"}},"required":["createdAt","equityAvailable","availableEquityRemaning","name","appraisalValueFromBank","reasonForRefinancing","dateLoanAdded","startDatePortfolioAutomationTiming","refinanceNumber","addingDollarsOfEquityWithdrawn","dollarsOfEquityWithdrawnForInvestment","propertyInput","fixedPeriodStartDate","interestOnlyPeriod","interestOnlyStartDate","interestOnlyLength","upfrontFeesAndLmiFees","annualFees","endDate","lender","loanBalance","tenor","startDate","loanType","propertyLoanInvestAmount","interestRepaymentType","fixedRate","lengthOfInterestOnly","lengthOfFixedReypayment"]},"AdvancedInputsDto":{"type":"object","properties":{"rentalIncomeAndRevenue":{"description":"The rental income and revenue of the property","type":"array","items":{"$ref":"#/components/schemas/RentalIncomeAndRevenueDto"}},"itemisedOperatingExpenses":{"description":"The itemised operating expenses of the property","type":"array","items":{"$ref":"#/components/schemas/ItemisedOperatingExpensesDto"}},"constructionLoans":{"description":"The construction loan of the property","type":"array","items":{"$ref":"#/components/schemas/ConstructionLoanForAdvancedInputDto"}},"constructionFacility":{"description":"The construction facility of the property","type":"array","items":{"$ref":"#/components/schemas/ConstructionFacilityDto"}},"ongoingCapitalWorksAndImprovements":{"description":"The ongoing capital works and improvements of the property","type":"array","items":{"$ref":"#/components/schemas/OngoingCapitalWorksAndImprovementsDto"}},"valuationSales":{"description":"The valuation sale of the property","type":"array","items":{"$ref":"#/components/schemas/ValuationSaleAdvancedInputDto"}},"manualCapitalWorksDeprecationClaims":{"description":"The manual capital works depreciation claims of the property","type":"array","items":{"$ref":"#/components/schemas/ManualCapitalWorksDeprecationClaimsDto"}},"expenses":{"description":"The expense of the property","type":"array","items":{"$ref":"#/components/schemas/ExpenseForPropertyDto"}},"adjustLoanTerms":{"description":"The adjust loan terms of the property","type":"array","items":{"$ref":"#/components/schemas/AdjustLoanTermsDto"}},"financeAndTax":{"description":"The finance and tax of the property","allOf":[{"$ref":"#/components/schemas/FinanceAndTaxDto"}]},"projectionsAndParameters":{"description":"The projections and parameters of the property","type":"array","items":{"$ref":"#/components/schemas/ProjectionsAndParametersAdvancedInputsDto"}},"sell":{"description":"The sell of the property","type":"array","items":{"$ref":"#/components/schemas/SellPropertyDto"}},"variableRate":{"description":"The variable rate of the property","type":"array","items":{"$ref":"#/components/schemas/VariableRateForPropertyDto"}},"costEscalation":{"description":"The cost escalation of the property","type":"array","items":{"$ref":"#/components/schemas/EscalationForPropertyDto"}},"moveHouse":{"description":"The move house of the property","type":"array","items":{"$ref":"#/components/schemas/MoveHouseForQuickActionsDto"}},"grannyFlat":{"description":"The granny flat of the property","type":"array","items":{"$ref":"#/components/schemas/GrannyFlatForQuickActionsDto"}},"baseParameters":{"description":"The base parameters of the property","allOf":[{"$ref":"#/components/schemas/BaseParametersDto"}]},"voluntaryRepayments":{"description":"The voluntary repayments of the property","type":"array","items":{"$ref":"#/components/schemas/VoluntaryRepaymentDto"}},"offsetAccounts":{"description":"The offset account transactions of the property","type":"array","items":{"$ref":"#/components/schemas/OffsetAccountDto"}},"refinanceDetails":{"description":"The refinance details of the property","type":"array","items":{"$ref":"#/components/schemas/RefinanceDetailsInputDto"}}}},"RentalIncomeAndRevenueDto":{"type":"object","properties":{"rentalId":{"type":"string","description":"The unique identifier for the capital work or improvement"},"active":{"type":"boolean","description":"Indicates whether the rental income and revenue is currently active"},"name":{"type":"string","description":"Name of the rental income and revenue"},"startDate":{"format":"date-time","type":"string","description":"Start date of the rental income and revenue"},"length":{"type":"number","description":"Duration of rent in months"},"endDate":{"format":"date-time","type":"string","description":"End date of the rental income and revenue"},"rentPerWeek":{"type":"number","description":"Rent per Week for the rental income and revenue"},"floorSpaceRented":{"type":"number","description":"Floor space rented of property(Rental Partial)"},"totalFloorSpace":{"type":"number","description":"Total floor space rented of property(Rental Partial)"}}},"ItemisedOperatingExpensesDto":{"type":"object","properties":{"expenseId":{"type":"string","description":"The unique identifier for the operating expensex"},"amount":{"type":"number","description":"The amount of the itemised expense(Total Expense if One-off Expense)"},"active":{"type":"boolean","description":"Indicates whether the operating expense is currently active"},"name":{"type":"string","description":"The name of the operating expense"},"expenseType":{"type":"string","description":"The expense type of the itemised expense(Optional if one-off expense)"},"frequency":{"type":"string","description":"The frequency of the itemised expense (e.g., Monthly, Annually)"},"startDate":{"format":"date-time","type":"string","description":"The start date of the operating expense"},"endDate":{"format":"date-time","type":"string","description":"The end date of the operating expense"},"date":{"format":"date-time","type":"string","description":"The date of the operating expense"}}},"ConstructionLoanForAdvancedInputDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the Construction Loan"},"constructionLength":{"type":"number","description":"The Construction length of the Drawdown facility In months"},"buildCost":{"type":"number","description":"The Build Cost of the Drawdown facility"},"initialLoanBalance":{"type":"number","description":"The Initial Loan Balance of the Drawdown facility"},"estAfterRepairValue":{"type":"number","description":"The estimated after Repair Value of the Drawdown facility"},"constructionInterestRate":{"type":"number","description":"The Construction interest rate of the Drawdown facility"},"financialInstitution":{"type":"string","description":"The financial institution providing the repayment facility"},"loanType":{"type":"string","description":"The Loan Type of the Construction Loan"},"interestOnlyLength":{"type":"number","description":"Length of the interest-only period in years"},"interestRepaymentType":{"type":"string","description":"Describes the current interest repayments, either Variable or Fixed"},"fixedRateLength":{"type":"string","description":"The fixed rate length"},"fixedRatePercent":{"type":"number","description":"The fixed interest rate percentage"},"startDate":{"type":"string","description":"The start date of the repayment facility"},"tenor":{"type":"number","description":"The tenor of the repayment facility"},"endDate":{"format":"date-time","type":"string","description":"The end date of the repayment facility"},"lengthOfInterestOnly":{"type":"number","description":"The length of the interest in years after the user has selected Interest Only"},"isAddLoan":{"type":"boolean","description":"Indicates if the loan is an add loan"},"currentOffsetAccountBalance":{"type":"number","description":"The current offset account balance"},"currentOffsetAccountBalanceAsAtDate":{"type":"string","description":"The date when the offset account balance was recorded"},"variableRate":{"type":"number","description":""},"upfrontCommission":{"type":"number","description":""},"trailCommission":{"type":"number","description":""},"endDateRefiOverride":{"type":"string"}},"required":["id","interestRepaymentType","lengthOfInterestOnly"]},"ConstructionFacilityDto":{"type":"object","properties":{"percentOfCost":{"type":"number","description":"The percentage of the cost that the construction facility is for"},"startDate":{"type":"string","description":"The start date of the construction facility"},"length":{"type":"string","description":"The length of the construction facility"},"endDate":{"type":"string","description":"The end date of the construction facility"}}},"OngoingCapitalWorksAndImprovementsDto":{"type":"object","properties":{"cwiId":{"type":"string","description":"The unique identifier for the capital work or improvement"},"name":{"type":"string","description":"The name of the capital work or improvement"},"active":{"type":"boolean","description":"Indicates whether the capital work or improvement is currently active"},"costOfCompletion":{"type":"number","description":"The amount it will cost on completion"},"completionDate":{"type":"string","description":"The completion date of the capital work or improvement"},"estValueAfterImprovements":{"type":"number","description":"The amount estimated on completion"}}},"ValuationSaleAdvancedInputDto":{"type":"object","properties":{"valuationSaleId":{"type":"string","description":"The unique identifier for the capital work or improvement"},"mostRecentAppraisedValue":{"type":"number","description":"Most recent appraised value of the property"},"date":{"format":"date-time","type":"string","description":"Date of the valuation or sale"},"salePrice":{"type":"number","description":"Sale price of the property"},"saleDate":{"type":"number","description":"Sale date"},"sellingCosts":{"type":"number","description":"Selling costs associated with the sale of the property"},"primaryResidenceAtSale":{"type":"boolean","description":"Indicates whether the property is a primary residence at the time of sale"}}},"ManualCapitalWorksDeprecationClaimsDto":{"type":"object","properties":{"claimedYear":{"type":"number","description":"The year of the manual capital works depreciation claim"}}},"ExpenseForPropertyDto":{"type":"object","properties":{"expenseId":{"type":"string","description":"The unique identifier for the Expense"},"name":{"type":"string","description":"The name of the expense item"},"date":{"format":"date-time","type":"string","description":"The date of the expense item"},"effectiveLife":{"type":"string","description":"The effective life of the PP&E item"},"bookValue":{"type":"number","description":"Book Value"},"method":{"type":"string","description":"The depreciation method used for the PP&E item","enum":["STRAIGHTLINE","DIMINISHING_VALUE","BALANCING_ADJUSTMENT"]},"expenseType":{"type":"string","description":"The type of expense","enum":["PPAndE","Operating","one-off"]},"straightLine":{"description":"Details of the straight-line depreciation method","allOf":[{"$ref":"#/components/schemas/StraightLineDto"}]},"dimishingValue":{"description":"Details of the diminishing value depreciation method","allOf":[{"$ref":"#/components/schemas/DimishingValueDto"}]},"balancingAdjustment":{"description":"Details of the balancing adjustment for the PP&E item","allOf":[{"$ref":"#/components/schemas/BalancingAdjustmentDto"}]}},"required":["expenseId"]},"StraightLineDto":{"type":"object","properties":{"perAnnum":{"type":"number","description":"Annual depreciation amount using the straight-line method"},"perPeriod":{"type":"number","description":"Per-period depreciation amount using the straight-line method"}}},"DimishingValueDto":{"type":"object","properties":{"perAnnum":{"type":"number","description":"Annual depreciation amount using the diminishing value method"},"perPeriod":{"type":"number","description":"Per-period depreciation amount using the diminishing value method"}}},"BalancingAdjustmentDto":{"type":"object","properties":{"saleDate":{"type":"string","description":"The sale date of the asset for balancing adjustment purposes"},"salvageValue":{"type":"number","description":"The salvage value of the asset at the end of its life"}}},"AdjustLoanTermsDto":{"type":"object","properties":{"loanId":{"type":"string","description":"The id of the loan that you want to adjust"},"loanType":{"type":"string","description":"The Loan type input(should only be Interest only if the user wants to change the loan type)"},"interestRepaymentType":{"type":"string","description":"The current repayments type input(should only be Fixed)"},"lengthOfInterestOnly":{"type":"number","description":"The length of the interest in years after the user has selected Interest Only"},"lengthOfFixedReypayment":{"type":"number","description":"The length of the interest in years after the user has selected Fixed current interest repayment"}},"required":["loanId","loanType","interestRepaymentType","lengthOfInterestOnly","lengthOfFixedReypayment"]},"FinanceAndTaxDto":{"type":"object","properties":{"ownership":{"type":"string","description":"The ownership of the property"},"capitalWorksClaim":{"type":"string","description":"The capital works claim of the property","enum":["WEEKLY","MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUAL","ANNUAL","ONE_OFF"]},"lowValueAssetPooling":{"type":"boolean","description":"The low value asset pooling of the property"},"netRentPaidIntoOffsetAccount":{"type":"string","description":"The net rent paid into offset account of the property"},"claimCapitalWorksAnually":{"type":"boolean","description":"The claim capital works annually of the property"},"ppAndEDeprecriationMethod":{"type":"string","description":"The pp and e depreciation method of the property","enum":["STRAIGHTLINE","DIMINISHING_VALUE","BALANCING_ADJUSTMENT"]},"priceTarget":{"type":"number","description":"The price target of the property"},"cgtLiability":{"type":"number","description":"The cgt liability of the property"}}},"ProjectionsAndParametersAdvancedInputsDto":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for the projections and parameters"},"capitalGrowthAmount":{"type":"number","description":"Capital growth amount"},"costEscalation":{"type":"number","description":"Cost escalation"},"revenueGrowth":{"type":"number","description":"Revenue growth"},"interestRate":{"type":"number","description":"Interest rate"},"netRentPaidIntoOffsetAccount":{"type":"boolean","description":"Net rent paid into offset account"},"personalSalaryPaidIntoOffsetAccount":{"type":"boolean","description":"Personal salary paid into offset account"},"equityInHomeGoalForCashOutRefinance":{"type":"number","description":"Equity in home goal for cash out refinance"},"profitOnSaleTarget":{"type":"number","description":"Profit on sale target"},"startDate":{"type":"string","description":"Start date"},"endDate":{"type":"string","description":"End date"}}},"SellPropertyDto":{"type":"object","properties":{"sellId":{"type":"string","description":"The unique identifier for Sell"},"date":{"format":"date-time","type":"string","description":"Date of the valuation or sale"},"salePrice":{"type":"number","description":"Sale price of the property"},"sellingCosts":{"type":"number","description":"Selling costs associated with the sale of the property"},"netCapitalGainAtSale":{"type":"number","description":"Net capital gain at sale"}}},"VariableRateForPropertyDto":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for the variable rate"},"variableRate":{"type":"number","description":"The variable rate between 0.01 and 1 (0% and 100%)"},"date":{"type":"string","description":"The date of the variable rate"}},"required":["id"]},"EscalationForPropertyDto":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for the escalation rate"},"costEscalationRate":{"type":"number","description":"The Cost Escalation Rate between 0.01 and 1 (0% and 100%)"},"date":{"type":"string","description":"The date of the variable rate"}},"required":["id"]},"MoveHouseForQuickActionsDto":{"type":"object","properties":{"moveHouseId":{"type":"string","description":"The unique identifier for the capital work or improvement"},"currentMarketValue":{"type":"number","description":"Current Estimated Market Value (Only input when Investment > Main Residence)"},"newUse":{"type":"string","description":"New use of the property"},"startDate":{"format":"date-time","type":"string","description":"The start date of the change"},"untilSale":{"type":"boolean","description":"Indicates whether the change lasts until the sale date"},"endDate":{"format":"date-time","type":"string","description":"The end date of the rent"},"isPrimaryResidence":{"type":"boolean","description":"Indicates whether the residence is a primary residence"},"claimMainResidenceExemption":{"type":"boolean","description":"Whether claiming main residence exemption on another property"}},"required":["moveHouseId","currentMarketValue","newUse","startDate","untilSale","endDate","isPrimaryResidence"]},"GrannyFlatForQuickActionsDto":{"type":"object","properties":{"grannyFlatId":{"type":"string","description":"Unique Identifier for the Granny flat"},"totalCostAtCompletion":{"type":"number","description":"Total Cost at Completion"},"date":{"format":"date-time","type":"string","description":"The start date of the operating expense"},"grannyFlatFloorSpace":{"type":"number","description":"Granny Flat floor Space"},"mainHouseFloorSpace":{"type":"number","description":"Main House floor Space"}}},"BaseParametersDto":{"type":"object","properties":{"capitalGrowth":{"type":"number","description":"The capital growth of the property"},"rentAndCostGrowth":{"type":"number","description":"The rent & cost growth of the property"},"variableRate":{"type":"number","description":"The variable rate of the property"},"occupancy":{"type":"number","description":"The occupancy of the property"},"sellingCosts":{"type":"number","description":"The selling costs of the property"},"ownership":{"type":"number","description":"The ownership of the property"}}},"VoluntaryRepaymentDto":{"type":"object","properties":{"voluntaryRepaymentId":{"type":"string","description":"The unique identifier for the voluntary repayment"},"amount":{"type":"number","description":"The amount of the voluntary repayment"},"date":{"type":"string","description":"The date of the voluntary repayment"},"loanId":{"type":"string","description":"The ID of the loan"},"loanIndex":{"type":"number","description":"The index of the loan"},"propertyId":{"type":"string","description":"The ID of the property"},"userId":{"type":"string","description":"The ID of the client whose personal timeline shows the repayment"}}},"OffsetAccountDto":{"type":"object","properties":{"offsetAccountId":{"type":"string","description":"The unique identifier for the offset account transaction"},"amount":{"type":"number","description":"The amount of the offset account"},"date":{"type":"string","description":"The date of the offset account"},"loanId":{"type":"string","description":"The ID of the loan"},"loanIndex":{"type":"number","description":"The index of the loan"},"propertyId":{"type":"string","description":"The ID of the property"},"withdraw":{"type":"boolean","description":"If true = offset WITHDRAW (FCF withdraw to personal). If false = offset ADD (FCF contribution from personal)."},"userId":{"type":"string","description":"The ID of the client whose personal timeline shows the transaction"}}},"RefinanceDetailsInputDto":{"type":"object","properties":{"refinanceId":{"type":"string","description":"Unique id of the refinance (generated on create)"},"active":{"type":"boolean","description":"Indicates if the refinance is active or not"},"refinanceDate":{"format":"date-time","type":"string","description":"The start date of the loan"},"refinanceNumber":{"type":"number","description":"The refinance number"},"newLender":{"type":"string","description":"The new lender"},"newLoans":{"description":"Details of the new loans","type":"array","items":{"type":"string"}},"refiLoans":{"description":"Details of the Loan","type":"array","items":{"type":"string"}}},"required":["refinanceDate","refinanceNumber","newLender","newLoans","refiLoans"]},"PropertyAssumptionDto":{"type":"object","properties":{"amount":{"type":"number"},"date":{"format":"date-time","type":"string"},"type":{"type":"string","enum":["CAPITAL_GROWTH","RENTAL_GROWTH","RENTAL_INCOME","OPERATING_COSTS","DEBT_PAYMENTS","COST_ESCALATION","VARIABLE_RATE"]},"frequency":{"type":"string","enum":["WEEKLY","MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUAL","ANNUAL","ONE_OFF"]},"duration":{"type":"number"}}},"PropertyAddress":{"type":"object","properties":{}}}}}
```

## The TotalExpenseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"TotalExpenseDto":{"type":"object","properties":{"totalExpense":{"type":"number","description":"The amount of the One Off Expense"},"date":{"format":"date-time","type":"string","description":"The date of the One Off expense"}}}}}}
```

## The PPAndeExpenseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PPAndeExpenseDto":{"type":"object","properties":{"name":{"type":"string","description":"The name of the expense item"},"date":{"format":"date-time","type":"string","description":"The date of the expense item"},"effectiveLife":{"type":"string","description":"The effective life of the PP&E item"},"cost":{"type":"number","description":"Book Value"},"endPeriod":{"type":"string","description":"The end period date for the depreciation of the PP&E item"},"method":{"type":"string","description":"The depreciation method used for the PP&E item"}}}}}}
```

## The SellDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"SellDto":{"type":"object","properties":{"date":{"format":"date-time","type":"string","description":"Date of the valuation or sale"},"salePrice":{"type":"number","description":"Sale price of the property"},"sellingCosts":{"type":"number","description":"Selling costs associated with the sale of the property"},"netCapitalGainAtSale":{"type":"number","description":"Net capital gain at sale"}}}}}}
```

## The PropertyLoanUpdateDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PropertyLoanUpdateDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the loan"},"createdAt":{"format":"date-time","type":"string","description":"The created date of the loan"},"active":{"type":"boolean","description":"A property indicating if a loan is active or not"},"equityAvailable":{"type":"number","description":"The amount of equity available the property has"},"availableEquityRemaning":{"type":"number","description":"the avaiable equity after the loan balance"},"name":{"type":"string","description":"The name of the property"},"appraisalValueFromBank":{"type":"number","description":"The appraisal value from the bank"},"reasonForRefinancing":{"type":"string","description":"The reason for refinancing"},"dateLoanAdded":{"format":"date-time","type":"string","description":"The date the loan was added"},"startDatePortfolioAutomationTiming":{"format":"date-time","type":"string","description":"The start date of the portfolio automation timing"},"refinanceNumber":{"type":"number","description":"The refinance number"},"addingDollarsOfEquityWithdrawn":{"type":"number","description":"The adding dollars of equity withdrawn"},"dollarsOfEquityWithdrawnForInvestment":{"type":"number","description":"The dollars of equity withdrawn for investment"},"propertyInput":{"type":"string","description":"The property input"},"fixedPeriodStartDate":{"format":"date-time","type":"string","description":"The fixed period start date"},"interestOnlyPeriod":{"type":"boolean","description":"The interest only period"},"interestOnlyStartDate":{"format":"date-time","type":"string","description":"The interest only start date"},"interestOnlyLength":{"type":"number","description":"The interest only length"},"upfrontFeesAndLmiFees":{"type":"number","description":"The upfront fees and lmi fees"},"annualFees":{"type":"number","description":"The annual fees"},"endDate":{"format":"date-time","type":"string","description":"The end date of the loan"},"lender":{"type":"string","description":"The financial institution providing the loan"},"loanBalance":{"type":"number","description":"The initial loan balance"},"tenor":{"type":"number","description":"The duration of the loan in years"},"propertyTarget":{"type":"string","description":"The property target"},"startDate":{"format":"date-time","type":"string","description":"The start date of the loan"},"loanType":{"type":"string","description":"The type of the loan, either Principal & Interest or Interest Only","enum":["Principal&Interest","Interest Only"]},"propertyLoanInvestAmount":{"type":"number","description":"The amount inputted by the user when they invest into a property"},"interestRepaymentType":{"type":"string","description":"Describes the current interest repayments, either Variable or Fixed","enum":["Variable","Fixed"]},"fixedRate":{"type":"number","description":"The fixed rate amount set by the user"},"lengthOfInterestOnly":{"type":"number","description":"The length of the interest in years after the user has selected Interest Only"},"lengthOfFixedReypayment":{"type":"number","description":"The length of the interest in years after the user has selected Fixed current interest repayment"},"isAddLoan":{"type":"boolean","description":"Indicates if the loan is an add loan"},"hasOffsetAccount":{"type":"boolean","description":"Indicates if the loan has an offset account"},"currentOffsetAccountBalance":{"type":"number","description":"The current offset account balance"},"currentOffsetAccountBalanceAsAtDate":{"type":"string","description":"The date when the offset account balance was recorded"},"variableRate":{"type":"number","description":""},"upfrontCommission":{"type":"number","description":""},"trailCommission":{"type":"number","description":""}}}}}}
```

## The CapitalGrowthDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CapitalGrowthDto":{"type":"object","properties":{"capitalGrowthAmount":{"type":"number","description":"The capital growth amount as a percentage (between 0.01 and 1)"},"date":{"type":"string","description":"The date associated with the capital growth"}}}}}}
```

## The DrawDownFacilityDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"DrawDownFacilityDto":{"type":"object","properties":{"constructionLength":{"type":"number","description":"The Construction length of the Drawdown facility"},"buildCost":{"type":"number","description":"The Build Cost of the Drawdown facility"},"estAfterRepairValue":{"type":"number","description":"The est after Repair Value of the Drawdown facility"},"constructionInterestRate":{"type":"number","description":"The Construction interest rate of the Drawdown facility"},"startDate":{"type":"string","description":"The start date of the repayment facility"},"endDate":{"type":"string","description":"The end date of the repayment facility"}}}}}}
```

## The OneOffExpenseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"OneOffExpenseDto":{"type":"object","properties":{"name":{"type":"string","description":"The name of the one off expense"},"cost":{"type":"number","description":"The amount of the one off expense"},"date":{"format":"date-time","type":"string","description":"The date of the one off expense"}}}}}}
```

## The TimelineEventDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"TimelineEventDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique event identifier"},"type":{"type":"string","description":"Type of event"},"date":{"type":"string","description":"Date when event occurs"},"value":{"type":"number","description":"Value associated with the event"}},"required":["id","type","date","value"]}}}}
```

## The PropertyTimelineDataDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PropertyTimelineDataDto":{"type":"object","properties":{"id":{"type":"string","description":"Property identifier"},"label":{"type":"string","description":"Property label/address"},"startDate":{"type":"string","description":"Start date of property timeline"},"endDate":{"type":"string","description":"End date of property timeline"},"events":{"description":"Array of events for this property","type":"array","items":{"$ref":"#/components/schemas/TimelineEventDto"}}},"required":["id","label","startDate","endDate","events"]},"TimelineEventDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique event identifier"},"type":{"type":"string","description":"Type of event"},"date":{"type":"string","description":"Date when event occurs"},"value":{"type":"number","description":"Value associated with the event"}},"required":["id","type","date","value"]}}}}
```

## The PersonalIncomeEventDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PersonalIncomeEventDto":{"type":"object","properties":{"id":{"type":"string","description":"Income identifier"},"label":{"type":"string","description":"Income label/name"},"startDate":{"type":"string","description":"Start date of income"},"endDate":{"type":"string","description":"End date of income"},"value":{"type":"number","description":"Annual income value"},"events":{"description":"Array of income change events","type":"array","items":{"$ref":"#/components/schemas/TimelineEventDto"}}},"required":["id","label","startDate","endDate","value","events"]},"TimelineEventDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique event identifier"},"type":{"type":"string","description":"Type of event"},"date":{"type":"string","description":"Date when event occurs"},"value":{"type":"number","description":"Value associated with the event"}},"required":["id","type","date","value"]}}}}
```

## The SimulateResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"SimulateResponseDto":{"type":"object","properties":{"propertyData":{"description":"Array of property timeline data","type":"array","items":{"$ref":"#/components/schemas/PropertyTimelineDataDto"}},"personalData":{"description":"Array of personal income/expense timeline data","type":"array","items":{"$ref":"#/components/schemas/PersonalIncomeEventDto"}},"years":{"description":"Array of years covered in the simulation","type":"array","items":{"type":"string"}}},"required":["propertyData","personalData"]},"PropertyTimelineDataDto":{"type":"object","properties":{"id":{"type":"string","description":"Property identifier"},"label":{"type":"string","description":"Property label/address"},"startDate":{"type":"string","description":"Start date of property timeline"},"endDate":{"type":"string","description":"End date of property timeline"},"events":{"description":"Array of events for this property","type":"array","items":{"$ref":"#/components/schemas/TimelineEventDto"}}},"required":["id","label","startDate","endDate","events"]},"TimelineEventDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique event identifier"},"type":{"type":"string","description":"Type of event"},"date":{"type":"string","description":"Date when event occurs"},"value":{"type":"number","description":"Value associated with the event"}},"required":["id","type","date","value"]},"PersonalIncomeEventDto":{"type":"object","properties":{"id":{"type":"string","description":"Income identifier"},"label":{"type":"string","description":"Income label/name"},"startDate":{"type":"string","description":"Start date of income"},"endDate":{"type":"string","description":"End date of income"},"value":{"type":"number","description":"Annual income value"},"events":{"description":"Array of income change events","type":"array","items":{"$ref":"#/components/schemas/TimelineEventDto"}}},"required":["id","label","startDate","endDate","value","events"]}}}}
```

## The CreatePersonalAssumptionDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CreatePersonalAssumptionDto":{"type":"object","properties":{"amount":{"type":"number"},"date":{"type":"string"},"type":{"type":"string","enum":["GROSS_ANUAL_SALARY","LIVING_EXPENSES","HECS_HELP_LOAN","DEPENDENTS","SIDE_HUSTLE_INCOME","RECURRING_BONUSES","PERSONAL_LOANS","PAYG_TAX","MISC_INVESTMENT_CASHFLOWS"]},"frequency":{"type":"string","enum":["WEEKLY","MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUAL","ANNUAL","ONE_OFF"],"nullable":true},"hecsHelpLoan":{"type":"string","enum":["REPAY","ADD"],"nullable":true}},"required":["amount","date","type"]}}}}
```

## The CreatePropertyAssumptionDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CreatePropertyAssumptionDto":{"type":"object","properties":{"amount":{"type":"number"},"date":{"type":"string"},"type":{"type":"string","enum":["CAPITAL_GROWTH","RENTAL_GROWTH","RENTAL_INCOME","OPERATING_COSTS","DEBT_PAYMENTS","COST_ESCALATION","VARIABLE_RATE"]},"frequency":{"type":"string","enum":["WEEKLY","MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUAL","ANNUAL","ONE_OFF"],"nullable":true},"duration":{"type":"number","nullable":true}},"required":["amount","date","type","duration"]}}}}
```

## The CreateRepaymentDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CreateRepaymentDto":{"type":"object","properties":{}}}}}
```

## The FinancialYearCashflowCashFlowDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"FinancialYearCashflowCashFlowDto":{"type":"object","properties":{"grossRent":{"type":"number","description":"Gross rent"},"operatingExpenses":{"type":"number","description":"Operating expenses"},"netOperatingIncome":{"type":"number","description":"Net operating income"},"principalRepayments":{"type":"number","description":"Principal repayments"},"interest":{"type":"number","description":"Interest"},"operatingProfit":{"type":"number","description":"Operating profit"}},"required":["grossRent","operatingExpenses","netOperatingIncome","principalRepayments","interest","operatingProfit"]}}}}
```

## The FinancialYearCashflowTaxBenefitsDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"FinancialYearCashflowTaxBenefitsDto":{"type":"object","properties":{"grossRent":{"type":"number","description":"Gross rent"},"deductibleExpenses":{"type":"number","description":"Deductible expenses"},"deductibleInterest":{"type":"number","description":"Deductible interest"},"ppeDepreciation":{"type":"number","description":"PPE depreciation"},"landTax":{"type":"number","description":"Land tax"},"capitalWorksDepreciation":{"type":"number","description":"Capital works depreciation"},"capitalGainLoss":{"type":"number","description":"Capital gain loss"},"netTaxable":{"type":"number","description":"Net taxable"},"estTax":{"type":"number","description":"Estimated tax"}},"required":["grossRent","deductibleExpenses","deductibleInterest","ppeDepreciation","landTax","capitalWorksDepreciation","capitalGainLoss","netTaxable","estTax"]}}}}
```

## The FinancialYearCashflowFundingDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"FinancialYearCashflowFundingDto":{"type":"object","properties":{"portfolioValue":{"type":"number","description":"Portfolio value"},"debtOutstanding":{"type":"number","description":"Debt outstanding"},"totalEquity":{"type":"number","description":"Total equity"},"equityAvailable":{"type":"number","description":"Equity available"}},"required":["portfolioValue","debtOutstanding","totalEquity","equityAvailable"]}}}}
```

## The FinancialYearCashflowEquityCashflowsDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"FinancialYearCashflowEquityCashflowsDto":{"type":"object","properties":{"depositClosing":{"type":"number","description":"Deposit closing"},"constructionEquity":{"type":"number","description":"Construction equity"},"voluntaryLoan":{"type":"number","description":"Voluntary loan"},"contingentEquity":{"type":"number","description":"Contingent equity"},"totalEquity":{"type":"number","description":"Total equity"}},"required":["depositClosing","constructionEquity","voluntaryLoan","contingentEquity","totalEquity"]}}}}
```

## The FinancialYearCashflowSaleDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"FinancialYearCashflowSaleDto":{"type":"object","properties":{"salePrice":{"type":"number","description":"Sale price"},"debtOutstanding":{"type":"number","description":"Debt outstanding"},"sellingCosts":{"type":"number","description":"Selling costs"},"estCGT":{"type":"number","description":"Estimated CGT"},"proceedsFromSale":{"type":"number","description":"Proceeds from sale"}},"required":["salePrice","debtOutstanding","sellingCosts","estCGT","proceedsFromSale"]}}}}
```

## The PortfolioEntityTaxDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PortfolioEntityTaxDto":{"type":"object","properties":{"entityTax":{"type":"number","description":"Net entity-related tax paid for the financial year (company tax, SMSF tax, contributions tax, Div 293, franking offset). DASHBOARD!H316 = -H281. Negative means tax paid."},"totalTaxPayableIncludingEntities":{"type":"number","description":"Tax payable for the financial year including entities. DASHBOARD!H318 = SUM(H315:H317) = personal tax payable + entity tax."}},"required":["entityTax","totalTaxPayableIncludingEntities"]}}}}
```

## The PortfolioEntityBalancesDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PortfolioEntityBalancesDto":{"type":"object","properties":{"smsfFundBalance":{"type":"number","description":"SMSF closing fund balance at the financial year end date. DASHBOARD!H324 = LOOKUP(H14, PERSONAL!M5:WZ5, PERSONAL!M2081:WZ2081) (end-of-period lookup)."},"companyNetPositionExcludingFranking":{"type":"number","description":"Company net position (all companies) excluding the franking balance, at the financial year end date. DASHBOARD!H325 = EOP PERSONAL!2028 - EOP PERSONAL!2029."},"companyFrankingBalance":{"type":"number","description":"Company franking account balance (all companies) at the financial year end date. DASHBOARD!H326 = EOP PERSONAL!2029."},"totalEntitiesNetPosition":{"type":"number","description":"Total entities net position. DASHBOARD!H327 = H322 (total equity invested) + H324 + H325 + H326."}},"required":["smsfFundBalance","companyNetPositionExcludingFranking","companyFrankingBalance","totalEntitiesNetPosition"]}}}}
```

## The PortfolioFinancialYearCashflowDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PortfolioFinancialYearCashflowDto":{"type":"object","properties":{"year":{"type":"string","description":"Financial year identifier"},"cashFlow":{"description":"Cash flow","allOf":[{"$ref":"#/components/schemas/FinancialYearCashflowCashFlowDto"}]},"taxBenefits":{"description":"Tax benefits","allOf":[{"$ref":"#/components/schemas/FinancialYearCashflowTaxBenefitsDto"}]},"funding":{"description":"Funding","allOf":[{"$ref":"#/components/schemas/FinancialYearCashflowFundingDto"}]},"equityCashflows":{"description":"Equity cashflows","allOf":[{"$ref":"#/components/schemas/FinancialYearCashflowEquityCashflowsDto"}]},"sale":{"description":"Sale","allOf":[{"$ref":"#/components/schemas/FinancialYearCashflowSaleDto"}]},"entityTax":{"description":"Entity-related tax for the financial year","allOf":[{"$ref":"#/components/schemas/PortfolioEntityTaxDto"}]},"entityBalances":{"description":"Entity balances at the financial year end date","allOf":[{"$ref":"#/components/schemas/PortfolioEntityBalancesDto"}]}},"required":["year","cashFlow","taxBenefits","funding","equityCashflows","sale","entityTax","entityBalances"]},"FinancialYearCashflowCashFlowDto":{"type":"object","properties":{"grossRent":{"type":"number","description":"Gross rent"},"operatingExpenses":{"type":"number","description":"Operating expenses"},"netOperatingIncome":{"type":"number","description":"Net operating income"},"principalRepayments":{"type":"number","description":"Principal repayments"},"interest":{"type":"number","description":"Interest"},"operatingProfit":{"type":"number","description":"Operating profit"}},"required":["grossRent","operatingExpenses","netOperatingIncome","principalRepayments","interest","operatingProfit"]},"FinancialYearCashflowTaxBenefitsDto":{"type":"object","properties":{"grossRent":{"type":"number","description":"Gross rent"},"deductibleExpenses":{"type":"number","description":"Deductible expenses"},"deductibleInterest":{"type":"number","description":"Deductible interest"},"ppeDepreciation":{"type":"number","description":"PPE depreciation"},"landTax":{"type":"number","description":"Land tax"},"capitalWorksDepreciation":{"type":"number","description":"Capital works depreciation"},"capitalGainLoss":{"type":"number","description":"Capital gain loss"},"netTaxable":{"type":"number","description":"Net taxable"},"estTax":{"type":"number","description":"Estimated tax"}},"required":["grossRent","deductibleExpenses","deductibleInterest","ppeDepreciation","landTax","capitalWorksDepreciation","capitalGainLoss","netTaxable","estTax"]},"FinancialYearCashflowFundingDto":{"type":"object","properties":{"portfolioValue":{"type":"number","description":"Portfolio value"},"debtOutstanding":{"type":"number","description":"Debt outstanding"},"totalEquity":{"type":"number","description":"Total equity"},"equityAvailable":{"type":"number","description":"Equity available"}},"required":["portfolioValue","debtOutstanding","totalEquity","equityAvailable"]},"FinancialYearCashflowEquityCashflowsDto":{"type":"object","properties":{"depositClosing":{"type":"number","description":"Deposit closing"},"constructionEquity":{"type":"number","description":"Construction equity"},"voluntaryLoan":{"type":"number","description":"Voluntary loan"},"contingentEquity":{"type":"number","description":"Contingent equity"},"totalEquity":{"type":"number","description":"Total equity"}},"required":["depositClosing","constructionEquity","voluntaryLoan","contingentEquity","totalEquity"]},"FinancialYearCashflowSaleDto":{"type":"object","properties":{"salePrice":{"type":"number","description":"Sale price"},"debtOutstanding":{"type":"number","description":"Debt outstanding"},"sellingCosts":{"type":"number","description":"Selling costs"},"estCGT":{"type":"number","description":"Estimated CGT"},"proceedsFromSale":{"type":"number","description":"Proceeds from sale"}},"required":["salePrice","debtOutstanding","sellingCosts","estCGT","proceedsFromSale"]},"PortfolioEntityTaxDto":{"type":"object","properties":{"entityTax":{"type":"number","description":"Net entity-related tax paid for the financial year (company tax, SMSF tax, contributions tax, Div 293, franking offset). DASHBOARD!H316 = -H281. Negative means tax paid."},"totalTaxPayableIncludingEntities":{"type":"number","description":"Tax payable for the financial year including entities. DASHBOARD!H318 = SUM(H315:H317) = personal tax payable + entity tax."}},"required":["entityTax","totalTaxPayableIncludingEntities"]},"PortfolioEntityBalancesDto":{"type":"object","properties":{"smsfFundBalance":{"type":"number","description":"SMSF closing fund balance at the financial year end date. DASHBOARD!H324 = LOOKUP(H14, PERSONAL!M5:WZ5, PERSONAL!M2081:WZ2081) (end-of-period lookup)."},"companyNetPositionExcludingFranking":{"type":"number","description":"Company net position (all companies) excluding the franking balance, at the financial year end date. DASHBOARD!H325 = EOP PERSONAL!2028 - EOP PERSONAL!2029."},"companyFrankingBalance":{"type":"number","description":"Company franking account balance (all companies) at the financial year end date. DASHBOARD!H326 = EOP PERSONAL!2029."},"totalEntitiesNetPosition":{"type":"number","description":"Total entities net position. DASHBOARD!H327 = H322 (total equity invested) + H324 + H325 + H326."}},"required":["smsfFundBalance","companyNetPositionExcludingFranking","companyFrankingBalance","totalEntitiesNetPosition"]}}}}
```

## The PortfolioCashflowResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PortfolioCashflowResponseDto":{"type":"object","properties":{"operatingYears":{"description":"Array of operating years (currently identical to financialYears)","type":"array","items":{"$ref":"#/components/schemas/PortfolioFinancialYearCashflowDto"}},"financialYears":{"description":"Array of financial years","type":"array","items":{"$ref":"#/components/schemas/PortfolioFinancialYearCashflowDto"}}}},"PortfolioFinancialYearCashflowDto":{"type":"object","properties":{"year":{"type":"string","description":"Financial year identifier"},"cashFlow":{"description":"Cash flow","allOf":[{"$ref":"#/components/schemas/FinancialYearCashflowCashFlowDto"}]},"taxBenefits":{"description":"Tax benefits","allOf":[{"$ref":"#/components/schemas/FinancialYearCashflowTaxBenefitsDto"}]},"funding":{"description":"Funding","allOf":[{"$ref":"#/components/schemas/FinancialYearCashflowFundingDto"}]},"equityCashflows":{"description":"Equity cashflows","allOf":[{"$ref":"#/components/schemas/FinancialYearCashflowEquityCashflowsDto"}]},"sale":{"description":"Sale","allOf":[{"$ref":"#/components/schemas/FinancialYearCashflowSaleDto"}]},"entityTax":{"description":"Entity-related tax for the financial year","allOf":[{"$ref":"#/components/schemas/PortfolioEntityTaxDto"}]},"entityBalances":{"description":"Entity balances at the financial year end date","allOf":[{"$ref":"#/components/schemas/PortfolioEntityBalancesDto"}]}},"required":["year","cashFlow","taxBenefits","funding","equityCashflows","sale","entityTax","entityBalances"]},"FinancialYearCashflowCashFlowDto":{"type":"object","properties":{"grossRent":{"type":"number","description":"Gross rent"},"operatingExpenses":{"type":"number","description":"Operating expenses"},"netOperatingIncome":{"type":"number","description":"Net operating income"},"principalRepayments":{"type":"number","description":"Principal repayments"},"interest":{"type":"number","description":"Interest"},"operatingProfit":{"type":"number","description":"Operating profit"}},"required":["grossRent","operatingExpenses","netOperatingIncome","principalRepayments","interest","operatingProfit"]},"FinancialYearCashflowTaxBenefitsDto":{"type":"object","properties":{"grossRent":{"type":"number","description":"Gross rent"},"deductibleExpenses":{"type":"number","description":"Deductible expenses"},"deductibleInterest":{"type":"number","description":"Deductible interest"},"ppeDepreciation":{"type":"number","description":"PPE depreciation"},"landTax":{"type":"number","description":"Land tax"},"capitalWorksDepreciation":{"type":"number","description":"Capital works depreciation"},"capitalGainLoss":{"type":"number","description":"Capital gain loss"},"netTaxable":{"type":"number","description":"Net taxable"},"estTax":{"type":"number","description":"Estimated tax"}},"required":["grossRent","deductibleExpenses","deductibleInterest","ppeDepreciation","landTax","capitalWorksDepreciation","capitalGainLoss","netTaxable","estTax"]},"FinancialYearCashflowFundingDto":{"type":"object","properties":{"portfolioValue":{"type":"number","description":"Portfolio value"},"debtOutstanding":{"type":"number","description":"Debt outstanding"},"totalEquity":{"type":"number","description":"Total equity"},"equityAvailable":{"type":"number","description":"Equity available"}},"required":["portfolioValue","debtOutstanding","totalEquity","equityAvailable"]},"FinancialYearCashflowEquityCashflowsDto":{"type":"object","properties":{"depositClosing":{"type":"number","description":"Deposit closing"},"constructionEquity":{"type":"number","description":"Construction equity"},"voluntaryLoan":{"type":"number","description":"Voluntary loan"},"contingentEquity":{"type":"number","description":"Contingent equity"},"totalEquity":{"type":"number","description":"Total equity"}},"required":["depositClosing","constructionEquity","voluntaryLoan","contingentEquity","totalEquity"]},"FinancialYearCashflowSaleDto":{"type":"object","properties":{"salePrice":{"type":"number","description":"Sale price"},"debtOutstanding":{"type":"number","description":"Debt outstanding"},"sellingCosts":{"type":"number","description":"Selling costs"},"estCGT":{"type":"number","description":"Estimated CGT"},"proceedsFromSale":{"type":"number","description":"Proceeds from sale"}},"required":["salePrice","debtOutstanding","sellingCosts","estCGT","proceedsFromSale"]},"PortfolioEntityTaxDto":{"type":"object","properties":{"entityTax":{"type":"number","description":"Net entity-related tax paid for the financial year (company tax, SMSF tax, contributions tax, Div 293, franking offset). DASHBOARD!H316 = -H281. Negative means tax paid."},"totalTaxPayableIncludingEntities":{"type":"number","description":"Tax payable for the financial year including entities. DASHBOARD!H318 = SUM(H315:H317) = personal tax payable + entity tax."}},"required":["entityTax","totalTaxPayableIncludingEntities"]},"PortfolioEntityBalancesDto":{"type":"object","properties":{"smsfFundBalance":{"type":"number","description":"SMSF closing fund balance at the financial year end date. DASHBOARD!H324 = LOOKUP(H14, PERSONAL!M5:WZ5, PERSONAL!M2081:WZ2081) (end-of-period lookup)."},"companyNetPositionExcludingFranking":{"type":"number","description":"Company net position (all companies) excluding the franking balance, at the financial year end date. DASHBOARD!H325 = EOP PERSONAL!2028 - EOP PERSONAL!2029."},"companyFrankingBalance":{"type":"number","description":"Company franking account balance (all companies) at the financial year end date. DASHBOARD!H326 = EOP PERSONAL!2029."},"totalEntitiesNetPosition":{"type":"number","description":"Total entities net position. DASHBOARD!H327 = H322 (total equity invested) + H324 + H325 + H326."}},"required":["smsfFundBalance","companyNetPositionExcludingFranking","companyFrankingBalance","totalEntitiesNetPosition"]}}}}
```

## The FinancialYearCashflowDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"FinancialYearCashflowDto":{"type":"object","properties":{"year":{"type":"string","description":"Financial year identifier"},"cashFlow":{"description":"Cash flow","allOf":[{"$ref":"#/components/schemas/FinancialYearCashflowCashFlowDto"}]},"taxBenefits":{"description":"Tax benefits","allOf":[{"$ref":"#/components/schemas/FinancialYearCashflowTaxBenefitsDto"}]},"funding":{"description":"Funding","allOf":[{"$ref":"#/components/schemas/FinancialYearCashflowFundingDto"}]},"equityCashflows":{"description":"Equity cashflows","allOf":[{"$ref":"#/components/schemas/FinancialYearCashflowEquityCashflowsDto"}]},"sale":{"description":"Sale","allOf":[{"$ref":"#/components/schemas/FinancialYearCashflowSaleDto"}]}},"required":["year","cashFlow","taxBenefits","funding","equityCashflows","sale"]},"FinancialYearCashflowCashFlowDto":{"type":"object","properties":{"grossRent":{"type":"number","description":"Gross rent"},"operatingExpenses":{"type":"number","description":"Operating expenses"},"netOperatingIncome":{"type":"number","description":"Net operating income"},"principalRepayments":{"type":"number","description":"Principal repayments"},"interest":{"type":"number","description":"Interest"},"operatingProfit":{"type":"number","description":"Operating profit"}},"required":["grossRent","operatingExpenses","netOperatingIncome","principalRepayments","interest","operatingProfit"]},"FinancialYearCashflowTaxBenefitsDto":{"type":"object","properties":{"grossRent":{"type":"number","description":"Gross rent"},"deductibleExpenses":{"type":"number","description":"Deductible expenses"},"deductibleInterest":{"type":"number","description":"Deductible interest"},"ppeDepreciation":{"type":"number","description":"PPE depreciation"},"landTax":{"type":"number","description":"Land tax"},"capitalWorksDepreciation":{"type":"number","description":"Capital works depreciation"},"capitalGainLoss":{"type":"number","description":"Capital gain loss"},"netTaxable":{"type":"number","description":"Net taxable"},"estTax":{"type":"number","description":"Estimated tax"}},"required":["grossRent","deductibleExpenses","deductibleInterest","ppeDepreciation","landTax","capitalWorksDepreciation","capitalGainLoss","netTaxable","estTax"]},"FinancialYearCashflowFundingDto":{"type":"object","properties":{"portfolioValue":{"type":"number","description":"Portfolio value"},"debtOutstanding":{"type":"number","description":"Debt outstanding"},"totalEquity":{"type":"number","description":"Total equity"},"equityAvailable":{"type":"number","description":"Equity available"}},"required":["portfolioValue","debtOutstanding","totalEquity","equityAvailable"]},"FinancialYearCashflowEquityCashflowsDto":{"type":"object","properties":{"depositClosing":{"type":"number","description":"Deposit closing"},"constructionEquity":{"type":"number","description":"Construction equity"},"voluntaryLoan":{"type":"number","description":"Voluntary loan"},"contingentEquity":{"type":"number","description":"Contingent equity"},"totalEquity":{"type":"number","description":"Total equity"}},"required":["depositClosing","constructionEquity","voluntaryLoan","contingentEquity","totalEquity"]},"FinancialYearCashflowSaleDto":{"type":"object","properties":{"salePrice":{"type":"number","description":"Sale price"},"debtOutstanding":{"type":"number","description":"Debt outstanding"},"sellingCosts":{"type":"number","description":"Selling costs"},"estCGT":{"type":"number","description":"Estimated CGT"},"proceedsFromSale":{"type":"number","description":"Proceeds from sale"}},"required":["salePrice","debtOutstanding","sellingCosts","estCGT","proceedsFromSale"]}}}}
```

## The PropertyCashflowResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PropertyCashflowResponseDto":{"type":"object","properties":{"operatingYears":{"description":"Array of operating years","type":"array","items":{"$ref":"#/components/schemas/FinancialYearCashflowDto"}},"financialYears":{"description":"Array of financial years","type":"array","items":{"$ref":"#/components/schemas/FinancialYearCashflowDto"}}}},"FinancialYearCashflowDto":{"type":"object","properties":{"year":{"type":"string","description":"Financial year identifier"},"cashFlow":{"description":"Cash flow","allOf":[{"$ref":"#/components/schemas/FinancialYearCashflowCashFlowDto"}]},"taxBenefits":{"description":"Tax benefits","allOf":[{"$ref":"#/components/schemas/FinancialYearCashflowTaxBenefitsDto"}]},"funding":{"description":"Funding","allOf":[{"$ref":"#/components/schemas/FinancialYearCashflowFundingDto"}]},"equityCashflows":{"description":"Equity cashflows","allOf":[{"$ref":"#/components/schemas/FinancialYearCashflowEquityCashflowsDto"}]},"sale":{"description":"Sale","allOf":[{"$ref":"#/components/schemas/FinancialYearCashflowSaleDto"}]}},"required":["year","cashFlow","taxBenefits","funding","equityCashflows","sale"]},"FinancialYearCashflowCashFlowDto":{"type":"object","properties":{"grossRent":{"type":"number","description":"Gross rent"},"operatingExpenses":{"type":"number","description":"Operating expenses"},"netOperatingIncome":{"type":"number","description":"Net operating income"},"principalRepayments":{"type":"number","description":"Principal repayments"},"interest":{"type":"number","description":"Interest"},"operatingProfit":{"type":"number","description":"Operating profit"}},"required":["grossRent","operatingExpenses","netOperatingIncome","principalRepayments","interest","operatingProfit"]},"FinancialYearCashflowTaxBenefitsDto":{"type":"object","properties":{"grossRent":{"type":"number","description":"Gross rent"},"deductibleExpenses":{"type":"number","description":"Deductible expenses"},"deductibleInterest":{"type":"number","description":"Deductible interest"},"ppeDepreciation":{"type":"number","description":"PPE depreciation"},"landTax":{"type":"number","description":"Land tax"},"capitalWorksDepreciation":{"type":"number","description":"Capital works depreciation"},"capitalGainLoss":{"type":"number","description":"Capital gain loss"},"netTaxable":{"type":"number","description":"Net taxable"},"estTax":{"type":"number","description":"Estimated tax"}},"required":["grossRent","deductibleExpenses","deductibleInterest","ppeDepreciation","landTax","capitalWorksDepreciation","capitalGainLoss","netTaxable","estTax"]},"FinancialYearCashflowFundingDto":{"type":"object","properties":{"portfolioValue":{"type":"number","description":"Portfolio value"},"debtOutstanding":{"type":"number","description":"Debt outstanding"},"totalEquity":{"type":"number","description":"Total equity"},"equityAvailable":{"type":"number","description":"Equity available"}},"required":["portfolioValue","debtOutstanding","totalEquity","equityAvailable"]},"FinancialYearCashflowEquityCashflowsDto":{"type":"object","properties":{"depositClosing":{"type":"number","description":"Deposit closing"},"constructionEquity":{"type":"number","description":"Construction equity"},"voluntaryLoan":{"type":"number","description":"Voluntary loan"},"contingentEquity":{"type":"number","description":"Contingent equity"},"totalEquity":{"type":"number","description":"Total equity"}},"required":["depositClosing","constructionEquity","voluntaryLoan","contingentEquity","totalEquity"]},"FinancialYearCashflowSaleDto":{"type":"object","properties":{"salePrice":{"type":"number","description":"Sale price"},"debtOutstanding":{"type":"number","description":"Debt outstanding"},"sellingCosts":{"type":"number","description":"Selling costs"},"estCGT":{"type":"number","description":"Estimated CGT"},"proceedsFromSale":{"type":"number","description":"Proceeds from sale"}},"required":["salePrice","debtOutstanding","sellingCosts","estCGT","proceedsFromSale"]}}}}
```

## The CapitalGainsTaxResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CapitalGainsTaxResponseDto":{"type":"object","properties":{"success":{"type":"boolean","description":"Success indicator"},"data":{"type":"number","description":"Capital Gains Tax value"},"message":{"type":"string","description":"Message"}},"required":["success","data","message"]}}}}
```

## The PreInvestmentCashflowDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PreInvestmentCashflowDto":{"type":"object","properties":{"salary":{"type":"number","description":"Annual salary income"},"livingExpenses":{"type":"number","description":"Annual living expenses"},"hecshelpRepayments":{"type":"number","description":"Annual HECS/HELP repayments"},"soleTraderIncome":{"type":"number","description":"Sole trader/business income"},"personalLoans":{"type":"number","description":"Personal loan repayments"},"bonusesCommissions":{"type":"number","description":"Bonuses and commissions"},"paygTax":{"type":"number","description":"PAYG tax paid"},"preInvestmentCashflows":{"type":"number","description":"Net pre-investment cashflows"}},"required":["salary","livingExpenses","hecshelpRepayments","soleTraderIncome","personalLoans","bonusesCommissions","paygTax","preInvestmentCashflows"]}}}}
```

## The InvestmentCashflowsDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"InvestmentCashflowsDto":{"type":"object","properties":{"purchasingCosts":{"type":"number","description":"Property purchasing costs (stamp duty, legal, etc.)"},"rentalIncome":{"type":"number","description":"Rental income received"},"operatingCosts":{"type":"number","description":"Operating costs (maintenance, management, etc.)"},"debtPayments":{"type":"number","description":"Debt/loan payments"},"capitalExpenses":{"type":"number","description":"Capital expenses"},"plantEquipment":{"type":"number","description":"Plant and equipment expenses"},"landTax":{"type":"number","description":"Land tax"},"equityWithdrawn":{"type":"number","description":"Equity withdrawn from properties"},"netCashflow":{"type":"number","description":"Net cashflow from investments"},"totalEquityCashflow":{"type":"number","description":"Total equity cashflow"}},"required":["purchasingCosts","rentalIncome","operatingCosts","debtPayments","capitalExpenses","plantEquipment","landTax","equityWithdrawn","netCashflow","totalEquityCashflow"]}}}}
```

## The PersonalEntityCashflowsDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PersonalEntityCashflowsDto":{"type":"object","properties":{"trustDistributionsReceived":{"type":"number","description":"Trust distributions received by both users. DASHBOARD!H303 = PERSONAL!2007 + 2008.","nullable":true},"companyDividendsReceived":{"type":"number","description":"Company dividends received by both users, in cash. DASHBOARD!H304 = PERSONAL!2128 + 2129 (user share x cash dividends declared). The workbook label says 'grossed-up' but the formula is cash; the grossed-up taxable amount (PERSONAL!2023/2024) is not exposed.","nullable":true},"smsfPensionIncome":{"type":"number","description":"SMSF pension drawdown received. DASHBOARD!H305 = PERSONAL!2102 (= 2093 + 2100).","nullable":true},"smsfContributionsOut":{"type":"number","description":"SMSF contributions paid out of personal cash (negative). DASHBOARD!H306 = PERSONAL!2122 + 2123.","nullable":true},"complianceFees":{"type":"number","description":"Compliance fees across all entities (negative). DASHBOARD!H307 = PERSONAL!2015 (trusts) + 2030 (companies) + 2036 (SMSF).","nullable":true},"cashContributionsForShortfall":{"type":"number","description":"Cash contributions to cover an entity shortfall, counted in tax-reconciliation periods only. DASHBOARD!H308 = SUMIFS(PERSONAL!2086, Personal_FinancialYear, H$3, PERSONAL!590, 1). Positive in the workbook.","nullable":true},"netEntityCashflow":{"type":"number","description":"Net entity cashflow. DASHBOARD!H309 = SUM(H303:H308).","nullable":true}},"required":["trustDistributionsReceived","companyDividendsReceived","smsfPensionIncome","smsfContributionsOut","complianceFees","cashContributionsForShortfall","netEntityCashflow"]}}}}
```

## The PostInvestmentCashflowDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PostInvestmentCashflowDto":{"type":"object","properties":{"preInvestmentCashflows":{"type":"number","description":"Pre-investment cashflows carried forward"},"portfolioEquityCashflows":{"type":"number","description":"Portfolio equity cashflows"},"taxAdjustment":{"type":"number","description":"Tax adjustment from investment"},"netCashflowToEquity":{"type":"number","description":"Net cashflow to equity after all adjustments"},"cumulativeCashflow":{"type":"number","description":"Cumulative cashflow"},"cashflowAvailable":{"type":"number","description":"Available cashflow for further investment"},"entityEquityCashflows":{"type":"number","description":"Entity equity cashflows for the financial year. DASHBOARD!H74 = H309 (net of the ENTITY CASHFLOWS block). Null only when the FY cannot be resolved in the model.","nullable":true},"cashHeldInRelatedEntities":{"type":"number","description":"Closing cash held in related entities at the FY end date (balance, not a flow). DASHBOARD!H81 = SUMIF(Personal_PeriodEnd, H$14, PERSONAL!M894:WZ894). Currently always null: the model port does not yet include DASHBOARD_H81 / PERSONAL!894.","nullable":true}},"required":["preInvestmentCashflows","portfolioEquityCashflows","taxAdjustment","netCashflowToEquity","cumulativeCashflow","cashflowAvailable","entityEquityCashflows","cashHeldInRelatedEntities"]}}}}
```

## The YearCashflowDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"YearCashflowDto":{"type":"object","properties":{"year":{"type":"string","description":"Financial year identifier"},"preInvestmentCashflow":{"description":"Pre-investment cashflow breakdown","allOf":[{"$ref":"#/components/schemas/PreInvestmentCashflowDto"}]},"investmentCashflows":{"description":"Investment cashflows breakdown","allOf":[{"$ref":"#/components/schemas/InvestmentCashflowsDto"}]},"entityCashflows":{"description":"Entities & Commercial: ENTITY CASHFLOWS block for the financial year (DASHBOARD rows 303-309).","allOf":[{"$ref":"#/components/schemas/PersonalEntityCashflowsDto"}]},"postInvestmentCashflow":{"description":"Post-investment cashflow summary","allOf":[{"$ref":"#/components/schemas/PostInvestmentCashflowDto"}]}},"required":["year","preInvestmentCashflow","investmentCashflows","entityCashflows","postInvestmentCashflow"]},"PreInvestmentCashflowDto":{"type":"object","properties":{"salary":{"type":"number","description":"Annual salary income"},"livingExpenses":{"type":"number","description":"Annual living expenses"},"hecshelpRepayments":{"type":"number","description":"Annual HECS/HELP repayments"},"soleTraderIncome":{"type":"number","description":"Sole trader/business income"},"personalLoans":{"type":"number","description":"Personal loan repayments"},"bonusesCommissions":{"type":"number","description":"Bonuses and commissions"},"paygTax":{"type":"number","description":"PAYG tax paid"},"preInvestmentCashflows":{"type":"number","description":"Net pre-investment cashflows"}},"required":["salary","livingExpenses","hecshelpRepayments","soleTraderIncome","personalLoans","bonusesCommissions","paygTax","preInvestmentCashflows"]},"InvestmentCashflowsDto":{"type":"object","properties":{"purchasingCosts":{"type":"number","description":"Property purchasing costs (stamp duty, legal, etc.)"},"rentalIncome":{"type":"number","description":"Rental income received"},"operatingCosts":{"type":"number","description":"Operating costs (maintenance, management, etc.)"},"debtPayments":{"type":"number","description":"Debt/loan payments"},"capitalExpenses":{"type":"number","description":"Capital expenses"},"plantEquipment":{"type":"number","description":"Plant and equipment expenses"},"landTax":{"type":"number","description":"Land tax"},"equityWithdrawn":{"type":"number","description":"Equity withdrawn from properties"},"netCashflow":{"type":"number","description":"Net cashflow from investments"},"totalEquityCashflow":{"type":"number","description":"Total equity cashflow"}},"required":["purchasingCosts","rentalIncome","operatingCosts","debtPayments","capitalExpenses","plantEquipment","landTax","equityWithdrawn","netCashflow","totalEquityCashflow"]},"PersonalEntityCashflowsDto":{"type":"object","properties":{"trustDistributionsReceived":{"type":"number","description":"Trust distributions received by both users. DASHBOARD!H303 = PERSONAL!2007 + 2008.","nullable":true},"companyDividendsReceived":{"type":"number","description":"Company dividends received by both users, in cash. DASHBOARD!H304 = PERSONAL!2128 + 2129 (user share x cash dividends declared). The workbook label says 'grossed-up' but the formula is cash; the grossed-up taxable amount (PERSONAL!2023/2024) is not exposed.","nullable":true},"smsfPensionIncome":{"type":"number","description":"SMSF pension drawdown received. DASHBOARD!H305 = PERSONAL!2102 (= 2093 + 2100).","nullable":true},"smsfContributionsOut":{"type":"number","description":"SMSF contributions paid out of personal cash (negative). DASHBOARD!H306 = PERSONAL!2122 + 2123.","nullable":true},"complianceFees":{"type":"number","description":"Compliance fees across all entities (negative). DASHBOARD!H307 = PERSONAL!2015 (trusts) + 2030 (companies) + 2036 (SMSF).","nullable":true},"cashContributionsForShortfall":{"type":"number","description":"Cash contributions to cover an entity shortfall, counted in tax-reconciliation periods only. DASHBOARD!H308 = SUMIFS(PERSONAL!2086, Personal_FinancialYear, H$3, PERSONAL!590, 1). Positive in the workbook.","nullable":true},"netEntityCashflow":{"type":"number","description":"Net entity cashflow. DASHBOARD!H309 = SUM(H303:H308).","nullable":true}},"required":["trustDistributionsReceived","companyDividendsReceived","smsfPensionIncome","smsfContributionsOut","complianceFees","cashContributionsForShortfall","netEntityCashflow"]},"PostInvestmentCashflowDto":{"type":"object","properties":{"preInvestmentCashflows":{"type":"number","description":"Pre-investment cashflows carried forward"},"portfolioEquityCashflows":{"type":"number","description":"Portfolio equity cashflows"},"taxAdjustment":{"type":"number","description":"Tax adjustment from investment"},"netCashflowToEquity":{"type":"number","description":"Net cashflow to equity after all adjustments"},"cumulativeCashflow":{"type":"number","description":"Cumulative cashflow"},"cashflowAvailable":{"type":"number","description":"Available cashflow for further investment"},"entityEquityCashflows":{"type":"number","description":"Entity equity cashflows for the financial year. DASHBOARD!H74 = H309 (net of the ENTITY CASHFLOWS block). Null only when the FY cannot be resolved in the model.","nullable":true},"cashHeldInRelatedEntities":{"type":"number","description":"Closing cash held in related entities at the FY end date (balance, not a flow). DASHBOARD!H81 = SUMIF(Personal_PeriodEnd, H$14, PERSONAL!M894:WZ894). Currently always null: the model port does not yet include DASHBOARD_H81 / PERSONAL!894.","nullable":true}},"required":["preInvestmentCashflows","portfolioEquityCashflows","taxAdjustment","netCashflowToEquity","cumulativeCashflow","cashflowAvailable","entityEquityCashflows","cashHeldInRelatedEntities"]}}}}
```

## The PersonalCashflowResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PersonalCashflowResponseDto":{"type":"object","properties":{"years":{"description":"Array of cashflow data by financial year","type":"array","items":{"$ref":"#/components/schemas/YearCashflowDto"}}},"required":["years"]},"YearCashflowDto":{"type":"object","properties":{"year":{"type":"string","description":"Financial year identifier"},"preInvestmentCashflow":{"description":"Pre-investment cashflow breakdown","allOf":[{"$ref":"#/components/schemas/PreInvestmentCashflowDto"}]},"investmentCashflows":{"description":"Investment cashflows breakdown","allOf":[{"$ref":"#/components/schemas/InvestmentCashflowsDto"}]},"entityCashflows":{"description":"Entities & Commercial: ENTITY CASHFLOWS block for the financial year (DASHBOARD rows 303-309).","allOf":[{"$ref":"#/components/schemas/PersonalEntityCashflowsDto"}]},"postInvestmentCashflow":{"description":"Post-investment cashflow summary","allOf":[{"$ref":"#/components/schemas/PostInvestmentCashflowDto"}]}},"required":["year","preInvestmentCashflow","investmentCashflows","entityCashflows","postInvestmentCashflow"]},"PreInvestmentCashflowDto":{"type":"object","properties":{"salary":{"type":"number","description":"Annual salary income"},"livingExpenses":{"type":"number","description":"Annual living expenses"},"hecshelpRepayments":{"type":"number","description":"Annual HECS/HELP repayments"},"soleTraderIncome":{"type":"number","description":"Sole trader/business income"},"personalLoans":{"type":"number","description":"Personal loan repayments"},"bonusesCommissions":{"type":"number","description":"Bonuses and commissions"},"paygTax":{"type":"number","description":"PAYG tax paid"},"preInvestmentCashflows":{"type":"number","description":"Net pre-investment cashflows"}},"required":["salary","livingExpenses","hecshelpRepayments","soleTraderIncome","personalLoans","bonusesCommissions","paygTax","preInvestmentCashflows"]},"InvestmentCashflowsDto":{"type":"object","properties":{"purchasingCosts":{"type":"number","description":"Property purchasing costs (stamp duty, legal, etc.)"},"rentalIncome":{"type":"number","description":"Rental income received"},"operatingCosts":{"type":"number","description":"Operating costs (maintenance, management, etc.)"},"debtPayments":{"type":"number","description":"Debt/loan payments"},"capitalExpenses":{"type":"number","description":"Capital expenses"},"plantEquipment":{"type":"number","description":"Plant and equipment expenses"},"landTax":{"type":"number","description":"Land tax"},"equityWithdrawn":{"type":"number","description":"Equity withdrawn from properties"},"netCashflow":{"type":"number","description":"Net cashflow from investments"},"totalEquityCashflow":{"type":"number","description":"Total equity cashflow"}},"required":["purchasingCosts","rentalIncome","operatingCosts","debtPayments","capitalExpenses","plantEquipment","landTax","equityWithdrawn","netCashflow","totalEquityCashflow"]},"PersonalEntityCashflowsDto":{"type":"object","properties":{"trustDistributionsReceived":{"type":"number","description":"Trust distributions received by both users. DASHBOARD!H303 = PERSONAL!2007 + 2008.","nullable":true},"companyDividendsReceived":{"type":"number","description":"Company dividends received by both users, in cash. DASHBOARD!H304 = PERSONAL!2128 + 2129 (user share x cash dividends declared). The workbook label says 'grossed-up' but the formula is cash; the grossed-up taxable amount (PERSONAL!2023/2024) is not exposed.","nullable":true},"smsfPensionIncome":{"type":"number","description":"SMSF pension drawdown received. DASHBOARD!H305 = PERSONAL!2102 (= 2093 + 2100).","nullable":true},"smsfContributionsOut":{"type":"number","description":"SMSF contributions paid out of personal cash (negative). DASHBOARD!H306 = PERSONAL!2122 + 2123.","nullable":true},"complianceFees":{"type":"number","description":"Compliance fees across all entities (negative). DASHBOARD!H307 = PERSONAL!2015 (trusts) + 2030 (companies) + 2036 (SMSF).","nullable":true},"cashContributionsForShortfall":{"type":"number","description":"Cash contributions to cover an entity shortfall, counted in tax-reconciliation periods only. DASHBOARD!H308 = SUMIFS(PERSONAL!2086, Personal_FinancialYear, H$3, PERSONAL!590, 1). Positive in the workbook.","nullable":true},"netEntityCashflow":{"type":"number","description":"Net entity cashflow. DASHBOARD!H309 = SUM(H303:H308).","nullable":true}},"required":["trustDistributionsReceived","companyDividendsReceived","smsfPensionIncome","smsfContributionsOut","complianceFees","cashContributionsForShortfall","netEntityCashflow"]},"PostInvestmentCashflowDto":{"type":"object","properties":{"preInvestmentCashflows":{"type":"number","description":"Pre-investment cashflows carried forward"},"portfolioEquityCashflows":{"type":"number","description":"Portfolio equity cashflows"},"taxAdjustment":{"type":"number","description":"Tax adjustment from investment"},"netCashflowToEquity":{"type":"number","description":"Net cashflow to equity after all adjustments"},"cumulativeCashflow":{"type":"number","description":"Cumulative cashflow"},"cashflowAvailable":{"type":"number","description":"Available cashflow for further investment"},"entityEquityCashflows":{"type":"number","description":"Entity equity cashflows for the financial year. DASHBOARD!H74 = H309 (net of the ENTITY CASHFLOWS block). Null only when the FY cannot be resolved in the model.","nullable":true},"cashHeldInRelatedEntities":{"type":"number","description":"Closing cash held in related entities at the FY end date (balance, not a flow). DASHBOARD!H81 = SUMIF(Personal_PeriodEnd, H$14, PERSONAL!M894:WZ894). Currently always null: the model port does not yet include DASHBOARD_H81 / PERSONAL!894.","nullable":true}},"required":["preInvestmentCashflows","portfolioEquityCashflows","taxAdjustment","netCashflowToEquity","cumulativeCashflow","cashflowAvailable","entityEquityCashflows","cashHeldInRelatedEntities"]}}}}
```

## The EntityCashflowOperatingDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"EntityCashflowOperatingDto":{"type":"object","properties":{"rentalIncome":{"type":"number","description":"D362 Rental Income"},"operatingExpenses":{"type":"number","description":"D363 Operating Expenses"},"netOperatingIncome":{"type":"number","description":"D364 Net Operating Income (NOI)"},"principalRepayments":{"type":"number","description":"D365 Principal Repayments"},"interestAndFinancingFees":{"type":"number","description":"D366 Interest & Financing Fees"},"operatingProfit":{"type":"number","description":"D367 Operating Profit"}},"required":["rentalIncome","operatingExpenses","netOperatingIncome","principalRepayments","interestAndFinancingFees","operatingProfit"]}}}}
```

## The EntityCashflowTaxDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"EntityCashflowTaxDto":{"type":"object","properties":{"grossRentalIncome":{"type":"number","description":"D371 Gross Rental Income"},"capitalGainLossAtSale":{"type":"number","description":"D372 Capital Gain/Loss at Sale"},"grossIncome":{"type":"number","description":"D373 Gross Income"},"operatingExpenses":{"type":"number","description":"D374 Operating Expenses"},"landTax":{"type":"number","description":"D375 Land Tax"},"deductibleInterestAndFinancingFees":{"type":"number","description":"D376 Deductible Interest & Financing Fees"},"ppeDepreciation":{"type":"number","description":"D377 PP&E Depreciation"},"capitalWorksDepreciationClaimed":{"type":"number","description":"D378 Capital Works Depreciation Claimed"},"taxOffsetFromProperty":{"type":"number","description":"D379 Tax Offset from Property"},"taxableIncome":{"type":"number","description":"D380 Taxable Income"},"taxPayableFinancialYear":{"type":"number","description":"D381 Tax Payable (Financial Year)"}},"required":["grossRentalIncome","capitalGainLossAtSale","grossIncome","operatingExpenses","landTax","deductibleInterestAndFinancingFees","ppeDepreciation","capitalWorksDepreciationClaimed","taxOffsetFromProperty","taxableIncome","taxPayableFinancialYear"]}}}}
```

## The EntityCashflowEquityDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"EntityCashflowEquityDto":{"type":"object","properties":{"portfolioValue":{"type":"number","description":"D385 Portfolio Value"},"debtOutstanding":{"type":"number","description":"D386 Debt Outstanding"},"equityInHome":{"type":"number","description":"D387 Equity in Home"},"equityAvailable":{"type":"number","description":"D388 Equity Available"},"depositAndClosingCosts":{"type":"number","description":"D390 Deposit & Closing Costs"},"constructionEquity":{"type":"number","description":"D391 Construction Equity"},"voluntaryLoanRepayments":{"type":"number","description":"D392 Voluntary Loan Repayments"},"contingentEquity":{"type":"number","description":"D393 Contingent Equity"},"totalEquityInvested":{"type":"number","description":"D394 Total Equity Invested"}},"required":["portfolioValue","debtOutstanding","equityInHome","equityAvailable","depositAndClosingCosts","constructionEquity","voluntaryLoanRepayments","contingentEquity","totalEquityInvested"]}}}}
```

## The EntityCashflowSaleDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"EntityCashflowSaleDto":{"type":"object","properties":{"salePrice":{"type":"number","description":"D397 Sale Price"},"debtOutstanding":{"type":"number","description":"D398 Debt Outstanding"},"sellingCosts":{"type":"number","description":"D399 Selling Costs"},"capitalGainsTax":{"type":"number","description":"D400 Capital Gains Tax"},"proceedsFromSale":{"type":"number","description":"D401 Proceeds from Sale"}},"required":["salePrice","debtOutstanding","sellingCosts","capitalGainsTax","proceedsFromSale"]}}}}
```

## The EntityCashflowResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"EntityCashflowResponseDto":{"type":"object","properties":{"dateIndex":{"type":"number","description":"DASHBOARD annual column index matched to the requested date"},"financialYear":{"type":"string","description":"Financial year label from DASHBOARD H9","nullable":true},"operating":{"$ref":"#/components/schemas/EntityCashflowOperatingDto"},"tax":{"$ref":"#/components/schemas/EntityCashflowTaxDto"},"equity":{"$ref":"#/components/schemas/EntityCashflowEquityDto"},"sale":{"$ref":"#/components/schemas/EntityCashflowSaleDto"}},"required":["dateIndex","financialYear","operating","tax","equity","sale"]},"EntityCashflowOperatingDto":{"type":"object","properties":{"rentalIncome":{"type":"number","description":"D362 Rental Income"},"operatingExpenses":{"type":"number","description":"D363 Operating Expenses"},"netOperatingIncome":{"type":"number","description":"D364 Net Operating Income (NOI)"},"principalRepayments":{"type":"number","description":"D365 Principal Repayments"},"interestAndFinancingFees":{"type":"number","description":"D366 Interest & Financing Fees"},"operatingProfit":{"type":"number","description":"D367 Operating Profit"}},"required":["rentalIncome","operatingExpenses","netOperatingIncome","principalRepayments","interestAndFinancingFees","operatingProfit"]},"EntityCashflowTaxDto":{"type":"object","properties":{"grossRentalIncome":{"type":"number","description":"D371 Gross Rental Income"},"capitalGainLossAtSale":{"type":"number","description":"D372 Capital Gain/Loss at Sale"},"grossIncome":{"type":"number","description":"D373 Gross Income"},"operatingExpenses":{"type":"number","description":"D374 Operating Expenses"},"landTax":{"type":"number","description":"D375 Land Tax"},"deductibleInterestAndFinancingFees":{"type":"number","description":"D376 Deductible Interest & Financing Fees"},"ppeDepreciation":{"type":"number","description":"D377 PP&E Depreciation"},"capitalWorksDepreciationClaimed":{"type":"number","description":"D378 Capital Works Depreciation Claimed"},"taxOffsetFromProperty":{"type":"number","description":"D379 Tax Offset from Property"},"taxableIncome":{"type":"number","description":"D380 Taxable Income"},"taxPayableFinancialYear":{"type":"number","description":"D381 Tax Payable (Financial Year)"}},"required":["grossRentalIncome","capitalGainLossAtSale","grossIncome","operatingExpenses","landTax","deductibleInterestAndFinancingFees","ppeDepreciation","capitalWorksDepreciationClaimed","taxOffsetFromProperty","taxableIncome","taxPayableFinancialYear"]},"EntityCashflowEquityDto":{"type":"object","properties":{"portfolioValue":{"type":"number","description":"D385 Portfolio Value"},"debtOutstanding":{"type":"number","description":"D386 Debt Outstanding"},"equityInHome":{"type":"number","description":"D387 Equity in Home"},"equityAvailable":{"type":"number","description":"D388 Equity Available"},"depositAndClosingCosts":{"type":"number","description":"D390 Deposit & Closing Costs"},"constructionEquity":{"type":"number","description":"D391 Construction Equity"},"voluntaryLoanRepayments":{"type":"number","description":"D392 Voluntary Loan Repayments"},"contingentEquity":{"type":"number","description":"D393 Contingent Equity"},"totalEquityInvested":{"type":"number","description":"D394 Total Equity Invested"}},"required":["portfolioValue","debtOutstanding","equityInHome","equityAvailable","depositAndClosingCosts","constructionEquity","voluntaryLoanRepayments","contingentEquity","totalEquityInvested"]},"EntityCashflowSaleDto":{"type":"object","properties":{"salePrice":{"type":"number","description":"D397 Sale Price"},"debtOutstanding":{"type":"number","description":"D398 Debt Outstanding"},"sellingCosts":{"type":"number","description":"D399 Selling Costs"},"capitalGainsTax":{"type":"number","description":"D400 Capital Gains Tax"},"proceedsFromSale":{"type":"number","description":"D401 Proceeds from Sale"}},"required":["salePrice","debtOutstanding","sellingCosts","capitalGainsTax","proceedsFromSale"]}}}}
```

## The CreatePersonalActualDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CreatePersonalActualDto":{"type":"object","properties":{"amount":{"type":"number","description":"The monetary amount for this personal financial actual entry. Can be income or expense depending on the type.","minimum":0},"date":{"type":"string","description":"The date when this personal financial actual occurred or will occur. Must be in ISO 8601 date-time format.","format":"date-time"},"type":{"type":"string","description":"The type of personal financial actual being recorded. This categorizes the income or expense entry.\n    \nAvailable types:\n- GROSS_ANUAL_SALARY: Annual gross salary before tax\n- LIVING_EXPENSES: Regular living costs (rent, food, utilities, etc.)\n- HECS_HELP_LOAN: Australian Higher Education Loan Program payments\n- DEPENDENTS: Costs related to dependents (children, family members)\n- SIDE_HUSTLE_INCOME: Income from secondary jobs or gigs\n- RECURRING_BONUSES: Regular bonuses (e.g., annual performance bonuses)\n- ONE_OFF_BONUSES: Non-recurring bonuses\n- PERSONAL_LOANS: Personal loan repayments\n- PAYG_TAX: Pay As You Go tax payments","enum":["GROSS_ANUAL_SALARY","LIVING_EXPENSES","HECS_HELP_LOAN","DEPENDENTS","SIDE_HUSTLE_INCOME","RECURRING_BONUSES","ONE_OFF_BONUSES","PERSONAL_LOANS","PAYG_TAX"]}},"required":["amount","date","type"]}}}}
```

## The PersonalActualDeletedResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PersonalActualDeletedResponseDto":{"type":"object","properties":{"message":{"type":"string","description":"Message indicating the actual was deleted"}},"required":["message"]}}}}
```

## The PersonalActualResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PersonalActualResponseDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the personal actual entry"},"amount":{"type":"number","description":"The monetary amount for this personal financial actual entry. Can be income or expense depending on the type."},"date":{"type":"string","description":"The date when this personal financial actual occurred or will occur.","format":"date-time"},"endDate":{"type":"string","description":"The end date for recurring actuals. Null for one-time entries.","format":"date-time","nullable":true},"frequency":{"type":"string","description":"The frequency at which this financial actual occurs.\n    \nAvailable frequencies:\n- ONE_OFF: Single occurrence\n- WEEKLY: Occurs every week\n- FORTNIGHTLY: Occurs every two weeks  \n- MONTHLY: Occurs every month\n- QUARTERLY: Occurs every three months\n- ANNUALLY: Occurs every year","enum":["WEEKLY","MONTHLY","BI_MONTHLY","QUARTERLY","SEMI_ANUAL","ANNUAL","ONE_OFF"],"default":"ONE_OFF"},"type":{"type":"string","description":"The type of personal financial actual being recorded.\n    \nAvailable types:\n- GROSS_ANUAL_SALARY: Annual gross salary before tax\n- LIVING_EXPENSES: Regular living costs (rent, food, utilities, etc.)\n- HECS_HELP_LOAN: Australian Higher Education Loan Program payments\n- DEPENDENTS: Costs related to dependents (children, family members)\n- SIDE_HUSTLE_INCOME: Income from secondary jobs or gigs\n- RECURRING_BONUSES: Regular bonuses (e.g., annual performance bonuses)\n- ONE_OFF_BONUSES: Non-recurring bonuses\n- PERSONAL_LOANS: Personal loan repayments\n- PAYG_TAX: Pay As You Go tax payments","enum":["GROSS_ANUAL_SALARY","LIVING_EXPENSES","HECS_HELP_LOAN","DEPENDENTS","SIDE_HUSTLE_INCOME","RECURRING_BONUSES","ONE_OFF_BONUSES","PERSONAL_LOANS","PAYG_TAX"]},"createdAt":{"type":"string","description":"Timestamp when this entry was created","format":"date-time"},"updatedAt":{"type":"string","description":"Timestamp when this entry was last updated","format":"date-time"}},"required":["id","amount","date","frequency","type","createdAt","updatedAt"]}}}}
```

## The CreatePropertyActualDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CreatePropertyActualDto":{"type":"object","properties":{"amount":{"type":"number"},"date":{"format":"date-time","type":"string"},"type":{"type":"string","enum":["CAPITAL_GROWTH","RENTAL_GROWTH","RENTAL_INCOME","OPERATING_COSTS","DEBT_PAYMENTS","COST_ESCALATION","VARIABLE_RATE"]}},"required":["amount","date","type"]}}}}
```

## The PersonalTotalDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PersonalTotalDto":{"type":"object","properties":{"actualType":{"type":"string","description":"The type of personal financial category","enum":["GROSS_ANUAL_SALARY","LIVING_EXPENSES","HECS_HELP_LOAN","DEPENDENTS","SIDE_HUSTLE_INCOME","RECURRING_BONUSES","ONE_OFF_BONUSES","PERSONAL_LOANS","PAYG_TAX"]},"label":{"type":"string","description":"Human-readable label for this financial category"},"amount":{"type":"number","description":"The total amount for this category across the year"}},"required":["actualType","label","amount"]}}}}
```

## The PersonalYearTotalResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PersonalYearTotalResponseDto":{"type":"object","properties":{"fromDate":{"type":"string","description":"The start date of the financial year period","format":"date"},"toDate":{"type":"string","description":"The end date of the financial year period","format":"date"},"totals":{"description":"Array of total amounts for each personal financial category","type":"array","items":{"$ref":"#/components/schemas/PersonalTotalDto"}}},"required":["fromDate","toDate","totals"]},"PersonalTotalDto":{"type":"object","properties":{"actualType":{"type":"string","description":"The type of personal financial category","enum":["GROSS_ANUAL_SALARY","LIVING_EXPENSES","HECS_HELP_LOAN","DEPENDENTS","SIDE_HUSTLE_INCOME","RECURRING_BONUSES","ONE_OFF_BONUSES","PERSONAL_LOANS","PAYG_TAX"]},"label":{"type":"string","description":"Human-readable label for this financial category"},"amount":{"type":"number","description":"The total amount for this category across the year"}},"required":["actualType","label","amount"]}}}}
```

## The MonthlyActualDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"MonthlyActualDto":{"type":"object","properties":{"isActual":{"type":"boolean","description":"Indicates whether this is an actual recorded value (true) or a projected/estimated value (false)"},"date":{"type":"string","description":"The date for this monthly entry in ISO format","format":"date"},"amount":{"type":"number","description":"The monetary amount for this month"}},"required":["isActual","date","amount"]}}}}
```

## The PersonalYearTypeResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PersonalYearTypeResponseDto":{"type":"object","properties":{"actualType":{"type":"string","description":"The type of personal financial category being queried","enum":["GROSS_ANUAL_SALARY","LIVING_EXPENSES","HECS_HELP_LOAN","DEPENDENTS","SIDE_HUSTLE_INCOME","RECURRING_BONUSES","ONE_OFF_BONUSES","PERSONAL_LOANS","PAYG_TAX"]},"fromDate":{"type":"string","description":"The start date of the financial year period","format":"date"},"toDate":{"type":"string","description":"The end date of the financial year period","format":"date"},"total":{"type":"number","description":"The total amount for this category across the entire year"},"months":{"description":"Monthly breakdown of amounts, showing actual vs projected values","type":"array","items":{"$ref":"#/components/schemas/MonthlyActualDto"}}},"required":["actualType","fromDate","toDate","total","months"]},"MonthlyActualDto":{"type":"object","properties":{"isActual":{"type":"boolean","description":"Indicates whether this is an actual recorded value (true) or a projected/estimated value (false)"},"date":{"type":"string","description":"The date for this monthly entry in ISO format","format":"date"},"amount":{"type":"number","description":"The monetary amount for this month"}},"required":["isActual","date","amount"]}}}}
```

## The PropertyYearTotalItemDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PropertyYearTotalItemDto":{"type":"object","properties":{"actualType":{"type":"string","description":"The type of property financial category"},"label":{"type":"string","description":"The label of the property financial category"},"amount":{"type":"number","description":"The amount of the property financial category"}},"required":["label","amount"]}}}}
```

## The PropertyYearTotalDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PropertyYearTotalDto":{"type":"object","properties":{"fromDate":{"type":"string","description":"The start date of the financial year period","format":"date"},"toDate":{"type":"string","description":"The end date of the financial year period","format":"date"},"totals":{"description":"The total amount for this category across the year","type":"array","items":{"$ref":"#/components/schemas/PropertyYearTotalItemDto"}}},"required":["fromDate","toDate","totals"]},"PropertyYearTotalItemDto":{"type":"object","properties":{"actualType":{"type":"string","description":"The type of property financial category"},"label":{"type":"string","description":"The label of the property financial category"},"amount":{"type":"number","description":"The amount of the property financial category"}},"required":["label","amount"]}}}}
```

## The ChatMessageDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ChatMessageDto":{"type":"object","properties":{"role":{"type":"string","description":"Message role","enum":["user","assistant","system"]},"content":{"type":"string","description":"Message content"}},"required":["role","content"]}}}}
```

## The ChatRequestDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ChatRequestDto":{"type":"object","properties":{"messages":{"description":"Array of chat messages forming the conversation","type":"array","items":{"$ref":"#/components/schemas/ChatMessageDto"}},"guidance":{"type":"string","description":"Optional guidance for AI response"},"context":{"type":"object","description":"Optional context data for the conversation"}},"required":["messages"]},"ChatMessageDto":{"type":"object","properties":{"role":{"type":"string","description":"Message role","enum":["user","assistant","system"]},"content":{"type":"string","description":"Message content"}},"required":["role","content"]}}}}
```

## The ChatMessageResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ChatMessageResponseDto":{"type":"object","properties":{"id":{"type":"string","description":"Message identifier"},"message":{"type":"string","description":"Message content"},"timestamp":{"type":"string","description":"Message timestamp","format":"date-time"},"type":{"type":"string","description":"Message sender type","enum":["user","assistant"]}},"required":["id","message","timestamp","type"]}}}}
```

## The UpdateChatMessageMetadataDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"UpdateChatMessageMetadataDto":{"type":"object","properties":{}}}}}
```

## The RenameChatSessionDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"RenameChatSessionDto":{"type":"object","properties":{"title":{"type":"string","description":"New name for the chat session"}},"required":["title"]}}}}
```

## The ProposalScopeDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ProposalScopeDto":{"type":"object","properties":{"kind":{"type":"string","enum":["strategy","client","workspace"]},"workspaceId":{"type":"string","description":"Verified against actor membership; omit to resolve server-side."},"clientId":{"type":"string"},"strategyId":{"type":"string"}},"required":["kind"]}}}}
```

## The ProposalItemDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ProposalItemDto":{"type":"object","properties":{"itemKey":{"type":"string"},"position":{"type":"number"},"tool":{"type":"string"},"action":{"type":"string","nullable":true},"params":{"type":"object"},"dependsOn":{"type":"array","items":{"type":"string"}},"summary":{"type":"string"}},"required":["itemKey","position","tool","action","params","dependsOn","summary"]}}}}
```

## The CreateProposalDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CreateProposalDto":{"type":"object","properties":{"turnKey":{"type":"string"},"chatId":{"type":"string"},"scope":{"$ref":"#/components/schemas/ProposalScopeDto"},"items":{"type":"array","items":{"$ref":"#/components/schemas/ProposalItemDto"}}},"required":["turnKey","scope","items"]},"ProposalScopeDto":{"type":"object","properties":{"kind":{"type":"string","enum":["strategy","client","workspace"]},"workspaceId":{"type":"string","description":"Verified against actor membership; omit to resolve server-side."},"clientId":{"type":"string"},"strategyId":{"type":"string"}},"required":["kind"]},"ProposalItemDto":{"type":"object","properties":{"itemKey":{"type":"string"},"position":{"type":"number"},"tool":{"type":"string"},"action":{"type":"string","nullable":true},"params":{"type":"object"},"dependsOn":{"type":"array","items":{"type":"string"}},"summary":{"type":"string"}},"required":["itemKey","position","tool","action","params","dependsOn","summary"]}}}}
```

## The SealProposalDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"SealProposalDto":{"type":"object","properties":{"expectedRevision":{"type":"number"}},"required":["expectedRevision"]}}}}
```

## The ApprovedProposalItemDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ApprovedProposalItemDto":{"type":"object","properties":{"itemKey":{"type":"string"},"params":{"type":"object"}},"required":["itemKey","params"]}}}}
```

## The ConfirmProposalDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ConfirmProposalDto":{"type":"object","properties":{"expectedRevision":{"type":"number"},"sealedDigest":{"type":"string"},"confirmationId":{"type":"string"},"approvedItems":{"type":"array","items":{"$ref":"#/components/schemas/ApprovedProposalItemDto"}}},"required":["expectedRevision","sealedDigest","confirmationId","approvedItems"]},"ApprovedProposalItemDto":{"type":"object","properties":{"itemKey":{"type":"string"},"params":{"type":"object"}},"required":["itemKey","params"]}}}}
```

## The StartProposalItemDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"StartProposalItemDto":{"type":"object","properties":{"claimId":{"type":"string"}},"required":["claimId"]}}}}
```

## The ProposalOutcomeDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ProposalOutcomeDto":{"type":"object","properties":{"claimId":{"type":"string"},"attemptId":{"type":"string"},"status":{"type":"string","enum":["landed","failed","unknown"]},"result":{"type":"object"},"error":{"type":"string"}},"required":["claimId","attemptId","status"]}}}}
```

## The AttachmentDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"AttachmentDto":{"type":"object","properties":{"fileName":{"type":"string","description":"Original file name"},"filePath":{"type":"string","description":"Server file path"},"fileSize":{"type":"number","description":"File size in bytes"},"mimeType":{"type":"string","description":"MIME type"},"uploadedAt":{"type":"string","description":"Upload timestamp (ISO)"}},"required":["fileName","filePath","fileSize","mimeType"]}}}}
```

## The CreateEventDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CreateEventDto":{"type":"object","properties":{"title":{"type":"string","description":"Event title"},"description":{"type":"string","description":"Event description"},"startTime":{"type":"string","description":"Event start time in ISO 8601 format (local time or with offset)"},"startTimeZone":{"type":"string","description":"Event start timezone (IANA timezone)"},"endTime":{"type":"string","description":"Event end time in ISO 8601 format (local time or with offset)"},"endTimeZone":{"type":"string","description":"Event end timezone (IANA timezone)"},"location":{"type":"string","description":"Event location"},"isAllDay":{"type":"boolean","description":"Is all-day event"},"attendees":{"description":"Attendee email addresses","type":"array","items":{"type":"string"}},"clientId":{"type":"string","description":"The client (their userId) this meeting is for. Used to save the notetaker transcript into that client's notes."},"tags":{"description":"Tags from the workspace's calendar tag vocabulary (Settings > Tags > Calendar tags).","type":"array","items":{"type":"string"}},"membersLimit":{"type":"string","description":"Maximum members allowed for the event"},"platform":{"type":"string","description":"Meeting platform. Use 'none' to create the event without video conferencing, or to strip the existing meeting link on update.","default":"google_meet"},"attachment":{"description":"File attachments metadata stored on server","type":"array","items":{"$ref":"#/components/schemas/AttachmentDto"}},"sendUpdates":{"type":"string","description":"Controls whether Google sends invitations/updates to attendees. One of 'all'|'externalOnly'|'none'"}},"required":["title","startTime","endTime"]},"AttachmentDto":{"type":"object","properties":{"fileName":{"type":"string","description":"Original file name"},"filePath":{"type":"string","description":"Server file path"},"fileSize":{"type":"number","description":"File size in bytes"},"mimeType":{"type":"string","description":"MIME type"},"uploadedAt":{"type":"string","description":"Upload timestamp (ISO)"}},"required":["fileName","filePath","fileSize","mimeType"]}}}}
```

## The DocumentDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"DocumentDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"workspaceId":{"type":"string","format":"uuid"},"parentId":{"type":"string","format":"uuid","nullable":true},"kind":{"type":"string","enum":["doc","folder"]},"title":{"type":"string"},"iconKey":{"type":"string"},"coverKey":{"type":"string","nullable":true},"templateKey":{"type":"string","nullable":true},"tags":{"type":"array","items":{"type":"string"}},"clientIds":{"type":"array","items":{"type":"string","format":"uuid"}},"starred":{"type":"boolean","description":"True when starred_by includes the caller"},"contentMd":{"type":"string","description":"Only on GET /v1/docs/:id; \"\" in lists"},"createdBy":{"type":"string","format":"uuid","nullable":true},"updatedBy":{"type":"string","format":"uuid","nullable":true},"archivedAt":{"type":"string","nullable":true},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","workspaceId","parentId","kind","title","iconKey","coverKey","templateKey","tags","clientIds","starred","contentMd","createdBy","updatedBy","archivedAt","createdAt","updatedAt"]}}}}
```

## The CreateDocumentDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CreateDocumentDto":{"type":"object","properties":{"kind":{"type":"string","enum":["doc","folder"],"default":"doc"},"title":{"type":"string","default":"Untitled","maxLength":200},"parentId":{"type":"string","description":"Folder to create in. Null or absent means the root.","nullable":true,"format":"uuid"},"iconKey":{"type":"string","description":"Handoff DocIcon key (doc, spec, meeting, ...). Never an emoji.","maxLength":32},"templateKey":{"type":"string","enum":["blank","meeting-notes","client-brief","process"],"description":"Documents only. Seeds content_md with the template body."},"contentMd":{"type":"string","description":"Documents only, and an alternative to templateKey. Markdown body seeded into content_md, which onLoadDocument parses into the Yjs doc the first time the document is opened. To add to a document that already exists, use POST /v1/docs/:id/append-body instead: once there is collab state, content_md is a read model Hocuspocus rewrites."},"clientIds":{"type":"array","items":{"type":"string","format":"uuid"}}}}}}}
```

## The UpdateDocumentDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"UpdateDocumentDto":{"type":"object","properties":{"title":{"type":"string","maxLength":200},"iconKey":{"type":"string","maxLength":32},"coverKey":{"type":"string","description":"Handoff COVER_PRESETS id. Null removes the cover.","nullable":true,"maxLength":32},"tags":{"type":"array","items":{"type":"string"}},"clientIds":{"type":"array","items":{"type":"string","format":"uuid"}},"parentId":{"type":"string","description":"Move. Must be a folder in the same workspace, or null for the root.","nullable":true,"format":"uuid"}}}}}}
```

## The AppendDocumentBodyDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"AppendDocumentBodyDto":{"type":"object","properties":{"markdown":{"type":"string","description":"Markdown added to the end of the document body."}},"required":["markdown"]}}}}
```

## The ReplaceDocumentBodyDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ReplaceDocumentBodyDto":{"type":"object","properties":{"markdown":{"type":"string","description":"Markdown that becomes the whole document body."}},"required":["markdown"]}}}}
```

## The PresignDocAttachmentDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PresignDocAttachmentDto":{"type":"object","properties":{"name":{"type":"string"},"mimeType":{"type":"string"},"sizeBytes":{"type":"number"}},"required":["name","mimeType","sizeBytes"]}}}}
```

## The ResolveDocAttachmentsDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ResolveDocAttachmentsDto":{"type":"object","properties":{"keys":{"description":"Object keys returned by POST /docs/:id/attachments/presign","type":"array","items":{"type":"string"}}},"required":["keys"]}}}}
```

## The TaskAssigneeDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"TaskAssigneeDto":{"type":"object","properties":{"kind":{"type":"string","enum":["user","agent"]},"id":{"type":"string","description":"User UUID for kind=user; BROKER_BRAIN for kind=agent. Assignment does not execute the task."}},"required":["kind","id"]}}}}
```

## The TaskResponseDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"TaskResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"title":{"type":"string"},"description":{"type":"string","nullable":true},"status":{"type":"string"},"priority":{"type":"number","nullable":true,"minimum":1,"maximum":4},"dueDate":{"type":"string","nullable":true,"format":"date-time"},"labels":{"type":"array","items":{"type":"string"}},"teamId":{"type":"string","nullable":true,"format":"uuid"},"clientId":{"type":"string","nullable":true,"format":"uuid"},"assigneeId":{"type":"string","nullable":true,"format":"uuid","deprecated":true,"description":"First human assignee, or null. Use assignees for the complete list."},"assignees":{"description":"Ordered assignment list, not execution status. Agents are not automatically run.","type":"array","items":{"$ref":"#/components/schemas/TaskAssigneeDto"}},"createdBy":{"type":"string","nullable":true,"format":"uuid"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","title","description","status","priority","dueDate","labels","teamId","clientId","assigneeId","assignees","createdBy","createdAt","updatedAt"]},"TaskAssigneeDto":{"type":"object","properties":{"kind":{"type":"string","enum":["user","agent"]},"id":{"type":"string","description":"User UUID for kind=user; BROKER_BRAIN for kind=agent. Assignment does not execute the task."}},"required":["kind","id"]}}}}
```

## The CreateTaskDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CreateTaskDto":{"type":"object","properties":{"title":{"type":"string","description":"Task title"},"description":{"type":"string","description":"Longer detail shown when the task is expanded"},"status":{"type":"string","enum":["backlog","todo","in-progress","blocked","in-review","done","cancelled","duplicate"]},"priority":{"type":"number","description":"1 low, 2 medium, 3 high, 4 urgent. Omit or send null for no priority."},"dueDate":{"type":"string"},"labels":{"description":"Tag slugs. The vocabulary is the workspace's `tags.task` setting, so this is not a fixed list.","items":{"type":"array"},"type":"array"},"assigneeId":{"type":"string","description":"Deprecated single assignee. Use assignees for multiple people or an agent. Do not send both fields."},"assignees":{"description":"Complete replacement list; [] clears all. Omit on PATCH to preserve. Up to 20 entries, at most one agent (BROKER_BRAIN).","type":"array","items":{"$ref":"#/components/schemas/TaskAssigneeDto"}},"clientId":{"type":"string","description":"Client the task belongs to. Workspace scope only (no ?userId=): omit or send null for a workspace-level task; the client path ignores it and uses ?userId=.","nullable":true}},"required":["title"]},"TaskAssigneeDto":{"type":"object","properties":{"kind":{"type":"string","enum":["user","agent"]},"id":{"type":"string","description":"User UUID for kind=user; BROKER_BRAIN for kind=agent. Assignment does not execute the task."}},"required":["kind","id"]}}}}
```

## The UpdateTaskDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"UpdateTaskDto":{"type":"object","properties":{"title":{"type":"string","description":"Task title"},"description":{"type":"string","description":"Longer detail shown when the task is expanded"},"status":{"type":"string","enum":["backlog","todo","in-progress","blocked","in-review","done","cancelled","duplicate"]},"priority":{"type":"number","description":"1 low, 2 medium, 3 high, 4 urgent. Omit or send null for no priority."},"dueDate":{"type":"string"},"labels":{"description":"Tag slugs. The vocabulary is the workspace's `tags.task` setting, so this is not a fixed list.","items":{"type":"array"},"type":"array"},"assigneeId":{"type":"string","description":"Deprecated single assignee. Use assignees for multiple people or an agent. Do not send both fields."},"assignees":{"description":"Complete replacement list; [] clears all. Omit on PATCH to preserve. Up to 20 entries, at most one agent (BROKER_BRAIN).","type":"array","items":{"$ref":"#/components/schemas/TaskAssigneeDto"}},"clientId":{"type":"string","description":"Client the task belongs to. Workspace scope only (no ?userId=): omit or send null for a workspace-level task; the client path ignores it and uses ?userId=.","nullable":true}}},"TaskAssigneeDto":{"type":"object","properties":{"kind":{"type":"string","enum":["user","agent"]},"id":{"type":"string","description":"User UUID for kind=user; BROKER_BRAIN for kind=agent. Assignment does not execute the task."}},"required":["kind","id"]}}}}
```

## The PresignTaskAttachmentDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PresignTaskAttachmentDto":{"type":"object","properties":{"name":{"type":"string"},"mimeType":{"type":"string"},"sizeBytes":{"type":"number"}},"required":["name","mimeType","sizeBytes"]}}}}
```

## The ResolveTaskAttachmentsDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"ResolveTaskAttachmentsDto":{"type":"object","properties":{"keys":{"description":"Object keys returned by POST /tasks/attachments/presign","type":"array","items":{"type":"string"}}},"required":["keys"]}}}}
```

## The AdminStrategyTimelineFanoutDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"AdminStrategyTimelineFanoutDto":{"type":"object","properties":{"companyDividends":{"type":"array","items":{"$ref":"#/components/schemas/CompanyDividendResponseDto"}},"trustDistributions":{"type":"array","items":{"$ref":"#/components/schemas/TrustDistributionResponseDto"}},"entityCashFlows":{"type":"array","items":{"$ref":"#/components/schemas/EntityCashFlowResponseDto"}},"salarySacrifices":{"description":"Both users on the strategy, merged; `userId` selects the row.","type":"array","items":{"$ref":"#/components/schemas/SalarySacrificeResponseDto"}},"personalDeductions":{"description":"Both users on the strategy, merged; `userId` selects the row.","type":"array","items":{"$ref":"#/components/schemas/PersonalDeductionResponseDto"}},"reportableFringeBenefits":{"description":"Both users on the strategy, merged; `userId` selects the row.","type":"array","items":{"$ref":"#/components/schemas/ReportableFringeBenefitResponseDto"}},"personalIncomes":{"type":"array","items":{"type":"object"},"description":"`personal_income` rows (GET /v1/timeline/personal-income) for both users, merged; `userId` selects the row."}},"required":["companyDividends","trustDistributions","entityCashFlows","salarySacrifices","personalDeductions","reportableFringeBenefits","personalIncomes"]},"CompanyDividendResponseDto":{"type":"object","properties":{"id":{"type":"string"},"strategyId":{"type":"string","description":"The control centre / strategy the event belongs to."},"entityId":{"type":"string","description":"The Company entity the dividend is claimed from."},"date":{"type":"string","format":"date","description":"The month claimed in (YYYY-MM-DD, as stored)."},"owner1Amount":{"type":"number","description":"PERSONAL!1814 (slot 3), $."},"owner2Amount":{"type":"number","description":"PERSONAL!1815 (slot 3), $."},"owner3Amount":{"type":"number","description":"PERSONAL!1816 (slot 3), $."},"owner4Amount":{"type":"number","description":"PERSONAL!1817 (slot 3), $."},"owner5Amount":{"type":"number","description":"PERSONAL!1818 (slot 3), $."},"totalAmount":{"type":"number","description":"Sum of the five owner amounts — the block Total (PERSONAL!1819 for slot 3), which `2020 Dividends declared (all cos)` sums across Company entities. Derived, not stored."},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","strategyId","entityId","date","owner1Amount","owner2Amount","owner3Amount","owner4Amount","owner5Amount","totalAmount","createdAt","updatedAt"]},"TrustDistributionResponseDto":{"type":"object","properties":{"id":{"type":"string"},"strategyId":{"type":"string","description":"The control centre / strategy the event belongs to."},"entityId":{"type":"string","description":"The Trust entity the override applies to."},"date":{"type":"string","format":"date","description":"The 30 June the event was snapped to (YYYY-06-30) — the PERSONAL column in which the percents apply."},"owner1Percent":{"type":"number","description":"PERSONAL!M1350 (slot 3), 0–100."},"owner2Percent":{"type":"number","description":"PERSONAL!M1351 (slot 3), 0–100."},"owner3Percent":{"type":"number","description":"PERSONAL!M1352 (slot 3), 0–100."},"owner4Percent":{"type":"number","description":"PERSONAL!M1353 (slot 3), 0–100."},"owner5Percent":{"type":"number","description":"PERSONAL!M1354 (slot 3), 0–100."},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","strategyId","entityId","date","owner1Percent","owner2Percent","owner3Percent","owner4Percent","owner5Percent","createdAt","updatedAt"]},"EntityCashFlowResponseDto":{"type":"object","properties":{"id":{"type":"string"},"strategyId":{"type":"string","description":"The control centre / strategy the event belongs to."},"entityId":{"type":"string","description":"The related entity the cash moves into or out of."},"entityName":{"type":"string","description":"The entity's name (`/v1/entities` `entityName`, INPUTS!199). Read-only."},"ownerSlot":{"type":"number","minimum":1,"maximum":5,"description":"Which owner (1–5) the cash comes from (CONTRIBUTION) or goes to (WITHDRAWAL) — the dropdown is the entity's `owners[]` from `/v1/entities` (INPUTS!243–247). Picks the row in the block: first related entity (workbook slot 3) contribution owner 1 → PERSONAL!1872 … owner 5 → 1876 (total 1877); withdrawal owner 1 → 1930 … owner 5 → 1934 (total 1935); +7 rows per further entity slot. The slot must be a non-empty owner on that entity (else 400)."},"ownerName":{"type":"string","description":"The owner's name for that slot (`/v1/entities` `owners[].ownerName`, INPUTS!243–247) — the label on the owner row (slot 3: 1872–1876 / 1930–1934). Read-only."},"ownerUserId":{"type":"string","nullable":true,"description":"The user this owner is when the slot is linked to a ScaleApp account (`owners[].userId`, INPUTS!262–266 Linked ID — typically owner 1 / 2 = the client / partner); `null` when the owner is another entity or unlinked. Read-only."},"date":{"type":"string","format":"date","description":"The stored day, YYYY-MM-DD — the PERSONAL month column the $ lands in."},"amount":{"type":"number","description":"$ moved. Owner-row cell of PERSONAL!1870 (CONTRIBUTION; slot 3 rows 1872–1876) or 1928 (WITHDRAWAL; slot 3 rows 1930–1934) for that month."},"direction":{"type":"string","enum":["CONTRIBUTION","WITHDRAWAL"],"description":"`CONTRIBUTION` = owner → entity, lands in the PERSONAL!1870 CASH CONTRIBUTIONS block and is summed by entity slot into the entity's `1312 + Cash contributions / injections`. `WITHDRAWAL` = entity → owner, lands in the PERSONAL!1928 CASH WITHDRAWALS block and is summed into `1313 − Cash withdrawals`."},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","strategyId","entityId","entityName","ownerSlot","ownerName","ownerUserId","date","amount","direction","createdAt","updatedAt"]},"SalarySacrificeResponseDto":{"type":"object","properties":{"date":{"type":"string","format":"date","description":"The month the value applies to, YYYY-MM-DD (any day in the month). Lands in the PERSONAL period column whose M$4..M$5 bounds contain it."},"amount":{"type":"number","description":"Salary sacrificed in that month, $ (≥ 0). Workbook PERSONAL!2044 (User 1) / 2045 (User 2) \"Salary sacrifice\" in the 2041 CONTRIBUTIONS block; flows to 2108/2109 Salary Sacrifice deduction (= −input) → 436/437 Gross Salary (Excl. Super) and 2180/2188 Reportable Super Contributions. Which row: the person the event belongs to — `?userId=` the client for User 1, the partner for User 2, like every other personal event."},"id":{"type":"string"},"strategyId":{"type":"string","description":"The control centre / strategy the event belongs to."},"userId":{"type":"string","description":"The person the event belongs to (User 1 = the client, User 2 = the partner). Decides PERSONAL!2044 vs 2045."},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["date","amount","id","strategyId","userId","createdAt","updatedAt"]},"PersonalDeductionResponseDto":{"type":"object","properties":{"date":{"type":"string","format":"date","description":"The month the value applies to, YYYY-MM-DD (any day in the month). Lands in the PERSONAL period column whose M$4..M$5 bounds contain it."},"amount":{"type":"number","description":"Personal deductions claimed in that month, $ in today's dollars (≥ 0) — the sheet indexes it. Workbook PERSONAL!406 (User 1) / 407 (User 2) \"Personal Deductions\" (405 block); 408/409 Applied = input × M160 × G160 → 694/789 Personal Deductions (−SUMIF by financial year) → 697/792 Taxable Income. Which row: the person the event belongs to — `?userId=` the client for User 1, the partner for User 2, like every other personal event."},"id":{"type":"string"},"strategyId":{"type":"string","description":"The control centre / strategy the event belongs to."},"userId":{"type":"string","description":"The person the event belongs to (User 1 = the client, User 2 = the partner). Decides PERSONAL!406 vs 407."},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["date","amount","id","strategyId","userId","createdAt","updatedAt"]},"ReportableFringeBenefitResponseDto":{"type":"object","properties":{"date":{"type":"string","format":"date","description":"The month the value applies to, YYYY-MM-DD (any day in the month). Lands in the PERSONAL period column whose M$4..M$5 bounds contain it."},"amount":{"type":"number","description":"Reportable fringe benefits for that month, $ (≥ 0). Workbook PERSONAL!2178 (User 1) / 2186 (User 2) \"Reportable Fringe Benefits\"; summed into 2182 / 2190 \"Total HECS Repayment Income\". Which row: the person the event belongs to — `?userId=` the client for User 1, the partner for User 2, like every other personal event."},"id":{"type":"string"},"strategyId":{"type":"string","description":"The control centre / strategy the event belongs to."},"userId":{"type":"string","description":"The person the event belongs to (User 1 = the client, User 2 = the partner). Decides PERSONAL!2178 vs 2186."},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["date","amount","id","strategyId","userId","createdAt","updatedAt"]}}}}
```

## The AdminStrategyEntityFanoutDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"AdminStrategyEntityFanoutDto":{"type":"object","properties":{"entities":{"description":"Active related entities in slot order (createdAt ASC). GET /v1/entities rows plus the stored fields that endpoint omits (STRATEGY_ENTITY_DUMP_COLUMNS, smsf.totalSmsfFundBalance, smsf.members[].spare1–3). entities[0] = workbook slot 3 = INPUTS col J.","type":"array","items":{"$ref":"#/components/schemas/StrategyEntityDto"}},"fy27Budget":{"description":"Same as GET /v1/fy27-budget. GOV!H273.","allOf":[{"$ref":"#/components/schemas/Fy27BudgetDto"}]},"timeline":{"$ref":"#/components/schemas/AdminStrategyTimelineFanoutDto"}},"required":["entities","timeline"]},"StrategyEntityDto":{"type":"object","properties":{"id":{"type":"string","description":"Entity id — use as {entityId} on GET/PUT/DELETE /v1/entities/{entityId}."},"strategyId":{"type":"string","description":"Strategy the entity belongs to (what ?strategyId= resolved to)."},"entityName":{"type":"string"},"entityType":{"type":"string","enum":["company","trust","smsf"]},"entityState":{"type":"string"},"entityActive":{"type":"boolean","default":true},"annualComplianceCost":{"type":"number"},"dateEntityAdded":{"type":"string","description":"Workbook INPUTS!198 Date Entity Added (base date), ISO date."},"linkedToUser1":{"type":"boolean","description":"Workbook INPUTS!201 Linked to User 1 (switch)."},"linkedToUser2":{"type":"boolean","description":"Workbook INPUTS!202 Linked to User 2 (switch)."},"trustee":{"nullable":true,"description":"Workbook INPUTS!223 Trustee / Trustee Entity (trust or SMSF). Same nesting as an owners[] row; null if none.","allOf":[{"$ref":"#/components/schemas/StrategyEntityTrusteeDto"}]},"owners":{"type":"array","items":{"$ref":"#/components/schemas/StrategyEntityOwnerDto"}},"company":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/StrategyEntityCompanyConfigDto"}]},"trust":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/StrategyEntityTrustConfigDto"}]},"smsf":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/StrategyEntitySmsfConfigDto"}]}},"required":["id","strategyId","entityName","entityType","owners"]},"StrategyEntityTrusteeDto":{"type":"object","properties":{"trusteeName":{"type":"string","description":"Workbook INPUTS!223 Trustee / Trustee Entity — individual trustee(s) or the corporate trustee, free text."},"userId":{"type":"string","nullable":true,"description":"Linked ID — individual trustee with a ScaleApp account. At most one of userId / entityId."},"entityId":{"type":"string","nullable":true,"description":"Linked ID — corporate trustee that is another entity on this strategy. At most one of userId / entityId."}},"required":["trusteeName"]},"StrategyEntityOwnerDto":{"type":"object","properties":{"slot":{"type":"number"},"ownerName":{"type":"string","description":"Workbook INPUTS!243–247 Owner 1–5. A person or another entity (e.g. a corporate trustee); free text."},"userId":{"type":"string","description":"Workbook INPUTS!262–266 Linked ID — set when the owner has a ScaleApp account. At most one of userId / entityId."},"entityId":{"type":"string","description":"Workbook INPUTS!262–266 Linked ID — set when the owner is another entity on this strategy. At most one of userId / entityId."},"ownershipPercent":{"type":"number","description":"Percent ownership, 0-100."},"relation":{"type":"string"}},"required":["slot","ownerName"]},"StrategyEntityCompanyConfigDto":{"type":"object","properties":{"openingFrankingBalance":{"type":"number"},"dividendFrankingRate":{"type":"number"},"openingRetainedEarnings":{"type":"number"}}},"StrategyEntityTrustConfigDto":{"type":"object","properties":{"trustType":{"type":"string"},"openingCarriedForwardLosses":{"type":"number"},"cashDistribution":{"description":"Workbook INPUTS!212–217 DISCRETIONARY TRUST CASH DISTRIBUTION INPUTS — only when trustType = discretionary. Percent to each owner slot 1–5; sums to 100.","allOf":[{"$ref":"#/components/schemas/StrategyEntityTrustCashDistributionDto"}]},"cgtStreamingTarget":{"type":"string","description":"Workbook INPUTS!219 CGT Streaming Target (list)."},"hasDesignatedBeneficiaryNswLandTax":{"type":"boolean","description":"Workbook INPUTS!220 Has Designated Beneficiary (NSW land tax) (switch)."},"foreignBeneficiaryExcluded":{"type":"boolean","description":"Workbook INPUTS!221 Foreign Beneficiary excluded (switch)."},"nonPropertyIncome":{"type":"number","description":"Workbook INPUTS!222 Non-Property Income ($ p.a.)."}}},"StrategyEntityTrustCashDistributionDto":{"type":"object","properties":{"owner1Percent":{"type":"number","description":"Workbook INPUTS!213 Distribution % to owner 1 (owners[].slot = 1), 0–100."},"owner2Percent":{"type":"number","description":"Workbook INPUTS!214 Distribution % to owner 2 (owners[].slot = 2), 0–100."},"owner3Percent":{"type":"number","description":"Workbook INPUTS!215 Distribution % to owner 3 (owners[].slot = 3), 0–100."},"owner4Percent":{"type":"number","description":"Workbook INPUTS!216 Distribution % to owner 4 (owners[].slot = 4), 0–100."},"owner5Percent":{"type":"number","description":"Workbook INPUTS!217 Distribution % to owner 5 (owners[].slot = 5), 0–100."}}},"StrategyEntitySmsfConfigDto":{"type":"object","properties":{"openingFundBalance":{"type":"number","description":"Workbook INPUTS!225 Opening Fund Balance ($)."},"members":{"description":"Workbook INPUTS!224–240 — Member 1 / Member 2, one row per member (slot 1–2).","type":"array","items":{"$ref":"#/components/schemas/StrategyEntitySmsfMemberDto"}}}},"StrategyEntitySmsfMemberDto":{"type":"object","properties":{"slot":{"type":"number","description":"Workbook INPUTS!224 (Member 1) / INPUTS!233 (Member 2)."},"memberName":{"type":"string","description":"Member name, free text (display; mirrors owners[].ownerName)."},"userId":{"type":"string","description":"Workbook INPUTS!226 / 234 Member — User Reference. The member's ScaleApp user id."},"dateOfBirth":{"type":"string","description":"Workbook INPUTS!227 / 235 Member — Date of Birth, ISO date. Drives pension phase in the model (no separate phase input)."},"accountBalance":{"type":"number","description":"Workbook INPUTS!229 / 237 Member — Account Balance ($)."},"annualConcessionalContribution":{"type":"number","description":"Workbook INPUTS!230 / 238 Member — Concessional Contribution ($ p.a.)."}},"required":["slot","memberName"]},"Fy27BudgetDto":{"type":"object","properties":{"applyFy27TaxChanges":{"type":"boolean","description":"Workbook GOV!H273 CGT New Regime Master Switch — true = FY2027 budget tax rules apply to this strategy, false = pre-FY28 rules. Default true (sheet value 1). Stored per strategy; the model reads it once GOV!H273 is wired through the budget formulas."},"strategyId":{"type":"string"}},"required":["applyFy27TaxChanges","strategyId"]},"AdminStrategyTimelineFanoutDto":{"type":"object","properties":{"companyDividends":{"type":"array","items":{"$ref":"#/components/schemas/CompanyDividendResponseDto"}},"trustDistributions":{"type":"array","items":{"$ref":"#/components/schemas/TrustDistributionResponseDto"}},"entityCashFlows":{"type":"array","items":{"$ref":"#/components/schemas/EntityCashFlowResponseDto"}},"salarySacrifices":{"description":"Both users on the strategy, merged; `userId` selects the row.","type":"array","items":{"$ref":"#/components/schemas/SalarySacrificeResponseDto"}},"personalDeductions":{"description":"Both users on the strategy, merged; `userId` selects the row.","type":"array","items":{"$ref":"#/components/schemas/PersonalDeductionResponseDto"}},"reportableFringeBenefits":{"description":"Both users on the strategy, merged; `userId` selects the row.","type":"array","items":{"$ref":"#/components/schemas/ReportableFringeBenefitResponseDto"}},"personalIncomes":{"type":"array","items":{"type":"object"},"description":"`personal_income` rows (GET /v1/timeline/personal-income) for both users, merged; `userId` selects the row."}},"required":["companyDividends","trustDistributions","entityCashFlows","salarySacrifices","personalDeductions","reportableFringeBenefits","personalIncomes"]},"CompanyDividendResponseDto":{"type":"object","properties":{"id":{"type":"string"},"strategyId":{"type":"string","description":"The control centre / strategy the event belongs to."},"entityId":{"type":"string","description":"The Company entity the dividend is claimed from."},"date":{"type":"string","format":"date","description":"The month claimed in (YYYY-MM-DD, as stored)."},"owner1Amount":{"type":"number","description":"PERSONAL!1814 (slot 3), $."},"owner2Amount":{"type":"number","description":"PERSONAL!1815 (slot 3), $."},"owner3Amount":{"type":"number","description":"PERSONAL!1816 (slot 3), $."},"owner4Amount":{"type":"number","description":"PERSONAL!1817 (slot 3), $."},"owner5Amount":{"type":"number","description":"PERSONAL!1818 (slot 3), $."},"totalAmount":{"type":"number","description":"Sum of the five owner amounts — the block Total (PERSONAL!1819 for slot 3), which `2020 Dividends declared (all cos)` sums across Company entities. Derived, not stored."},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","strategyId","entityId","date","owner1Amount","owner2Amount","owner3Amount","owner4Amount","owner5Amount","totalAmount","createdAt","updatedAt"]},"TrustDistributionResponseDto":{"type":"object","properties":{"id":{"type":"string"},"strategyId":{"type":"string","description":"The control centre / strategy the event belongs to."},"entityId":{"type":"string","description":"The Trust entity the override applies to."},"date":{"type":"string","format":"date","description":"The 30 June the event was snapped to (YYYY-06-30) — the PERSONAL column in which the percents apply."},"owner1Percent":{"type":"number","description":"PERSONAL!M1350 (slot 3), 0–100."},"owner2Percent":{"type":"number","description":"PERSONAL!M1351 (slot 3), 0–100."},"owner3Percent":{"type":"number","description":"PERSONAL!M1352 (slot 3), 0–100."},"owner4Percent":{"type":"number","description":"PERSONAL!M1353 (slot 3), 0–100."},"owner5Percent":{"type":"number","description":"PERSONAL!M1354 (slot 3), 0–100."},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","strategyId","entityId","date","owner1Percent","owner2Percent","owner3Percent","owner4Percent","owner5Percent","createdAt","updatedAt"]},"EntityCashFlowResponseDto":{"type":"object","properties":{"id":{"type":"string"},"strategyId":{"type":"string","description":"The control centre / strategy the event belongs to."},"entityId":{"type":"string","description":"The related entity the cash moves into or out of."},"entityName":{"type":"string","description":"The entity's name (`/v1/entities` `entityName`, INPUTS!199). Read-only."},"ownerSlot":{"type":"number","minimum":1,"maximum":5,"description":"Which owner (1–5) the cash comes from (CONTRIBUTION) or goes to (WITHDRAWAL) — the dropdown is the entity's `owners[]` from `/v1/entities` (INPUTS!243–247). Picks the row in the block: first related entity (workbook slot 3) contribution owner 1 → PERSONAL!1872 … owner 5 → 1876 (total 1877); withdrawal owner 1 → 1930 … owner 5 → 1934 (total 1935); +7 rows per further entity slot. The slot must be a non-empty owner on that entity (else 400)."},"ownerName":{"type":"string","description":"The owner's name for that slot (`/v1/entities` `owners[].ownerName`, INPUTS!243–247) — the label on the owner row (slot 3: 1872–1876 / 1930–1934). Read-only."},"ownerUserId":{"type":"string","nullable":true,"description":"The user this owner is when the slot is linked to a ScaleApp account (`owners[].userId`, INPUTS!262–266 Linked ID — typically owner 1 / 2 = the client / partner); `null` when the owner is another entity or unlinked. Read-only."},"date":{"type":"string","format":"date","description":"The stored day, YYYY-MM-DD — the PERSONAL month column the $ lands in."},"amount":{"type":"number","description":"$ moved. Owner-row cell of PERSONAL!1870 (CONTRIBUTION; slot 3 rows 1872–1876) or 1928 (WITHDRAWAL; slot 3 rows 1930–1934) for that month."},"direction":{"type":"string","enum":["CONTRIBUTION","WITHDRAWAL"],"description":"`CONTRIBUTION` = owner → entity, lands in the PERSONAL!1870 CASH CONTRIBUTIONS block and is summed by entity slot into the entity's `1312 + Cash contributions / injections`. `WITHDRAWAL` = entity → owner, lands in the PERSONAL!1928 CASH WITHDRAWALS block and is summed into `1313 − Cash withdrawals`."},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","strategyId","entityId","entityName","ownerSlot","ownerName","ownerUserId","date","amount","direction","createdAt","updatedAt"]},"SalarySacrificeResponseDto":{"type":"object","properties":{"date":{"type":"string","format":"date","description":"The month the value applies to, YYYY-MM-DD (any day in the month). Lands in the PERSONAL period column whose M$4..M$5 bounds contain it."},"amount":{"type":"number","description":"Salary sacrificed in that month, $ (≥ 0). Workbook PERSONAL!2044 (User 1) / 2045 (User 2) \"Salary sacrifice\" in the 2041 CONTRIBUTIONS block; flows to 2108/2109 Salary Sacrifice deduction (= −input) → 436/437 Gross Salary (Excl. Super) and 2180/2188 Reportable Super Contributions. Which row: the person the event belongs to — `?userId=` the client for User 1, the partner for User 2, like every other personal event."},"id":{"type":"string"},"strategyId":{"type":"string","description":"The control centre / strategy the event belongs to."},"userId":{"type":"string","description":"The person the event belongs to (User 1 = the client, User 2 = the partner). Decides PERSONAL!2044 vs 2045."},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["date","amount","id","strategyId","userId","createdAt","updatedAt"]},"PersonalDeductionResponseDto":{"type":"object","properties":{"date":{"type":"string","format":"date","description":"The month the value applies to, YYYY-MM-DD (any day in the month). Lands in the PERSONAL period column whose M$4..M$5 bounds contain it."},"amount":{"type":"number","description":"Personal deductions claimed in that month, $ in today's dollars (≥ 0) — the sheet indexes it. Workbook PERSONAL!406 (User 1) / 407 (User 2) \"Personal Deductions\" (405 block); 408/409 Applied = input × M160 × G160 → 694/789 Personal Deductions (−SUMIF by financial year) → 697/792 Taxable Income. Which row: the person the event belongs to — `?userId=` the client for User 1, the partner for User 2, like every other personal event."},"id":{"type":"string"},"strategyId":{"type":"string","description":"The control centre / strategy the event belongs to."},"userId":{"type":"string","description":"The person the event belongs to (User 1 = the client, User 2 = the partner). Decides PERSONAL!406 vs 407."},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["date","amount","id","strategyId","userId","createdAt","updatedAt"]},"ReportableFringeBenefitResponseDto":{"type":"object","properties":{"date":{"type":"string","format":"date","description":"The month the value applies to, YYYY-MM-DD (any day in the month). Lands in the PERSONAL period column whose M$4..M$5 bounds contain it."},"amount":{"type":"number","description":"Reportable fringe benefits for that month, $ (≥ 0). Workbook PERSONAL!2178 (User 1) / 2186 (User 2) \"Reportable Fringe Benefits\"; summed into 2182 / 2190 \"Total HECS Repayment Income\". Which row: the person the event belongs to — `?userId=` the client for User 1, the partner for User 2, like every other personal event."},"id":{"type":"string"},"strategyId":{"type":"string","description":"The control centre / strategy the event belongs to."},"userId":{"type":"string","description":"The person the event belongs to (User 1 = the client, User 2 = the partner). Decides PERSONAL!2178 vs 2186."},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["date","amount","id","strategyId","userId","createdAt","updatedAt"]}}}}
```

## The CreateFeatureFeedbackDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CreateFeatureFeedbackDto":{"type":"object","properties":{"message":{"type":"string","description":"What the user wants the feature to do"},"source":{"type":"string","description":"Where in the app the feedback was submitted from","enum":["broker-brain-coming-soon"]},"featureName":{"type":"string","description":"The unbuilt feature the modal was opened for"}},"required":["message","source"]}}}}
```

## The CreateArtefactDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CreateArtefactDto":{"type":"object","properties":{}}}}}
```

## The CreateArtefactDraftDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CreateArtefactDraftDto":{"type":"object","properties":{}}}}}
```

## The UpdateArtefactDraftDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"UpdateArtefactDraftDto":{"type":"object","properties":{}}}}}
```

## The PromoteArtefactDraftDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"PromoteArtefactDraftDto":{"type":"object","properties":{}}}}}
```

## The CompleteArtefactDto object

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"components":{"schemas":{"CompleteArtefactDto":{"type":"object","properties":{}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.scaleconnect.com.au/api/rest-api/scaleapp-rest-api/models.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
