> 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/connect.md).

# Connect

Broker dashboard and client management

## Get broker dashboard total for all clients

> Retrieves broker dashboard sections for clients of the broker

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"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"]}}},"paths":{"/v1/connect/all-broker-dashboard":{"get":{"description":"Retrieves broker dashboard sections for clients of the broker","operationId":"ConnectController_brokerDashboardTotal_v1","parameters":[{"name":"userId","required":false,"in":"query","description":"User ID","schema":{"type":"string"}},{"name":"date","required":false,"in":"query","description":"Optional date","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully retrieved aggregated broker dashboard for all clients","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrokerDashboardResponseDto"}}}}},"summary":"Get broker dashboard total for all clients","tags":["Connect"]}}}}
```

## Get broker dashboard for a single client

> Retrieves broker dashboard sections for a single client

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"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"]}}},"paths":{"/v1/connect/client-broker-dashboard":{"get":{"description":"Retrieves broker dashboard sections for a single client","operationId":"ConnectController_brokerDashboard_v1","parameters":[{"name":"userId","required":true,"in":"query","description":"User ID","schema":{"type":"string"}},{"name":"date","required":false,"in":"query","description":"Optional date","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully retrieved broker dashboard for a single client","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrokerDashboardResponseDto"}}}}},"summary":"Get broker dashboard for a single client","tags":["Connect"]}}}}
```

## Get broker dashboard metrics

> Retrieves broker dashboard metrics including clients, loans, commissions, and timeline widgets

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"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"]}}},"paths":{"/v1/connect/broker-dashboard/metrics":{"get":{"description":"Retrieves broker dashboard metrics including clients, loans, commissions, and timeline widgets","operationId":"ConnectController_brokerDashboardMetrics_v1","parameters":[{"name":"date","required":false,"in":"query","description":"Optional date","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully retrieved broker dashboard metrics","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrokerDashboardMetricsDto"}}}}},"summary":"Get broker dashboard metrics","tags":["Connect"]}}}}
```

## Get broker dashboard deal flow

> Retrieves broker dashboard deal flow metrics including new properties and commissions

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"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"]}}},"paths":{"/v1/connect/broker-dashboard/deal-flow":{"get":{"description":"Retrieves broker dashboard deal flow metrics including new properties and commissions","operationId":"ConnectController_brokerDashboardDealFlow_v1","parameters":[{"name":"strategyId","required":false,"in":"query","description":"Optional strategy ID","schema":{"type":"string"}},{"name":"date","required":false,"in":"query","description":"Optional date","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully retrieved broker dashboard deal flow","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrokerDashboardDealFlowDto"}}}}},"summary":"Get broker dashboard deal flow","tags":["Connect"]}}}}
```

## Get broker dashboard operations

> Retrieves broker dashboard operations metrics including reviews, meetings, and conversion rates

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"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"]}}},"paths":{"/v1/connect/broker-dashboard/ops":{"get":{"description":"Retrieves broker dashboard operations metrics including reviews, meetings, and conversion rates","operationId":"ConnectController_brokerDashboardOps_v1","parameters":[{"name":"strategyId","required":true,"in":"query","schema":{"type":"string"}},{"name":"date","required":false,"in":"query","description":"Optional date","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully retrieved broker dashboard operations","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrokerDashboardOpsDto"}}}}},"summary":"Get broker dashboard operations","tags":["Connect"]}}}}
```

## Get broker dashboard client portfolios

> Retrieves broker dashboard client portfolio metrics including portfolio value, debt, and equity

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"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"]}}},"paths":{"/v1/connect/broker-dashboard/client-portfolios":{"get":{"description":"Retrieves broker dashboard client portfolio metrics including portfolio value, debt, and equity","operationId":"ConnectController_brokerDashboardClientPortfolios_v1","parameters":[{"name":"strategyId","required":true,"in":"query","schema":{"type":"string"}},{"name":"date","required":false,"in":"query","description":"Optional date","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully retrieved broker dashboard client portfolios","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrokerDashboardClientPortfoliosDto"}}}}},"summary":"Get broker dashboard client portfolios","tags":["Connect"]}}}}
```

## Get broker dashboard pipeline

> Retrieves broker dashboard pipeline metrics including deposit savers, pre-approvals, and active clients

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"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"]}}},"paths":{"/v1/connect/broker-dashboard/pipeline":{"get":{"description":"Retrieves broker dashboard pipeline metrics including deposit savers, pre-approvals, and active clients","operationId":"ConnectController_brokerDashboardPipeline_v1","parameters":[{"name":"date","required":false,"in":"query","description":"Optional date","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully retrieved broker dashboard pipeline","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrokerDashboardPipelineDto"}}}}},"summary":"Get broker dashboard pipeline","tags":["Connect"]}}}}
```

## Get broker dashboard lifetime value

> Retrieves broker dashboard lifetime value metrics including LTV for savers and active clients

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"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"]}}},"paths":{"/v1/connect/broker-dashboard/lifetime-value":{"get":{"description":"Retrieves broker dashboard lifetime value metrics including LTV for savers and active clients","operationId":"ConnectController_brokerDashboardLifetimeValue_v1","parameters":[{"name":"date","required":false,"in":"query","description":"Optional date","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully retrieved broker dashboard lifetime value","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrokerDashboardLifetimeValueDto"}}}}},"summary":"Get broker dashboard lifetime value","tags":["Connect"]}}}}
```

## Get broker dashboard loan composition

> Retrieves broker dashboard loan composition metrics by state, client type, lender, deal terms, property use, and property type

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"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"]}}},"paths":{"/v1/connect/broker-dashboard/loan-composition":{"get":{"description":"Retrieves broker dashboard loan composition metrics by state, client type, lender, deal terms, property use, and property type","operationId":"ConnectController_brokerDashboardLoanComposition_v1","parameters":[{"name":"date","required":false,"in":"query","description":"Optional date","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully retrieved broker dashboard loan composition","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrokerDashboardLoanCompositionDto"}}}}},"summary":"Get broker dashboard loan composition","tags":["Connect"]}}}}
```

## Get broker dashboard loan size

> Retrieves broker dashboard loan size metrics by state, client type, lender, deal terms, property use, and property type

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"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"]}}},"paths":{"/v1/connect/broker-dashboard/loan-size":{"get":{"description":"Retrieves broker dashboard loan size metrics by state, client type, lender, deal terms, property use, and property type","operationId":"ConnectController_brokerDashboardLoanSize_v1","parameters":[{"name":"date","required":false,"in":"query","description":"Optional date","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully retrieved broker dashboard loan size","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrokerDashboardLoanSizeDto"}}}}},"summary":"Get broker dashboard loan size","tags":["Connect"]}}}}
```

## Monthly commission earned, from uploaded statements

> Commission per month keyed to the period it was EARNED (the statement period), not the month the aggregator paid it. Months with no statement return hasStatement=false and null figures rather than zeros, so the chart can render 'no data' instead of implying nil earnings.

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/connect/broker-dashboard/commission-series":{"get":{"description":"Commission per month keyed to the period it was EARNED (the statement period), not the month the aggregator paid it. Months with no statement return hasStatement=false and null figures rather than zeros, so the chart can render 'no data' instead of implying nil earnings.","operationId":"ConnectController_brokerDashboardCommissionSeries_v1","parameters":[{"name":"from","required":false,"in":"query","description":"YYYY-MM (default: start of current FY)","schema":{"type":"string"}},{"name":"to","required":false,"in":"query","description":"YYYY-MM (default: current month)","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"summary":"Monthly commission earned, from uploaded statements","tags":["Connect"]}}}}
```

## Financial-year commission actuals

> FY-to-date actuals plus a trail run-rate. Upfront is deliberately not annualised — it is lumpy, so multiplying one month by 12 is meaningless.

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/connect/broker-dashboard/commission-fy":{"get":{"description":"FY-to-date actuals plus a trail run-rate. Upfront is deliberately not annualised — it is lumpy, so multiplying one month by 12 is meaningless.","operationId":"ConnectController_brokerDashboardCommissionFy_v1","parameters":[{"name":"date","required":false,"in":"query","description":"Optional as-at date","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"summary":"Financial-year commission actuals","tags":["Connect"]}}}}
```

## Loans that look discharged

> Loans that paid trail in an earlier statement but are absent from the latest one (SCC-32.4 §5). Requires at least two statements, which is why FYTD upload matters.

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/connect/broker-dashboard/discharge-candidates":{"get":{"description":"Loans that paid trail in an earlier statement but are absent from the latest one (SCC-32.4 §5). Requires at least two statements, which is why FYTD upload matters.","operationId":"ConnectController_brokerDashboardDischargeCandidates_v1","parameters":[{"name":"date","required":false,"in":"query","description":"Optional as-at date","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"summary":"Loans that look discharged","tags":["Connect"]}}}}
```

## Trail-lending-fund valuation of the loan book

> Values the book by capitalising its annualised trail (ACTUALS rows 215-228): annualised trail, implied trail rate, assessed working-capital value and assessed book value, with the multiples used. This is NOT the same metric as /broker-dashboard/lifetime-value, which is a per-client model the reference workbook marks 'not derivable'. Rows the workbook leaves as undefined commercial terms are reported under \`unavailable\` rather than estimated.

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/connect/broker-dashboard/trail-fund":{"get":{"description":"Values the book by capitalising its annualised trail (ACTUALS rows 215-228): annualised trail, implied trail rate, assessed working-capital value and assessed book value, with the multiples used. This is NOT the same metric as /broker-dashboard/lifetime-value, which is a per-client model the reference workbook marks 'not derivable'. Rows the workbook leaves as undefined commercial terms are reported under `unavailable` rather than estimated.","operationId":"ConnectController_brokerDashboardTrailFund_v1","parameters":[{"name":"date","required":false,"in":"query","description":"Optional as-at date","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"summary":"Trail-lending-fund valuation of the loan book","tags":["Connect"]}}}}
```

## Get all goals

> Retrieves all goals data

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"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}}}}},"paths":{"/v1/connect/goal-all":{"get":{"description":"Retrieves all goals data","operationId":"ConnectController_goalAll_v1","parameters":[{"name":"strategyId","required":false,"in":"query","description":"Optional strategy ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully retrieved all goals data","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ConnectGoalDto"}}}}}},"summary":"Get all goals","tags":["Connect"]}}}}
```

## Get goal data

> Retrieves goal data

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"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}}}}},"paths":{"/v1/connect/goal/{id}":{"get":{"description":"Retrieves goal data","operationId":"ConnectController_goal_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully retrieved goal data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectGoalDto"}}}}},"summary":"Get goal data","tags":["Connect"]}}}}
```

## Update goal

> Updates a goal

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"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}}}}},"paths":{"/v1/connect/goal/{id}":{"put":{"description":"Updates a goal","operationId":"ConnectController_updateGoal_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"strategyId","required":true,"in":"query","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectGoalDto"}}}},"responses":{"200":{"description":"Successfully updated goal","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectGoalDto"}}}}},"summary":"Update goal","tags":["Connect"]}}}}
```

## Delete goal

> Deletes a goal

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"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}}}}},"paths":{"/v1/connect/goal/{id}":{"delete":{"description":"Deletes a goal","operationId":"ConnectController_deleteGoal_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully deleted goal","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectGoalDto"}}}}},"summary":"Delete goal","tags":["Connect"]}}}}
```

## Create goal

> Creates a goal

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"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}}}}},"paths":{"/v1/connect/goal":{"post":{"description":"Creates a goal","operationId":"ConnectController_createGoal_v1","parameters":[{"name":"strategyId","required":false,"in":"query","description":"Optional strategy ID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectGoalDto"}}}},"responses":{"200":{"description":"Successfully created goal","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectGoalDto"}}}}},"summary":"Create goal","tags":["Connect"]}}}}
```

## GET /v1/connect/goal/{id}/progress

>

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/connect/goal/{id}/progress":{"get":{"operationId":"ConnectController_selectGoalProgress_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"date","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Connect"]}}}}
```

## Get all meeting triggers

> Retrieves all meeting triggers data

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"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}}}}},"paths":{"/v1/connect/meeting-trigger-all":{"get":{"description":"Retrieves all meeting triggers data","operationId":"ConnectController_selectMeetingTriggerAll_v1","parameters":[{"name":"strategyId","required":false,"in":"query","description":"Optional strategy ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully retrieved all meeting triggers data","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MeetingTriggerDto"}}}}}},"summary":"Get all meeting triggers","tags":["Connect"]}}}}
```

## Get meeting trigger

> Retrieves meeting trigger

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"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}}}}},"paths":{"/v1/connect/meeting-trigger/{id}":{"get":{"description":"Retrieves meeting trigger","operationId":"ConnectController_selectMeetingTrigger_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully retrieved meeting trigger","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeetingTriggerDto"}}}}},"summary":"Get meeting trigger","tags":["Connect"]}}}}
```

## Update meeting trigger

> Updates a meeting trigger

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"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}}}}},"paths":{"/v1/connect/meeting-trigger/{id}":{"put":{"description":"Updates a meeting trigger","operationId":"ConnectController_updateMeetingTrigger_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeetingTriggerDto"}}}},"responses":{"200":{"description":"Successfully updated meeting trigger","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeetingTriggerDto"}}}}},"summary":"Update meeting trigger","tags":["Connect"]}}}}
```

## Delete meeting trigger

> Deletes a meeting trigger

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"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}}}}},"paths":{"/v1/connect/meeting-trigger/{id}":{"delete":{"description":"Deletes a meeting trigger","operationId":"ConnectController_deleteMeetingTrigger_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully deleted meeting trigger","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeetingTriggerDto"}}}}},"summary":"Delete meeting trigger","tags":["Connect"]}}}}
```

## Create meeting trigger

> Creates a meeting trigger

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"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}}}}},"paths":{"/v1/connect/meeting-trigger":{"post":{"description":"Creates a meeting trigger","operationId":"ConnectController_createMeetingTrigger_v1","parameters":[{"name":"strategyId","required":false,"in":"query","description":"Optional strategy ID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeetingTriggerDto"}}}},"responses":{"200":{"description":"Successfully created meeting trigger","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeetingTriggerDto"}}}}},"summary":"Create meeting trigger","tags":["Connect"]}}}}
```

## Get loan details

> Retrieves loan details

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"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"]}}},"paths":{"/v1/connect/loan-details":{"get":{"description":"Retrieves loan details","operationId":"ConnectController_selectLoanDetails_v1","parameters":[{"name":"propertyId","required":true,"in":"query","schema":{"type":"string"}},{"name":"date","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully retrieved loan details","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ConnectLoanDto"}}}}}},"summary":"Get loan details","tags":["Connect"]}}}}
```

## Get all loan variable rates

> Retrieves all loan variable rates for a property

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/connect/loan-details-variable-rates":{"get":{"description":"Retrieves all loan variable rates for a property","operationId":"ConnectController_getLoanVariableRates_v1","parameters":[{"name":"propertyId","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully retrieved loan variable rates"}},"summary":"Get all loan variable rates","tags":["Connect"]}}}}
```

## Add loan variable rates

> Adds loan variable rates to a property

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/connect/loan-details-variable-rates":{"post":{"description":"Adds loan variable rates to a property","operationId":"ConnectController_addLoanVariableRate_v1","parameters":[{"name":"propertyId","required":true,"in":"query","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"type":"string"}}}}},"responses":{"201":{"description":"Successfully added loan variable rates"}},"summary":"Add loan variable rates","tags":["Connect"]}}}}
```

## GET /v1/connect/property/{propertyId}/strategy-scope

> Verify property ownership and exact strategy before proposal application

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/connect/property/{propertyId}/strategy-scope":{"get":{"operationId":"ConnectController_getPropertyStrategyScope_v1","parameters":[{"name":"propertyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"strategyId","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"summary":"Verify property ownership and exact strategy before proposal application","tags":["Connect"]}}}}
```

## PUT /v1/connect/property/{propertyId}/loan-variable-rates

> Apply approved per-loan rates without duplicating loan/date rows

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/connect/property/{propertyId}/loan-variable-rates":{"put":{"operationId":"ConnectController_setLoanVariableRates_v1","parameters":[{"name":"propertyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"strategyId","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"summary":"Apply approved per-loan rates without duplicating loan/date rows","tags":["Connect"]}}}}
```

## Get loan variable rates by date

> Retrieves all loan variable rates for a property on a specific date

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/connect/loan-details-variable-rates/by-date":{"get":{"description":"Retrieves all loan variable rates for a property on a specific date","operationId":"ConnectController_getLoanVariableRatesByDate_v1","parameters":[{"name":"propertyId","required":true,"in":"query","schema":{"type":"string"}},{"name":"date","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully retrieved loan variable rates for date"}},"summary":"Get loan variable rates by date","tags":["Connect"]}}}}
```

## Get a loan variable rate

> Retrieves a single loan variable rate by ID

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/connect/loan-details-variable-rates/{id}":{"get":{"description":"Retrieves a single loan variable rate by ID","operationId":"ConnectController_getLoanVariableRate_v1","parameters":[{"name":"propertyId","required":true,"in":"query","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully retrieved loan variable rate"}},"summary":"Get a loan variable rate","tags":["Connect"]}}}}
```

## Update a loan variable rate

> Updates a loan variable rate by ID

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/connect/loan-details-variable-rates/{id}":{"put":{"description":"Updates a loan variable rate by ID","operationId":"ConnectController_updateLoanVariableRate_v1","parameters":[{"name":"propertyId","required":true,"in":"query","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully updated loan variable rate"}},"summary":"Update a loan variable rate","tags":["Connect"]}}}}
```

## Delete a loan variable rate

> Deletes a loan variable rate by ID

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/connect/loan-details-variable-rates/{id}":{"delete":{"description":"Deletes a loan variable rate by ID","operationId":"ConnectController_deleteLoanVariableRate_v1","parameters":[{"name":"propertyId","required":true,"in":"query","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully deleted loan variable rate"}},"summary":"Delete a loan variable rate","tags":["Connect"]}}}}
```

## Reset cache

> Resets the cache for a user

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/connect/reset-cache":{"post":{"description":"Resets the cache for a user","operationId":"ConnectController_resetCache_v1","parameters":[{"name":"userId","required":true,"in":"query","description":"User ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully reset cache"}},"summary":"Reset cache","tags":["Connect"]}}}}
```

## Reset cache

> Resets the cache for all clients of a broker

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/connect/reset-broker-cache":{"post":{"description":"Resets the cache for all clients of a broker","operationId":"ConnectController_resetBrokerCache_v1","parameters":[{"name":"userId","required":true,"in":"query","description":"Broker User ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully reset cache"}},"summary":"Reset cache","tags":["Connect"]}}}}
```

## All cache

> Returns all cachable/long running functions for the user

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/connect/all-cache":{"get":{"description":"Returns all cachable/long running functions for the user","operationId":"ConnectController_getAllCache_v1","parameters":[{"name":"userId","required":true,"in":"query","description":"User ID","schema":{"type":"string"}},{"name":"date","required":false,"in":"query","description":"Optional date to supplied to all cache functions. If not provided, the current date will be used.","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully returned all cache values"}},"summary":"All cache","tags":["Connect"]}}}}
```

## All broker cache

> Returns all cachable/long running functions for the broker and all the users linked to the broker

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/connect/all-broker-cache":{"get":{"description":"Returns all cachable/long running functions for the broker and all the users linked to the broker","operationId":"ConnectController_getAllBrokerCache_v1","parameters":[{"name":"userId","required":true,"in":"query","description":"Optional user ID","schema":{"type":"string"}},{"name":"date","required":false,"in":"query","description":"Date to supplied to all cache functions","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully returned all broker cache values"}},"summary":"All broker cache","tags":["Connect"]}}}}
```

## All broker re-cache status

> Returns how many of a broker's clients have finished re-caching and how many are still being re-cached, based on the latest cache invalidation (COMMAND/RESET) compared to the latest all-cache QUERY for each client

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/connect/all-broker-status":{"get":{"description":"Returns how many of a broker's clients have finished re-caching and how many are still being re-cached, based on the latest cache invalidation (COMMAND/RESET) compared to the latest all-cache QUERY for each client","operationId":"ConnectController_getAllBrokerStatus_v1","parameters":[{"name":"userId","required":false,"in":"query","description":"Broker User ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully returned broker re-cache status"}},"summary":"All broker re-cache status","tags":["Connect"]}}}}
```

## All admin cache

> Returns all cachable/long running functions for all users

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/connect/all-admin-cache":{"get":{"description":"Returns all cachable/long running functions for all users","operationId":"ConnectController_getAllAdminCache_v1","parameters":[{"name":"date","required":false,"in":"query","description":"Date to supplied to all cache functions","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully returned all admin cache values"}},"summary":"All admin cache","tags":["Connect"]}}}}
```

## All admin check

> Checks user records to ensure they parse correctly and are valid

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Connect","description":"Broker dashboard and client management"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/connect/all-admin-check":{"get":{"description":"Checks user records to ensure they parse correctly and are valid","operationId":"ConnectController_getAllAdminCheck_v1","parameters":[],"responses":{"200":{"description":"Successfully returned all checked users"}},"summary":"All admin check","tags":["Connect"]}}}}
```


---

# 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/connect.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.
