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

# User Profile

User onboarding, profile, and personal details

## GET /v1/onboarding

>

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/onboarding":{"get":{"operationId":"OnboardingController_getOnboardingData_v1","parameters":[],"responses":{"200":{"description":""}},"tags":["User Profile"]}}}}
```

## Onboard a user

> Creates a new user with onboarding data. For admin/broker users: Can be called without userId query parameter to create a new user without linking to an auth account. For regular users: Creates or updates their own onboarding data.

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"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"]}}},"paths":{"/v1/onboarding":{"post":{"description":"Creates a new user with onboarding data. For admin/broker users: Can be called without userId query parameter to create a new user without linking to an auth account. For regular users: Creates or updates their own onboarding data.","operationId":"OnboardingController_onboardUser_v1","parameters":[{"name":"inviteId","required":false,"in":"query","description":"An invite id sent to the user. Optional","schema":{"type":"string"}},{"name":"strategy","required":false,"in":"query","description":"Optional strategy (control centre) ID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OnboardingDto"}}}},"responses":{"201":{"description":""}},"summary":"Onboard a user","tags":["User Profile"]}}}}
```

## Update onboarding data

> Updates onboarding data for a user. For admin/broker users: Can specify a userId query parameter to update a specific user's data. For regular users: Updates their own onboarding data.

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"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"]}}},"paths":{"/v1/onboarding":{"put":{"description":"Updates onboarding data for a user. For admin/broker users: Can specify a userId query parameter to update a specific user's data. For regular users: Updates their own onboarding data.","operationId":"OnboardingController_updateOnboardingData_v1","parameters":[{"name":"userId","required":false,"in":"query","description":"The ID of the user to update. Optional for admins/brokers. If not provided, updates the authenticated user.","schema":{"type":"string"}},{"name":"strategyId","required":true,"in":"query","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOnboardingDto"}}}},"responses":{"200":{"description":""}},"summary":"Update onboarding data","tags":["User Profile"]}}}}
```

## DELETE /v1/onboarding

>

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/onboarding":{"delete":{"operationId":"OnboardingController_deleteOnboardingData_v1","parameters":[],"responses":{"200":{"description":""}},"tags":["User Profile"]}}}}
```

## Recreate a client from a strategy dump

> Broker/admin only. Takes the JSON returned by GET /v1/admin/strategy (users, propertyInputs, entities, fy27Budget, timeline.\*, connectGoals) and creates a new client with the same data under new ids: users, strategy, properties with assumptions/actuals/expenses/address, entities with owners/trustee/SMSF members, and every timeline event. A broker caller is linked to the new users as for POST /v1/onboarding. Returns the new strategy and user ids and the old → new id map.

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/onboarding/strategy-import":{"post":{"description":"Broker/admin only. Takes the JSON returned by GET /v1/admin/strategy (users, propertyInputs, entities, fy27Budget, timeline.*, connectGoals) and creates a new client with the same data under new ids: users, strategy, properties with assumptions/actuals/expenses/address, entities with owners/trustee/SMSF members, and every timeline event. A broker caller is linked to the new users as for POST /v1/onboarding. Returns the new strategy and user ids and the old → new id map.","operationId":"OnboardingController_importStrategy_v1","parameters":[],"responses":{"201":{"description":""}},"summary":"Recreate a client from a strategy dump","tags":["User Profile"]}}}}
```

## POST /v1/onboarding/create-user-for-strategy

>

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"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"]}}},"paths":{"/v1/onboarding/create-user-for-strategy":{"post":{"operationId":"OnboardingController_onboardUserExistingStrategy_v1","parameters":[{"name":"strategy","required":true,"in":"query","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OnboardingDto"}}}},"responses":{"201":{"description":""}},"tags":["User Profile"]}}}}
```

## Check whether an email or phone number is already taken

> Only base case strategies are considered, strategy clones are never count as duplicates. Pass excludeUserId when editing an existing client so their own details do not clash.

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/onboarding/contact-availability":{"get":{"description":"Only base case strategies are considered, strategy clones are never count as duplicates. Pass excludeUserId when editing an existing client so their own details do not clash.","operationId":"OnboardingController_checkContactAvailability_v1","parameters":[{"name":"email","required":false,"in":"query","schema":{"type":"string"}},{"name":"phoneNumber","required":false,"in":"query","schema":{"type":"string"}},{"name":"excludeUserId","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"summary":"Check whether an email or phone number is already taken","tags":["User Profile"]}}}}
```

## GET /v1/onboarding/get-invites

>

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/onboarding/get-invites":{"get":{"operationId":"OnboardingController_getInvites_v1","parameters":[],"responses":{"200":{"description":""}},"tags":["User Profile"]}}}}
```

## GET /v1/onboarding/get-broker-referral-code

>

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/onboarding/get-broker-referral-code":{"get":{"operationId":"OnboardingController_getBrokerReferralCode_v1","parameters":[],"responses":{"200":{"description":""}},"tags":["User Profile"]}}}}
```

## POST /v1/onboarding/create-invite

>

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"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"]}}},"paths":{"/v1/onboarding/create-invite":{"post":{"operationId":"OnboardingController_createInvite_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateInviteDto"}}}},"responses":{"201":{"description":""}},"tags":["User Profile"]}}}}
```

## PUT /v1/onboarding/accept-invite

>

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"schemas":{"AcceptInviteDto":{"type":"object","properties":{"inviteId":{"type":"string","description":"The ID of the invite to accept"}},"required":["inviteId"]}}},"paths":{"/v1/onboarding/accept-invite":{"put":{"operationId":"OnboardingController_acceptInvite_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptInviteDto"}}}},"responses":{"200":{"description":""}},"tags":["User Profile"]}}}}
```

## PUT /v1/onboarding/reject-invite

>

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"schemas":{"RejectInviteDto":{"type":"object","properties":{"inviteId":{"type":"string","description":"The ID of the invite to reject"}},"required":["inviteId"]}}},"paths":{"/v1/onboarding/reject-invite":{"put":{"operationId":"OnboardingController_rejectInvite_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RejectInviteDto"}}}},"responses":{"200":{"description":""}},"tags":["User Profile"]}}}}
```

## PUT /v1/onboarding/cancel-invite

>

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"schemas":{"CancelInviteDto":{"type":"object","properties":{"inviteId":{"type":"string","description":"The ID of the invite to cancel"}},"required":["inviteId"]}}},"paths":{"/v1/onboarding/cancel-invite":{"put":{"operationId":"OnboardingController_cancelInvite_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelInviteDto"}}}},"responses":{"200":{"description":""}},"tags":["User Profile"]}}}}
```

## PUT /v1/onboarding/remove-invite

>

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"schemas":{"RemoveInviteDto":{"type":"object","properties":{"inviteId":{"type":"string","description":"The ID of the invite to remove"}},"required":["inviteId"]}}},"paths":{"/v1/onboarding/remove-invite":{"put":{"operationId":"OnboardingController_removeInvite_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveInviteDto"}}}},"responses":{"200":{"description":""}},"tags":["User Profile"]}}}}
```

## PUT /v1/onboarding/auth-existing-user

>

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/onboarding/auth-existing-user":{"put":{"operationId":"OnboardingController_updateAuthOfExistingUserData_v1","parameters":[{"name":"userId","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["User Profile"]}}}}
```

## POST /v1/onboarding/control-center

>

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/onboarding/control-center":{"post":{"operationId":"OnboardingController_onboardControlCenter_v1","parameters":[],"responses":{"201":{"description":""}},"tags":["User Profile"]}}}}
```

## POST /v1/onboarding/bulk-import

> Bulk import clients from CSV

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"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"]}}]}}}}},"paths":{"/v1/onboarding/bulk-import":{"post":{"operationId":"OnboardingController_bulkImport_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkImportDto"}}}},"responses":{"201":{"description":""}},"summary":"Bulk import clients from CSV","tags":["User Profile"]}}}}
```

## POST /v1/onboarding/imports/{importId}/cancel

> Request cooperative cancel of an in-flight bulk import

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/onboarding/imports/{importId}/cancel":{"post":{"operationId":"OnboardingController_cancelImport_v1","parameters":[{"name":"importId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"summary":"Request cooperative cancel of an in-flight bulk import","tags":["User Profile"]}}}}
```

## POST /v1/onboarding/imports/{importId}/rollback

> Roll back a bulk import session (clients, properties, anomalies) by import id

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/onboarding/imports/{importId}/rollback":{"post":{"operationId":"OnboardingController_rollbackImport_v1","parameters":[{"name":"importId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"summary":"Roll back a bulk import session (clients, properties, anomalies) by import id","tags":["User Profile"]}}}}
```

## POST /v1/onboarding/bulk-import-properties

> Bulk import properties for previously imported clients

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"schemas":{"BulkImportPropertiesDto":{"type":"object","properties":{"crmSource":{"type":"string"},"groups":{"type":"array","items":{"$ref":"#/components/schemas/BulkImportPropertyGroupDto"}}},"required":["crmSource","groups"]},"BulkImportPropertyGroupDto":{"type":"object","properties":{}}}},"paths":{"/v1/onboarding/bulk-import-properties":{"post":{"operationId":"OnboardingController_bulkImportProperties_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkImportPropertiesDto"}}}},"responses":{"201":{"description":""}},"summary":"Bulk import properties for previously imported clients","tags":["User Profile"]}}}}
```

## POST /v1/onboarding/commissions-import

> Import broker commissions (RCTI + trail/upfront/clawback/fees)

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"schemas":{"CommissionsImportDto":{"type":"object","properties":{}}}},"paths":{"/v1/onboarding/commissions-import":{"post":{"operationId":"OnboardingController_commissionsImport_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommissionsImportDto"}}}},"responses":{"201":{"description":""}},"summary":"Import broker commissions (RCTI + trail/upfront/clawback/fees)","tags":["User Profile"]}}}}
```

## GET /v1/onboarding/import-debug/source

> Import Inspector: Excel source of one saved value (file, sheet, cell, raw value, anomaly)

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/onboarding/import-debug/source":{"get":{"operationId":"OnboardingController_getImportDebugSource_v1","parameters":[{"name":"entityType","required":true,"in":"query","schema":{"type":"string"}},{"name":"entityId","required":true,"in":"query","schema":{"type":"string"}},{"name":"targetPath","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"summary":"Import Inspector: Excel source of one saved value (file, sheet, cell, raw value, anomaly)","tags":["User Profile"]}}}}
```

## GET /v1/onboarding/import-debug/record

> Import Inspector: the full saved record behind an inspected entity, in named sections

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/onboarding/import-debug/record":{"get":{"operationId":"OnboardingController_getImportDebugRecord_v1","parameters":[{"name":"entityType","required":true,"in":"query","schema":{"type":"string"}},{"name":"entityId","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"summary":"Import Inspector: the full saved record behind an inspected entity, in named sections","tags":["User Profile"]}}}}
```

## GET /v1/onboarding/import-debug/entity

> Import Inspector: all lineage records for one saved entity (which fields have a known Excel source)

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/onboarding/import-debug/entity":{"get":{"operationId":"OnboardingController_getImportDebugEntity_v1","parameters":[{"name":"entityType","required":true,"in":"query","schema":{"type":"string"}},{"name":"entityId","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"summary":"Import Inspector: all lineage records for one saved entity (which fields have a known Excel source)","tags":["User Profile"]}}}}
```

## POST /v1/onboarding/active-loans-import

> Persist the normalised SalesTrekker Active\_Loans book (SCC-32.16)

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"schemas":{"ActiveLoansImportDto":{"type":"object","properties":{}}}},"paths":{"/v1/onboarding/active-loans-import":{"post":{"operationId":"OnboardingController_activeLoansImport_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActiveLoansImportDto"}}}},"responses":{"201":{"description":""}},"summary":"Persist the normalised SalesTrekker Active_Loans book (SCC-32.16)","tags":["User Profile"]}}}}
```

## GET /v1/onboarding/owner-review-queue

> Owner tokens the matcher could not resolve on its own, with any decision already recorded

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/onboarding/owner-review-queue":{"get":{"operationId":"OnboardingController_ownerReviewQueue_v1","parameters":[],"responses":{"200":{"description":""}},"summary":"Owner tokens the matcher could not resolve on its own, with any decision already recorded","tags":["User Profile"]}}}}
```

## GET /v1/onboarding/owner-overrides

> Every owner decision this broker has recorded — read by the import to apply tier 0

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/onboarding/owner-overrides":{"get":{"operationId":"OnboardingController_listOwnerOverrides_v1","parameters":[],"responses":{"200":{"description":""}},"summary":"Every owner decision this broker has recorded — read by the import to apply tier 0","tags":["User Profile"]}}}}
```

## POST /v1/onboarding/owner-overrides

> Record who an owner token actually is — tier 0 of the resolution ladder, applied on the next import

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"schemas":{"OwnerOverrideDto":{"type":"object","properties":{}}}},"paths":{"/v1/onboarding/owner-overrides":{"post":{"operationId":"OnboardingController_saveOwnerOverride_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OwnerOverrideDto"}}}},"responses":{"201":{"description":""}},"summary":"Record who an owner token actually is — tier 0 of the resolution ladder, applied on the next import","tags":["User Profile"]}}}}
```

## POST /v1/onboarding/bulk-import-entities

> Persist ownership entities — companies, trusts and SMSFs (Entities\_YBR\_STR)

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"schemas":{"EntitiesImportDto":{"type":"object","properties":{}}}},"paths":{"/v1/onboarding/bulk-import-entities":{"post":{"operationId":"OnboardingController_bulkImportEntities_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntitiesImportDto"}}}},"responses":{"201":{"description":""}},"summary":"Persist ownership entities — companies, trusts and SMSFs (Entities_YBR_STR)","tags":["User Profile"]}}}}
```

## POST /v1/onboarding/crm-data-book

> Persist the raw CRM data book 1:1 — the applicants and sales exports (st\_applicants / st\_sales)

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"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"]}}},"paths":{"/v1/onboarding/crm-data-book":{"post":{"operationId":"OnboardingController_crmDataBookImport_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrmDataBookImportDto"}}}},"responses":{"201":{"description":""}},"summary":"Persist the raw CRM data book 1:1 — the applicants and sales exports (st_applicants / st_sales)","tags":["User Profile"]}}}}
```

## POST /v1/onboarding/crm-data-book/promote

> Promote the replica's client fields — balance sheet, identity and address — into the domain tables (Steps 4-6). Idempotent; safe to re-run once an async client import has finished.

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/onboarding/crm-data-book/promote":{"post":{"operationId":"OnboardingController_promoteClientsFromReplica_v1","parameters":[{"name":"importId","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"summary":"Promote the replica's client fields — balance sheet, identity and address — into the domain tables (Steps 4-6). Idempotent; safe to re-run once an async client import has finished.","tags":["User Profile"]}}}}
```

## POST /v1/onboarding/crm-data-book/promote-mycrm

> Promote the MyCRM replica's client fields — balance sheet and identity — into the domain tables. Idempotent; safe to re-run once an async client import has finished.

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/onboarding/crm-data-book/promote-mycrm":{"post":{"operationId":"OnboardingController_promoteMyCrmFromReplica_v1","parameters":[{"name":"importId","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"summary":"Promote the MyCRM replica's client fields — balance sheet and identity — into the domain tables. Idempotent; safe to re-run once an async client import has finished.","tags":["User Profile"]}}}}
```

## POST /v1/onboarding/crm-data-book/promote-deals

> Promote the CRM's deals into st\_deal (Step 7) — funding sheet, costs and dates, including the application date daysToSettlementAvg was blocked on. Idempotent.

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/onboarding/crm-data-book/promote-deals":{"post":{"operationId":"OnboardingController_promoteDealsFromReplica_v1","parameters":[{"name":"importId","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"summary":"Promote the CRM's deals into st_deal (Step 7) — funding sheet, costs and dates, including the application date daysToSettlementAvg was blocked on. Idempotent.","tags":["User Profile"]}}}}
```

## GET /v1/onboarding/import-files

> List the broker's uploaded import files

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/onboarding/import-files":{"get":{"operationId":"OnboardingController_listImportFiles_v1","parameters":[],"responses":{"200":{"description":""}},"summary":"List the broker's uploaded import files","tags":["User Profile"]}}}}
```

## POST /v1/onboarding/import-files

> Save an uploaded import workbook to the file history

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/onboarding/import-files":{"post":{"operationId":"OnboardingController_recordImportFile_v1","parameters":[],"responses":{"201":{"description":""}},"summary":"Save an uploaded import workbook to the file history","tags":["User Profile"]}}}}
```

## GET /v1/onboarding/import-files/{id}/download

> Get a short-lived signed download URL for an import file

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/onboarding/import-files/{id}/download":{"get":{"operationId":"OnboardingController_downloadImportFile_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"summary":"Get a short-lived signed download URL for an import file","tags":["User Profile"]}}}}
```

## POST /v1/onboarding/bulk-apply-blanket-parameters

> Apply blanket scheduling, review, and assumption parameters to imported clients

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"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"]}}},"paths":{"/v1/onboarding/bulk-apply-blanket-parameters":{"post":{"operationId":"OnboardingController_bulkApplyBlanketParameters_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkApplyBlanketParametersDto"}}}},"responses":{"201":{"description":""}},"summary":"Apply blanket scheduling, review, and assumption parameters to imported clients","tags":["User Profile"]}}}}
```

## GET /v1/onboarding/imports

> List the broker's recent bulk import sessions (newest first) for undo history

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/onboarding/imports":{"get":{"operationId":"OnboardingController_listImportSessions_v1","parameters":[],"responses":{"200":{"description":""}},"summary":"List the broker's recent bulk import sessions (newest first) for undo history","tags":["User Profile"]}}}}
```

## GET /v1/onboarding/import-progress/{id}

> Get bulk import progress

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/onboarding/import-progress/{id}":{"get":{"operationId":"OnboardingController_getImportProgress_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"summary":"Get bulk import progress","tags":["User Profile"]}}}}
```

## POST /v1/onboarding/imports/{importId}/reconcile-deal

> Reconcile clients to a sales deal using the import snapshot (post-import Deal Ref link).

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"schemas":{"ReconcileDealDto":{"type":"object","properties":{"dealRef":{"type":"string"}},"required":["dealRef"]}}},"paths":{"/v1/onboarding/imports/{importId}/reconcile-deal":{"post":{"operationId":"OnboardingController_reconcileImportDeal_v1","parameters":[{"name":"importId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReconcileDealDto"}}}},"responses":{"201":{"description":""}},"summary":"Reconcile clients to a sales deal using the import snapshot (post-import Deal Ref link).","tags":["User Profile"]}}}}
```

## POST /v1/onboarding/bulk-import-anomalies

> Persist data anomalies detected during a bulk import (called after clients/properties are created).

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"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"]}}},"paths":{"/v1/onboarding/bulk-import-anomalies":{"post":{"operationId":"OnboardingController_bulkImportAnomalies_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkImportAnomaliesDto"}}}},"responses":{"201":{"description":""}},"summary":"Persist data anomalies detected during a bulk import (called after clients/properties are created).","tags":["User Profile"]}}}}
```

## GET /v1/onboarding/users/{userId}/import-anomalies

> List open import anomalies for a single user.

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/onboarding/users/{userId}/import-anomalies":{"get":{"operationId":"OnboardingController_listImportAnomalies_v1","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"summary":"List open import anomalies for a single user.","tags":["User Profile"]}}}}
```

## GET /v1/onboarding/import-anomaly-health

> Per-user aggregate of open anomalies (drives the Data Health badge).

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/onboarding/import-anomaly-health":{"get":{"operationId":"OnboardingController_getImportAnomalyHealth_v1","parameters":[],"responses":{"200":{"description":""}},"summary":"Per-user aggregate of open anomalies (drives the Data Health badge).","tags":["User Profile"]}}}}
```

## PUT /v1/onboarding/import-anomalies/{id}/resolve

> Mark a single import anomaly as resolved (writes value to user record on Accept) or dismissed.

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"schemas":{"ResolveImportAnomalyDto":{"type":"object","properties":{"status":{"type":"string"},"resolvedValue":{"type":"string"}},"required":["status"]}}},"paths":{"/v1/onboarding/import-anomalies/{id}/resolve":{"put":{"operationId":"OnboardingController_resolveImportAnomaly_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveImportAnomalyDto"}}}},"responses":{"200":{"description":""}},"summary":"Mark a single import anomaly as resolved (writes value to user record on Accept) or dismissed.","tags":["User Profile"]}}}}
```

## PATCH /v1/onboarding/import-anomalies/{id}/fields/{fieldId}

> Accept or dismiss a single withheld field on a client import anomaly.

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"schemas":{"ResolveImportAnomalyFieldDto":{"type":"object","properties":{"status":{"type":"string","enum":["accepted","dismissed"]},"resolvedValue":{"type":"string"}},"required":["status"]}}},"paths":{"/v1/onboarding/import-anomalies/{id}/fields/{fieldId}":{"patch":{"operationId":"OnboardingController_resolveImportAnomalyField_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"fieldId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveImportAnomalyFieldDto"}}}},"responses":{"200":{"description":""}},"summary":"Accept or dismiss a single withheld field on a client import anomaly.","tags":["User Profile"]}}}}
```

## POST /v1/onboarding/users/{userId}/import-anomalies/bulk-resolve

> Resolve or dismiss all open import anomalies for a user (optional bulk Accept CRM).

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"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"]}}},"paths":{"/v1/onboarding/users/{userId}/import-anomalies/bulk-resolve":{"post":{"operationId":"OnboardingController_bulkResolveImportAnomalies_v1","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkResolveImportAnomaliesDto"}}}},"responses":{"201":{"description":""}},"summary":"Resolve or dismiss all open import anomalies for a user (optional bulk Accept CRM).","tags":["User Profile"]}}}}
```

## POST /v1/onboarding/bulk-import-property-anomalies

> Persist property-level import anomalies (withheld Sales fields until Accept).

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"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"]}}},"paths":{"/v1/onboarding/bulk-import-property-anomalies":{"post":{"operationId":"OnboardingController_bulkImportPropertyAnomalies_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkImportPropertyAnomaliesDto"}}}},"responses":{"201":{"description":""}},"summary":"Persist property-level import anomalies (withheld Sales fields until Accept).","tags":["User Profile"]}}}}
```

## GET /v1/onboarding/users/{userId}/import-property-anomalies

> List import property anomalies for all properties owned by a user.

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/onboarding/users/{userId}/import-property-anomalies":{"get":{"operationId":"OnboardingController_listImportPropertyAnomaliesForUser_v1","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"summary":"List import property anomalies for all properties owned by a user.","tags":["User Profile"]}}}}
```

## GET /v1/onboarding/properties/{propertyInputId}/import-anomalies

> List import property anomalies for a single property.

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}}},"paths":{"/v1/onboarding/properties/{propertyInputId}/import-anomalies":{"get":{"operationId":"OnboardingController_listImportPropertyAnomaliesForProperty_v1","parameters":[{"name":"propertyInputId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"summary":"List import property anomalies for a single property.","tags":["User Profile"]}}}}
```

## PUT /v1/onboarding/import-property-anomalies/{id}/resolve

> Resolve or dismiss a property import anomaly (applies held loan/address data on Accept).

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"schemas":{"ResolveImportPropertyAnomalyDto":{"type":"object","properties":{"status":{"type":"string"},"resolvedValue":{"type":"string"}},"required":["status"]}}},"paths":{"/v1/onboarding/import-property-anomalies/{id}/resolve":{"put":{"operationId":"OnboardingController_resolveImportPropertyAnomaly_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveImportPropertyAnomalyDto"}}}},"responses":{"200":{"description":""}},"summary":"Resolve or dismiss a property import anomaly (applies held loan/address data on Accept).","tags":["User Profile"]}}}}
```

## PATCH /v1/onboarding/import-property-anomalies/{id}/fields/{fieldId}

> Accept or dismiss a single withheld field on a property import anomaly.

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"schemas":{"ResolveImportAnomalyFieldDto":{"type":"object","properties":{"status":{"type":"string","enum":["accepted","dismissed"]},"resolvedValue":{"type":"string"}},"required":["status"]}}},"paths":{"/v1/onboarding/import-property-anomalies/{id}/fields/{fieldId}":{"patch":{"operationId":"OnboardingController_resolveImportPropertyAnomalyField_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"fieldId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveImportAnomalyFieldDto"}}}},"responses":{"200":{"description":""}},"summary":"Accept or dismiss a single withheld field on a property import anomaly.","tags":["User Profile"]}}}}
```

## POST /v1/onboarding/users/{userId}/import-property-anomalies/bulk-resolve

> Resolve or dismiss all open property import anomalies for a user.

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"User Profile","description":"User onboarding, profile, and personal details"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"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"]}}},"paths":{"/v1/onboarding/users/{userId}/import-property-anomalies/bulk-resolve":{"post":{"operationId":"OnboardingController_bulkResolveImportPropertyAnomalies_v1","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkResolveImportPropertyAnomaliesDto"}}}},"responses":{"201":{"description":""}},"summary":"Resolve or dismiss all open property import anomalies for a user.","tags":["User Profile"]}}}}
```


---

# 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/user-profile.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.
