openapi: 3.0.1
info:
  description: >-
    Goals are the key milestones in a households future plans. They represent
    the major aspirations of the household, and may vary over time.<br />The
    following goal types are currently supported:<br /><br /><ul><li>Buy a
    house</li><li>Buy to let</li><li>Buy a car</li><li>Go to school</li><li>Have
    a child</li><li>Travel</li><li>Eliminate debt</li><li>Get
    married</li><li>Sabbatical</li><li>Invest in a business</li><li>Move
    out</li><li>Relocate</li><li>Retirement</li><li>Grow my wealth</li><li>Used
    Defined (custom)</li><li>Recurring User Defined</li></ul>In addition, a
    person's retirement is also being treated as a special goal.<br /><br
    /><h1>Goal Owner</h1>The goal owner is being determined by the endpoint used
    at creation. Consider the available endpoints of a typed goal as an example.
    They can also be seen in Section <a href='typed'>Typed Goals</a>.
  title: Goals
  version: '5.1'
servers:
  - url: https://api.envizage.me
paths:
  /scenarios/{scenarioId}/goals:
    get:
      description: Retrieve all Goals
      operationId: getGoals_33
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: Zero-based page index (0..N)
          in: query
          name: page
          schema:
            type: integer
            default: 0
        - description: The size of the page to be returned
          in: query
          name: size
          schema:
            type: integer
            default: 20
        - description: >-
            Sorting criteria in the format: property,(asc|desc). Default sort
            order is ascending. Multiple sort criteria are supported.
          in: query
          name: sort
          schema:
            type: array
            items:
              type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PageGoalDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:read
      summary: Retrieve all
      tags:
        - Goals
  /scenarios/{scenarioId}/goals/buy-a-car:
    get:
      description: List all buy a car goals in a given household .
      operationId: getGoals_30
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: Zero-based page index (0..N)
          in: query
          name: page
          schema:
            type: integer
            default: 0
        - description: The size of the page to be returned
          in: query
          name: size
          schema:
            type: integer
            default: 20
        - description: >-
            Sorting criteria in the format: property,(asc|desc). Default sort
            order is ascending. Multiple sort criteria are supported.
          in: query
          name: sort
          schema:
            type: array
            items:
              type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PageGoalBuyACarDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:read
      summary: Retrieve all
      tags:
        - Buy A Car Goals
    post:
      description: >-
        Creates a new Buy A Car goal in the given scenario identified by
        {scenarioId}.
      operationId: createGoal_30
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoalBuyACarDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalBuyACarDto'
          description: Created
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Create
      tags:
        - Buy A Car Goals
  /scenarios/{scenarioId}/goals/buy-a-car/{goalId}:
    delete:
      description: Deletes a given Goal from the specified Household.
      operationId: deleteGoal_15
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      responses:
        '204':
          content:
            '*/*':
              schema:
                type: string
          description: No Content
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Delete
      tags:
        - Buy A Car Goals
    get:
      description: Provides information on a given Goal from the specified Household.
      operationId: getGoal_15
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalBuyACarDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:read
      summary: Retrieve
      tags:
        - Buy A Car Goals
    put:
      description: >-
        Updates the Buy A Car goal with {goalId} in the given scenario
        identified by {scenarioId}.
      operationId: updateGoal_15
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoalBuyACarDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalBuyACarDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Update
      tags:
        - Buy A Car Goals
  /scenarios/{scenarioId}/goals/buy-a-house:
    get:
      description: List all User-Defined goals in a given household.
      operationId: getGoals_28
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: Zero-based page index (0..N)
          in: query
          name: page
          schema:
            type: integer
            default: 0
        - description: The size of the page to be returned
          in: query
          name: size
          schema:
            type: integer
            default: 20
        - description: >-
            Sorting criteria in the format: property,(asc|desc). Default sort
            order is ascending. Multiple sort criteria are supported.
          in: query
          name: sort
          schema:
            type: array
            items:
              type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PageGoalBuyAHouseDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:read
      summary: Retrieve all
      tags:
        - User Defined Goals
    post:
      description: >-
        Creates a new User-Defined goal in the given scenario identified by
        {scenarioId}.
      operationId: createGoal_28
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoalBuyAHouseDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalBuyAHouseDto'
          description: Created
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Create
      tags:
        - User Defined Goals
  /scenarios/{scenarioId}/goals/buy-a-house/{goalId}:
    delete:
      description: Deletes a given Goal from the specified Household.
      operationId: deleteGoal_14
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      responses:
        '204':
          content:
            '*/*':
              schema:
                type: string
          description: No Content
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Delete
      tags:
        - User Defined Goals
    get:
      description: Provides information on a given Goal from the specified Household.
      operationId: getGoal_14
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalBuyAHouseDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:read
      summary: Retrieve
      tags:
        - User Defined Goals
    put:
      description: >-
        Updates the User Defined goal with {goalId} in the given scenario
        identified by {scenarioId}.
      operationId: updateGoal_14
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoalBuyAHouseDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalBuyAHouseDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Update
      tags:
        - User Defined Goals
  /scenarios/{scenarioId}/goals/buy-to-let:
    get:
      description: List all buy to let goals in a given household.
      operationId: getGoals_26
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: Zero-based page index (0..N)
          in: query
          name: page
          schema:
            type: integer
            default: 0
        - description: The size of the page to be returned
          in: query
          name: size
          schema:
            type: integer
            default: 20
        - description: >-
            Sorting criteria in the format: property,(asc|desc). Default sort
            order is ascending. Multiple sort criteria are supported.
          in: query
          name: sort
          schema:
            type: array
            items:
              type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PageGoalBuyToLetDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:read
      summary: Retrieve all
      tags:
        - Buy To Let Goals
    post:
      description: >-
        Creates a new Buy To Let goal in the given scenario identified by
        {scenarioId}.
      operationId: createGoal_26
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoalBuyToLetDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalBuyToLetDto'
          description: Created
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Create
      tags:
        - Buy To Let Goals
  /scenarios/{scenarioId}/goals/buy-to-let/{goalId}:
    delete:
      description: Deletes a given Goal from the specified Household.
      operationId: deleteGoal_13
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      responses:
        '204':
          content:
            '*/*':
              schema:
                type: string
          description: No Content
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Delete
      tags:
        - Buy To Let Goals
    get:
      description: Provides information on a given Goal from the specified Household.
      operationId: getGoal_13
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalBuyToLetDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:read
      summary: Retrieve
      tags:
        - Buy To Let Goals
    put:
      description: >-
        Updates the Buy To Let goal with {goalId} in the given scenario
        identified by {scenarioId}.
      operationId: updateGoal_13
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoalBuyToLetDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalBuyToLetDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Update
      tags:
        - Buy To Let Goals
  /scenarios/{scenarioId}/goals/eliminate-debt:
    get:
      description: List all Eliminate Debt goals in a given household.
      operationId: getGoals_24
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: Zero-based page index (0..N)
          in: query
          name: page
          schema:
            type: integer
            default: 0
        - description: The size of the page to be returned
          in: query
          name: size
          schema:
            type: integer
            default: 20
        - description: >-
            Sorting criteria in the format: property,(asc|desc). Default sort
            order is ascending. Multiple sort criteria are supported.
          in: query
          name: sort
          schema:
            type: array
            items:
              type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PageGoalEliminateDebtDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:read
      summary: Retrieve all
      tags:
        - Eliminate Debt Goals
    post:
      description: >-
        Creates a new Eliminate Debt goal in the given scenario dentified by
        {scenarioId}.
      operationId: createGoal_24
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoalEliminateDebtDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalEliminateDebtDto'
          description: Created
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Create
      tags:
        - Eliminate Debt Goals
  /scenarios/{scenarioId}/goals/eliminate-debt/{goalId}:
    delete:
      description: Deletes a given Goal from the specified Household.
      operationId: deleteGoal_12
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      responses:
        '204':
          content:
            '*/*':
              schema:
                type: string
          description: No Content
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Delete
      tags:
        - Eliminate Debt Goals
    get:
      description: Provides information on a given Goal from the specified Household.
      operationId: getGoal_12
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalEliminateDebtDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:read
      summary: Retrieve
      tags:
        - Eliminate Debt Goals
    put:
      description: >-
        Updates the goal with {goalId} in the given scenario identified by
        {scenarioId}.
      operationId: updateGoal_12
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoalEliminateDebtDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalEliminateDebtDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Update
      tags:
        - Eliminate Debt Goals
  /scenarios/{scenarioId}/goals/get-married:
    get:
      description: List all Get Married goals in a given household for the given household.
      operationId: getGoals_22
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: Zero-based page index (0..N)
          in: query
          name: page
          schema:
            type: integer
            default: 0
        - description: The size of the page to be returned
          in: query
          name: size
          schema:
            type: integer
            default: 20
        - description: >-
            Sorting criteria in the format: property,(asc|desc). Default sort
            order is ascending. Multiple sort criteria are supported.
          in: query
          name: sort
          schema:
            type: array
            items:
              type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PageGoalGetMarriedDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:read
      summary: Retrieve all
      tags:
        - Get Married Goals
    post:
      description: >-
        Creates a new Get Married goal in the given scenario identified by
        {scenarioId}.
      operationId: createGoal_22
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoalGetMarriedDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalGetMarriedDto'
          description: Created
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Create
      tags:
        - Get Married Goals
  /scenarios/{scenarioId}/goals/get-married/{goalId}:
    delete:
      description: Deletes a given Goal from the specified Household.
      operationId: deleteGoal_11
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      responses:
        '204':
          content:
            '*/*':
              schema:
                type: string
          description: No Content
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Delete
      tags:
        - Get Married Goals
    get:
      description: Provides information on a given Goal from the specified Household.
      operationId: getGoal_11
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalGetMarriedDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:read
      summary: Retrieve
      tags:
        - Get Married Goals
    put:
      description: >-
        Updates the Get Married with {goalId} goal in the given scenario
        identified by {scenarioId}.
      operationId: updateGoal_11
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoalGetMarriedDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalGetMarriedDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Update
      tags:
        - Get Married Goals
  /scenarios/{scenarioId}/goals/go-to-school:
    get:
      description: List all Go To School goals in a given household.
      operationId: getGoals_21
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: Zero-based page index (0..N)
          in: query
          name: page
          schema:
            type: integer
            default: 0
        - description: The size of the page to be returned
          in: query
          name: size
          schema:
            type: integer
            default: 20
        - description: >-
            Sorting criteria in the format: property,(asc|desc). Default sort
            order is ascending. Multiple sort criteria are supported.
          in: query
          name: sort
          schema:
            type: array
            items:
              type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PageGoalGoToSchoolDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:read
      summary: Retrieve all
      tags:
        - Go To School Goals
    post:
      description: >-
        Creates a new Go To School goal in the given scenario identified by
        {scenarioId}.
      operationId: createGoal_21
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoalGoToSchoolDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalGoToSchoolDto'
          description: Created
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Create
      tags:
        - Go To School Goals
  /scenarios/{scenarioId}/goals/go-to-school/{goalId}:
    delete:
      description: Deletes a given Goal from the specified Household and Person.
      operationId: deleteGoal_10
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      responses:
        '204':
          content:
            '*/*':
              schema:
                type: string
          description: No Content
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Delete
      tags:
        - Go To School Goals
    get:
      description: Provides information on a given Goal from the specified Household.
      operationId: getGoal_10
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalGoToSchoolDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:read
      summary: Retrieve
      tags:
        - Go To School Goals
    put:
      description: >-
        Updates the Go To School goal with {goalId} in the given scenario
        identified by {scenarioId}.
      operationId: updateGoal_10
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoalGoToSchoolDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalGoToSchoolDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Update
      tags:
        - Go To School Goals
  /scenarios/{scenarioId}/goals/grow-my-wealth:
    get:
      description: Retrieve all Grow My Wealth Goals
      operationId: getGoals_18
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: Zero-based page index (0..N)
          in: query
          name: page
          schema:
            type: integer
            default: 0
        - description: The size of the page to be returned
          in: query
          name: size
          schema:
            type: integer
            default: 20
        - description: >-
            Sorting criteria in the format: property,(asc|desc). Default sort
            order is ascending. Multiple sort criteria are supported.
          in: query
          name: sort
          schema:
            type: array
            items:
              type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PageGoalGrowMyWealthDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:read
      summary: Retrieve all
      tags:
        - Grow My Wealth Goals
    post:
      description: Create a Grow My Wealth Goal
      operationId: createGoal_18
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoalGrowMyWealthDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalGrowMyWealthDto'
          description: Created
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Create
      tags:
        - Grow My Wealth Goals
  /scenarios/{scenarioId}/goals/grow-my-wealth/{goalId}:
    delete:
      description: Delete a Grow My Wealth Goal
      operationId: deleteGoal_9
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      responses:
        '204':
          content:
            '*/*':
              schema:
                type: string
          description: No Content
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Delete
      tags:
        - Grow My Wealth Goals
    get:
      description: Retrieve a Grow My Wealth Goal
      operationId: getGoal_9
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalGrowMyWealthDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:read
      summary: Retrieve
      tags:
        - Grow My Wealth Goals
    put:
      description: Update a Grow My Wealth Goal
      operationId: updateGoal_9
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoalGrowMyWealthDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalGrowMyWealthDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Update
      tags:
        - Grow My Wealth Goals
  /scenarios/{scenarioId}/goals/have-a-child:
    get:
      description: List all Have A Child goals in a given household.
      operationId: getGoals_16
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: Zero-based page index (0..N)
          in: query
          name: page
          schema:
            type: integer
            default: 0
        - description: The size of the page to be returned
          in: query
          name: size
          schema:
            type: integer
            default: 20
        - description: >-
            Sorting criteria in the format: property,(asc|desc). Default sort
            order is ascending. Multiple sort criteria are supported.
          in: query
          name: sort
          schema:
            type: array
            items:
              type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PageGoalHaveAChildDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:read
      summary: Retrieve all
      tags:
        - Have A Child Goals
    post:
      description: >-
        Creates a new Have A Child goal in the given scenario identified by
        {scenarioId}.
      operationId: createGoal_16
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoalHaveAChildDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalHaveAChildDto'
          description: Created
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Create
      tags:
        - Have A Child Goals
  /scenarios/{scenarioId}/goals/have-a-child/{goalId}:
    delete:
      description: Deletes a given Goal from the specified Household.
      operationId: deleteGoal_8
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      responses:
        '204':
          content:
            '*/*':
              schema:
                type: string
          description: No Content
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Delete
      tags:
        - Have A Child Goals
    get:
      description: Provides information on a given Goal from the specified Household.
      operationId: getGoal_8
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalHaveAChildDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:read
      summary: Retrieve
      tags:
        - Have A Child Goals
    put:
      description: >-
        Updates the Have A Child goal with {goalId} in the given scenario
        identified by {scenario}.
      operationId: updateGoal_8
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoalHaveAChildDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalHaveAChildDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Update
      tags:
        - Have A Child Goals
  /scenarios/{scenarioId}/goals/invest-in-a-business:
    get:
      description: List all Invest in a Business goals in a given household.
      operationId: getGoals_15
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: Zero-based page index (0..N)
          in: query
          name: page
          schema:
            type: integer
            default: 0
        - description: The size of the page to be returned
          in: query
          name: size
          schema:
            type: integer
            default: 20
        - description: >-
            Sorting criteria in the format: property,(asc|desc). Default sort
            order is ascending. Multiple sort criteria are supported.
          in: query
          name: sort
          schema:
            type: array
            items:
              type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PageGoalInvestInABusinessDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:read
      summary: Retrieve all
      tags:
        - Invest In A Business Goals
    post:
      description: >-
        Creates a new Invest in a Business goal in the given scenario identified
        by {scenarioId}.
      operationId: createGoal_15
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoalInvestInABusinessDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalInvestInABusinessDto'
          description: Created
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Create
      tags:
        - Invest In A Business Goals
  /scenarios/{scenarioId}/goals/invest-in-a-business/{goalId}:
    delete:
      description: Deletes a given Goal from the specified Household.
      operationId: deleteGoal_7
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      responses:
        '204':
          content:
            '*/*':
              schema:
                type: string
          description: No Content
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Delete
      tags:
        - Invest In A Business Goals
    get:
      description: Provides information on a given Goal from the specified Household.
      operationId: getGoal_7
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalInvestInABusinessDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:read
      summary: Retrieve
      tags:
        - Invest In A Business Goals
    put:
      description: >-
        Updates the Invest in a Business goal with {goalId} in the given
        scenario identified by {scenarioId}.
      operationId: updateGoal_7
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoalInvestInABusinessDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalInvestInABusinessDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Update
      tags:
        - Invest In A Business Goals
  /scenarios/{scenarioId}/goals/move-out:
    get:
      description: List all Move Out goals in a given household.
      operationId: getGoals_12
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: Zero-based page index (0..N)
          in: query
          name: page
          schema:
            type: integer
            default: 0
        - description: The size of the page to be returned
          in: query
          name: size
          schema:
            type: integer
            default: 20
        - description: >-
            Sorting criteria in the format: property,(asc|desc). Default sort
            order is ascending. Multiple sort criteria are supported.
          in: query
          name: sort
          schema:
            type: array
            items:
              type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PageGoalMoveOutDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:read
      summary: Retrieve all
      tags:
        - Move Out Goals
    post:
      description: >-
        Creates a new Move Out goal in the given scenario identified by
        <code>{scenarioId}</code>.
      operationId: createGoal_12
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoalMoveOutDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalMoveOutDto'
          description: Created
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Create
      tags:
        - Move Out Goals
  /scenarios/{scenarioId}/goals/move-out/{goalId}:
    delete:
      description: Deletes a given Goal from the specified Household.
      operationId: deleteGoal_6
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      responses:
        '204':
          content:
            '*/*':
              schema:
                type: string
          description: No Content
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Delete
      tags:
        - Move Out Goals
    get:
      description: Provides information on a given Goal from the specified Household.
      operationId: getGoal_6
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalMoveOutDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:read
      summary: Retrieve
      tags:
        - Move Out Goals
    put:
      description: >-
        Updates the Move Out goal with {goalId} in the given scenario identified
        by {scenarioId}.
      operationId: updateGoal_6
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoalMoveOutDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalMoveOutDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Update
      tags:
        - Move Out Goals
  /scenarios/{scenarioId}/goals/recurring-user-defined:
    get:
      description: List all Recurring User Defined goals in a given household.
      operationId: getGoals_11
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: Zero-based page index (0..N)
          in: query
          name: page
          schema:
            type: integer
            default: 0
        - description: The size of the page to be returned
          in: query
          name: size
          schema:
            type: integer
            default: 20
        - description: >-
            Sorting criteria in the format: property,(asc|desc). Default sort
            order is ascending. Multiple sort criteria are supported.
          in: query
          name: sort
          schema:
            type: array
            items:
              type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PageGoalRecurringUserDefinedDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:read
      summary: Retrieve all
      tags:
        - Recurring User Defined Goals
    post:
      description: >-
        Creates a new Recurring User Defined goal in the given scenario
        identified by {scenarioId}.
      operationId: createGoal_11
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoalRecurringUserDefinedDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalRecurringUserDefinedDto'
          description: Created
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Create
      tags:
        - Recurring User Defined Goals
  /scenarios/{scenarioId}/goals/recurring-user-defined/{goalId}:
    delete:
      description: Deletes a given Goal from the specified Household.
      operationId: deleteGoal_5
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      responses:
        '204':
          content:
            '*/*':
              schema:
                type: string
          description: No Content
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Delete
      tags:
        - Recurring User Defined Goals
    get:
      description: Provides information on a given Goal from the specified Household.
      operationId: getGoal_5
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalRecurringUserDefinedDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:read
      summary: Retrieve
      tags:
        - Recurring User Defined Goals
    put:
      description: >-
        Updates the Recurring User Defined goal with {goalId} in the given
        scenario identified by {scenarioId}.
      operationId: updateGoal_5
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoalRecurringUserDefinedDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalRecurringUserDefinedDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Update
      tags:
        - Recurring User Defined Goals
  /scenarios/{scenarioId}/goals/relocate:
    get:
      description: List all Relocate goals in a given household.
      operationId: getGoals_9
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: Zero-based page index (0..N)
          in: query
          name: page
          schema:
            type: integer
            default: 0
        - description: The size of the page to be returned
          in: query
          name: size
          schema:
            type: integer
            default: 20
        - description: >-
            Sorting criteria in the format: property,(asc|desc). Default sort
            order is ascending. Multiple sort criteria are supported.
          in: query
          name: sort
          schema:
            type: array
            items:
              type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PageGoalRelocateDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:read
      summary: Retrieve all
      tags:
        - Relocate Goals
    post:
      description: >-
        Creates a new Relocate goal in the given scenario identified by
        {scenarioId}.
      operationId: createGoal_9
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoalRelocateDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalRelocateDto'
          description: Created
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Create
      tags:
        - Relocate Goals
  /scenarios/{scenarioId}/goals/relocate/{goalId}:
    delete:
      description: Deletes a given Goal from the specified Household.
      operationId: deleteGoal_4
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      responses:
        '204':
          content:
            '*/*':
              schema:
                type: string
          description: No Content
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Delete
      tags:
        - Relocate Goals
    get:
      description: Provides information on a given Goal from the specified Household.
      operationId: getGoal_4
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalRelocateDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:read
      summary: Retrieve
      tags:
        - Relocate Goals
    put:
      description: >-
        Updates the Relocate goal with {goalId} in the given scenario identified
        by {scenarioId}.
      operationId: updateGoal_4
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoalRelocateDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalRelocateDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Update
      tags:
        - Relocate Goals
  /scenarios/{scenarioId}/goals/retirement:
    get:
      description: List all Retirement goals in a given household.
      operationId: getGoals_6
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: Zero-based page index (0..N)
          in: query
          name: page
          schema:
            type: integer
            default: 0
        - description: The size of the page to be returned
          in: query
          name: size
          schema:
            type: integer
            default: 20
        - description: >-
            Sorting criteria in the format: property,(asc|desc). Default sort
            order is ascending. Multiple sort criteria are supported.
          in: query
          name: sort
          schema:
            type: array
            items:
              type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PageGoalRetirementDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:read
      summary: Retrieve all
      tags:
        - Retirement Goals
    post:
      description: >-
        Creates a new Retirement goal in the given scenario identified by
        {scenarioId}.
      operationId: createGoal_6
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoalRetirementDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalRetirementDto'
          description: Created
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Create
      tags:
        - Retirement Goals
  /scenarios/{scenarioId}/goals/retirement/{goalId}:
    delete:
      description: Deletes a given Goal from the specified Household.
      operationId: deleteGoal_3
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      responses:
        '204':
          content:
            '*/*':
              schema:
                type: string
          description: No Content
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Delete
      tags:
        - Retirement Goals
    get:
      description: Provides information on a given Goal from the specified Household.
      operationId: getGoal_3
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalRetirementDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:read
      summary: Retrieve
      tags:
        - Retirement Goals
    put:
      description: >-
        Updates a Retirement goal in the given scenario identified by
        {scenarioId}.
      operationId: updateGoal_3
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoalRetirementDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalRetirementDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Update
      tags:
        - Retirement Goals
  /scenarios/{scenarioId}/goals/sabbatical:
    get:
      description: List all Sabbatical goals in a given household.
      operationId: getGoals_5
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: Zero-based page index (0..N)
          in: query
          name: page
          schema:
            type: integer
            default: 0
        - description: The size of the page to be returned
          in: query
          name: size
          schema:
            type: integer
            default: 20
        - description: >-
            Sorting criteria in the format: property,(asc|desc). Default sort
            order is ascending. Multiple sort criteria are supported.
          in: query
          name: sort
          schema:
            type: array
            items:
              type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PageGoalSabbaticalDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:read
      summary: Retrieve all
      tags:
        - Sabbatical Goals
    post:
      description: >-
        Creates a new Sabbatical goal in the given scenario identified by
        {scenarioId}.
      operationId: createGoal_5
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoalSabbaticalDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalSabbaticalDto'
          description: Created
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Create
      tags:
        - Sabbatical Goals
  /scenarios/{scenarioId}/goals/sabbatical/{goalId}:
    delete:
      description: Deletes a given Goal from the specified Household.
      operationId: deleteGoal_2
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      responses:
        '204':
          content:
            '*/*':
              schema:
                type: string
          description: No Content
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Delete
      tags:
        - Sabbatical Goals
    get:
      description: Provides information on a given Goal from the specified Household.
      operationId: getGoal_2
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalSabbaticalDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:read
      summary: Retrieve
      tags:
        - Sabbatical Goals
    put:
      description: >-
        Updates the Sabbatical goal with {goalId} in the given scenario
        identified by {scenarioId}.
      operationId: updateGoal_2
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoalSabbaticalDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalSabbaticalDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Update
      tags:
        - Sabbatical Goals
  /scenarios/{scenarioId}/goals/travel:
    get:
      description: List all Travel goals in a given household.
      operationId: getGoals_3
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: Zero-based page index (0..N)
          in: query
          name: page
          schema:
            type: integer
            default: 0
        - description: The size of the page to be returned
          in: query
          name: size
          schema:
            type: integer
            default: 20
        - description: >-
            Sorting criteria in the format: property,(asc|desc). Default sort
            order is ascending. Multiple sort criteria are supported.
          in: query
          name: sort
          schema:
            type: array
            items:
              type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PageGoalTravelDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:read
      summary: Retrieve all
      tags:
        - Travel Goals
    post:
      description: >-
        Creates a new Travel goal in the given scenario identified by
        {scenarioId}.
      operationId: createGoal_3
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoalTravelDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalTravelDto'
          description: Created
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Create
      tags:
        - Travel Goals
  /scenarios/{scenarioId}/goals/travel/{goalId}:
    delete:
      description: Deletes a given Goal from the specified Household.
      operationId: deleteGoal_1
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      responses:
        '204':
          content:
            '*/*':
              schema:
                type: string
          description: No Content
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Delete
      tags:
        - Travel Goals
    get:
      description: Provides information on a given Goal from the specified Household.
      operationId: getGoal_1
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalTravelDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:read
      summary: Retrieve
      tags:
        - Travel Goals
    put:
      description: >-
        Updates the Travel goal with {goalId} in the given scenario identified
        by {scenarioId}.
      operationId: updateGoal_1
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoalTravelDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalTravelDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Update
      tags:
        - Travel Goals
  /scenarios/{scenarioId}/goals/user-defined:
    get:
      description: List all User-Defined goals in a given household.
      operationId: getGoals
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: Zero-based page index (0..N)
          in: query
          name: page
          schema:
            type: integer
            default: 0
        - description: The size of the page to be returned
          in: query
          name: size
          schema:
            type: integer
            default: 20
        - description: >-
            Sorting criteria in the format: property,(asc|desc). Default sort
            order is ascending. Multiple sort criteria are supported.
          in: query
          name: sort
          schema:
            type: array
            items:
              type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PageGoalUserDefinedDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:read
      summary: Retrieve all
      tags:
        - User Defined Goals
    post:
      description: >-
        Creates a new User-Defined goal in the given scenario identified by
        {scenarioId}.
      operationId: createGoal
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoalUserDefinedDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalUserDefinedDto'
          description: Created
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Create
      tags:
        - User Defined Goals
  /scenarios/{scenarioId}/goals/user-defined/{goalId}:
    delete:
      description: Deletes a given Goal from the specified Household.
      operationId: deleteGoal
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      responses:
        '204':
          content:
            '*/*':
              schema:
                type: string
          description: No Content
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Delete
      tags:
        - User Defined Goals
    get:
      description: Provides information on a given Goal from the specified Household.
      operationId: getGoal
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalUserDefinedDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:read
      summary: Retrieve
      tags:
        - User Defined Goals
    put:
      description: >-
        Updates the User Defined goal with {goalId} in the given scenario
        identified by {scenarioId}.
      operationId: updateGoal
      parameters:
        - description: The scenario's id
          in: path
          name: scenarioId
          required: true
          schema:
            type: string
        - description: The goal's id
          in: path
          name: goalId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoalUserDefinedDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoalUserDefinedDto'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
        - authentication:
            - scenarios:full
            - scenarios:write
      summary: Update
      tags:
        - User Defined Goals
components:
  schemas:
    BankOfMumAndDadFundingSource:
      type: object
      allOf:
        - $ref: '#/components/schemas/FundingSource'
        - type: object
          properties:
            amount:
              type: number
              exclusiveMinimum: true
              minimum: 0
            currency:
              type: string
            growthRate:
              type: string
              enum:
                - CALCULATED
                - NONE
                - CPI
                - MEDIAN_WAGE_GROWTH
                - PROPERTY_GROWTH
            maximumAbsoluteSpreadAllowed:
              type: number
              format: double
              exclusiveMaximum: false
              exclusiveMinimum: false
              maximum: 1
              minimum: 0
            spreadOverGrowthRate:
              type: number
              format: double
              exclusiveMaximum: false
              exclusiveMinimum: false
              maximum: 1
              minimum: 0
      required:
        - currency
    FundingSource:
      type: object
      description: A list of funding sources.
      discriminator:
        propertyName: class
      example:
        - class: LiquidAssetsFundingSource
          name: Liquid assets
          description: Liquid assets funding source
          wrappers:
            - GENERAL_INVESTMENT_ACCOUNT
            - TAX_ADVANTAGED
            - PENSION
      properties:
        class:
          type: string
        description:
          type: string
        id:
          type: string
        name:
          type: string
      required:
        - class
    FutureInvestmentPropertyAssetFundingSource:
      type: object
      allOf:
        - $ref: '#/components/schemas/FundingSource'
        - type: object
          properties:
            goalId:
              type: string
              description: >-
                The goal id of the Buy to Let goal associated to the property
                that will be sold in order to fund the goal.
              example: '8'
      required:
        - goalId
    FutureResidentialPropertyAssetFundingSource:
      type: object
      allOf:
        - $ref: '#/components/schemas/FundingSource'
        - type: object
          properties:
            goalId:
              type: string
              description: >-
                The goal id of the Buy a House goal associated to the property
                that will be sold in order to fund the goal.
              example: '8'
      required:
        - goalId
    GoalBuyACarDto:
      type: object
      properties:
        currency:
          type: string
          description: >-
            The currency in which the goal's value is specified. Valid currency
            code ISO-4217 from the list of supported currencies.
          example: GBP
        description:
          type: string
          description: Description of the resource.
          example: My resource's description
        desiredAmount:
          type: number
          description: The desired value of the goal.
          example: 10000
          minimum: 0
        enabled:
          type: boolean
          description: Toggle inclusion of the goal in the simulation.
          example: true
        endDate:
          type: string
          format: date-time
          description: >-
            End date of the goal. Valid date string in simplified extended
            ISO-8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Will be respected only
            in conjuction with `endsOn` equals to `USER_DEFINED`.
          example: 2026-01-01T00:00:00.000Z
        endsOn:
          type: string
          description: Can be any of USER_DEFINED, ON_RETIREMENT, ON_DEATH.
          enum:
            - USER_DEFINED
            - ON_RETIREMENT
            - ON_DEATH
          example: USER_DEFINED
        frequency:
          type: string
          description: The frequency of the goal.
          enum:
            - UNSPECIFIED
            - ONE_OFF
            - DAILY
            - WEEKLY
            - MONTHLY
            - QUARTERLY
            - SEMI_ANNUALLY
            - ANNUALLY
          example: ONE_OFF
        fundingSources:
          type: array
          description: A list of funding sources.
          example:
            - class: LiquidAssetsFundingSource
              description: Liquid assets funding source
              name: Liquid assets
              wrappers:
                - GENERAL_INVESTMENT_ACCOUNT
                - TAX_ADVANTAGED
                - PENSION
          items:
            oneOf:
              - $ref: '#/components/schemas/BankOfMumAndDadFundingSource'
              - $ref: >-
                  #/components/schemas/FutureInvestmentPropertyAssetFundingSource
              - $ref: >-
                  #/components/schemas/FutureResidentialPropertyAssetFundingSource
              - $ref: '#/components/schemas/InvestmentPropertyFundingSource'
              - $ref: '#/components/schemas/LiquidAssetsFundingSource'
              - $ref: '#/components/schemas/LiquidAssetsNoIncomeFundingSource'
              - $ref: '#/components/schemas/MortgageFundingSource'
              - $ref: '#/components/schemas/OtherLoanFundingSource'
              - $ref: '#/components/schemas/ResidentialPropertyFundingSource'
              - $ref: '#/components/schemas/SaveFundingSource'
              - $ref: '#/components/schemas/UKStudentLoanFundingSource'
        growthRate:
          type: string
          description: >-
            Can be either of CALCULATED, NONE, CPI, MEDIAN_WAGE_GROWTH,
            PROPERTY_GROWTH.
          enum:
            - CALCULATED
            - NONE
            - CPI
            - MEDIAN_WAGE_GROWTH
            - PROPERTY_GROWTH
          example: CALCULATED
        id:
          type: string
          description: The id of the resource.
          example: '1'
        maximumAbsoluteSpreadAllowed:
          type: number
          format: double
          description: Maximum absolute spread added to growth rate allowed.
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        minimumAmount:
          type: number
          description: The minimum value of the goal.
          example: 10000
          minimum: 0
        name:
          type: string
          description: The name of the resource.
          example: My resource
        priority:
          type: integer
          format: int32
          description: The priority of the goal (1 = lowest, 10 = highest).
          example: 1
        properties:
          type: object
          additionalProperties:
            type: object
            description: Properties of the resource.
            example:
              property_1: Value of property 1
              property_2: Value of property 2
          description: Properties of the resource.
          example:
            property_1: Value of property 1
            property_2: Value of property 2
        spreadOverGrowthRate:
          type: number
          format: double
          description: Define the additional spread over the defined growthRate.
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        startDate:
          type: string
          format: date-time
          description: >-
            Start date of the goal. Valid date string in simplified extended
            ISO-8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Will be respected only
            in conjuction with `startsOn` equals to `USER_DEFINED`.
          example: 2025-01-01T00:00:00.000Z
        startsOn:
          type: string
          description: Can be any of USER_DEFINED, ON_RETIREMENT, ON_DEATH.
          enum:
            - USER_DEFINED
            - ON_RETIREMENT
            - ON_DEATH
          example: USER_DEFINED
      required:
        - currency
        - frequency
        - minimumAmount
        - priority
        - startDate
    GoalBuyAHouseDto:
      type: object
      properties:
        currency:
          type: string
          description: >-
            The currency in which the goal's value is specified. Valid currency
            code ISO-4217 from the list of supported currencies.
          example: GBP
        description:
          type: string
          description: Description of the resource.
          example: My resource's description
        desiredAmount:
          type: number
          description: The desired value of the goal.
          example: 10000
          minimum: 0
        enabled:
          type: boolean
          description: Toggle inclusion of the goal in the simulation.
          example: true
        endDate:
          type: string
          format: date-time
          description: >-
            End date of the goal. Valid date string in simplified extended
            ISO-8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Will be respected only
            in conjuction with `endsOn` equals to `USER_DEFINED`.
          example: 2026-01-01T00:00:00.000Z
        endsOn:
          type: string
          description: Can be any of USER_DEFINED, ON_RETIREMENT, ON_DEATH.
          enum:
            - USER_DEFINED
            - ON_RETIREMENT
            - ON_DEATH
          example: USER_DEFINED
        frequency:
          type: string
          description: The frequency of the goal.
          enum:
            - UNSPECIFIED
            - ONE_OFF
            - DAILY
            - WEEKLY
            - MONTHLY
            - QUARTERLY
            - SEMI_ANNUALLY
            - ANNUALLY
          example: ONE_OFF
        fundingSources:
          type: array
          description: A list of funding sources.
          example:
            - class: LiquidAssetsFundingSource
              description: Liquid assets funding source
              name: Liquid assets
              wrappers:
                - GENERAL_INVESTMENT_ACCOUNT
                - TAX_ADVANTAGED
                - PENSION
          items:
            oneOf:
              - $ref: '#/components/schemas/BankOfMumAndDadFundingSource'
              - $ref: >-
                  #/components/schemas/FutureInvestmentPropertyAssetFundingSource
              - $ref: >-
                  #/components/schemas/FutureResidentialPropertyAssetFundingSource
              - $ref: '#/components/schemas/InvestmentPropertyFundingSource'
              - $ref: '#/components/schemas/LiquidAssetsFundingSource'
              - $ref: '#/components/schemas/LiquidAssetsNoIncomeFundingSource'
              - $ref: '#/components/schemas/MortgageFundingSource'
              - $ref: '#/components/schemas/OtherLoanFundingSource'
              - $ref: '#/components/schemas/ResidentialPropertyFundingSource'
              - $ref: '#/components/schemas/SaveFundingSource'
              - $ref: '#/components/schemas/UKStudentLoanFundingSource'
        growthRate:
          type: string
          description: >-
            Can be either of CALCULATED, NONE, CPI, MEDIAN_WAGE_GROWTH,
            PROPERTY_GROWTH.
          enum:
            - CALCULATED
            - NONE
            - CPI
            - MEDIAN_WAGE_GROWTH
            - PROPERTY_GROWTH
          example: CALCULATED
        id:
          type: string
          description: The id of the resource.
          example: '1'
        maximumAbsoluteSpreadAllowed:
          type: number
          format: double
          description: Maximum absolute spread added to growth rate allowed.
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        minimumAmount:
          type: number
          description: The minimum value of the goal.
          example: 10000
          minimum: 0
        name:
          type: string
          description: The name of the resource.
          example: My resource
        primary:
          type: boolean
          description: Is this property my primary residential property?
          example: true
        priority:
          type: integer
          format: int32
          description: The priority of the goal (1 = lowest, 10 = highest).
          example: 1
        properties:
          type: object
          additionalProperties:
            type: object
            description: Properties of the resource.
            example:
              property_1: Value of property 1
              property_2: Value of property 2
          description: Properties of the resource.
          example:
            property_1: Value of property 1
            property_2: Value of property 2
        spreadOverGrowthRate:
          type: number
          format: double
          description: Define the additional spread over the defined growthRate.
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        startDate:
          type: string
          format: date-time
          description: >-
            Start date of the goal. Valid date string in simplified extended
            ISO-8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Will be respected only
            in conjuction with `startsOn` equals to `USER_DEFINED`.
          example: 2025-01-01T00:00:00.000Z
        startsOn:
          type: string
          description: Can be any of USER_DEFINED, ON_RETIREMENT, ON_DEATH.
          enum:
            - USER_DEFINED
            - ON_RETIREMENT
            - ON_DEATH
          example: USER_DEFINED
      required:
        - currency
        - frequency
        - minimumAmount
        - primary
        - priority
        - startDate
    GoalBuyToLetDto:
      type: object
      properties:
        annualNetRentalYieldPercentage:
          type: number
          format: double
          description: The annual net rental yield percentag.
          example: 0.025
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        currency:
          type: string
          description: >-
            The currency in which the goal's value is specified. Valid currency
            code ISO-4217 from the list of supported currencies.
          example: GBP
        description:
          type: string
          description: Description of the resource.
          example: My resource's description
        desiredAmount:
          type: number
          description: The desired value of the goal.
          example: 10000
          minimum: 0
        enabled:
          type: boolean
          description: Toggle inclusion of the goal in the simulation.
          example: true
        endDate:
          type: string
          format: date-time
          description: >-
            End date of the goal. Valid date string in simplified extended
            ISO-8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Will be respected only
            in conjuction with `endsOn` equals to `USER_DEFINED`.
          example: 2026-01-01T00:00:00.000Z
        endsOn:
          type: string
          description: Can be any of USER_DEFINED, ON_RETIREMENT, ON_DEATH.
          enum:
            - USER_DEFINED
            - ON_RETIREMENT
            - ON_DEATH
          example: USER_DEFINED
        frequency:
          type: string
          description: The frequency of the goal.
          enum:
            - UNSPECIFIED
            - ONE_OFF
            - DAILY
            - WEEKLY
            - MONTHLY
            - QUARTERLY
            - SEMI_ANNUALLY
            - ANNUALLY
          example: ONE_OFF
        fundingSources:
          type: array
          description: A list of funding sources.
          example:
            - class: LiquidAssetsFundingSource
              description: Liquid assets funding source
              name: Liquid assets
              wrappers:
                - GENERAL_INVESTMENT_ACCOUNT
                - TAX_ADVANTAGED
                - PENSION
          items:
            oneOf:
              - $ref: '#/components/schemas/BankOfMumAndDadFundingSource'
              - $ref: >-
                  #/components/schemas/FutureInvestmentPropertyAssetFundingSource
              - $ref: >-
                  #/components/schemas/FutureResidentialPropertyAssetFundingSource
              - $ref: '#/components/schemas/InvestmentPropertyFundingSource'
              - $ref: '#/components/schemas/LiquidAssetsFundingSource'
              - $ref: '#/components/schemas/LiquidAssetsNoIncomeFundingSource'
              - $ref: '#/components/schemas/MortgageFundingSource'
              - $ref: '#/components/schemas/OtherLoanFundingSource'
              - $ref: '#/components/schemas/ResidentialPropertyFundingSource'
              - $ref: '#/components/schemas/SaveFundingSource'
              - $ref: '#/components/schemas/UKStudentLoanFundingSource'
        growthRate:
          type: string
          description: >-
            Can be either of CALCULATED, NONE, CPI, MEDIAN_WAGE_GROWTH,
            PROPERTY_GROWTH.
          enum:
            - CALCULATED
            - NONE
            - CPI
            - MEDIAN_WAGE_GROWTH
            - PROPERTY_GROWTH
          example: CALCULATED
        id:
          type: string
          description: The id of the resource.
          example: '1'
        maximumAbsoluteSpreadAllowed:
          type: number
          format: double
          description: Maximum absolute spread added to growth rate allowed.
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        minimumAmount:
          type: number
          description: The minimum value of the goal.
          example: 10000
          minimum: 0
        name:
          type: string
          description: The name of the resource.
          example: My resource
        priority:
          type: integer
          format: int32
          description: The priority of the goal (1 = lowest, 10 = highest).
          example: 1
        properties:
          type: object
          additionalProperties:
            type: object
            description: Properties of the resource.
            example:
              property_1: Value of property 1
              property_2: Value of property 2
          description: Properties of the resource.
          example:
            property_1: Value of property 1
            property_2: Value of property 2
        spreadOverGrowthRate:
          type: number
          format: double
          description: Define the additional spread over the defined growthRate.
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        startDate:
          type: string
          format: date-time
          description: >-
            Start date of the goal. Valid date string in simplified extended
            ISO-8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Will be respected only
            in conjuction with `startsOn` equals to `USER_DEFINED`.
          example: 2025-01-01T00:00:00.000Z
        startsOn:
          type: string
          description: Can be any of USER_DEFINED, ON_RETIREMENT, ON_DEATH.
          enum:
            - USER_DEFINED
            - ON_RETIREMENT
            - ON_DEATH
          example: USER_DEFINED
        toSurvivorPercentage:
          type: number
          format: double
          description: '% of the income to be transferred to the surviving partner.'
          example: 0.8
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
      required:
        - annualNetRentalYieldPercentage
        - currency
        - frequency
        - minimumAmount
        - priority
        - startDate
        - toSurvivorPercentage
    GoalDto:
      type: object
      properties:
        currency:
          type: string
          description: >-
            The currency in which the goal's value is specified. Valid currency
            code ISO-4217 from the list of supported currencies.
          example: GBP
        description:
          type: string
          description: Description of the resource.
          example: My resource's description
        desiredAmount:
          type: number
          description: The desired value of the goal.
          example: 10000
          minimum: 0
        enabled:
          type: boolean
          description: Toggle inclusion of the goal in the simulation.
          example: true
        endDate:
          type: string
          format: date-time
          description: >-
            End date of the goal. Valid date string in simplified extended
            ISO-8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Will be respected only
            in conjuction with `endsOn` equals to `USER_DEFINED`.
          example: 2026-01-01T00:00:00.000Z
        endsOn:
          type: string
          description: Can be any of USER_DEFINED, ON_RETIREMENT, ON_DEATH.
          enum:
            - USER_DEFINED
            - ON_RETIREMENT
            - ON_DEATH
          example: USER_DEFINED
        frequency:
          type: string
          description: The frequency of the goal.
          enum:
            - UNSPECIFIED
            - ONE_OFF
            - DAILY
            - WEEKLY
            - MONTHLY
            - QUARTERLY
            - SEMI_ANNUALLY
            - ANNUALLY
          example: ONE_OFF
        fundingSources:
          type: array
          description: A list of funding sources.
          example:
            - class: LiquidAssetsFundingSource
              description: Liquid assets funding source
              name: Liquid assets
              wrappers:
                - GENERAL_INVESTMENT_ACCOUNT
                - TAX_ADVANTAGED
                - PENSION
          items:
            oneOf:
              - $ref: '#/components/schemas/BankOfMumAndDadFundingSource'
              - $ref: >-
                  #/components/schemas/FutureInvestmentPropertyAssetFundingSource
              - $ref: >-
                  #/components/schemas/FutureResidentialPropertyAssetFundingSource
              - $ref: '#/components/schemas/InvestmentPropertyFundingSource'
              - $ref: '#/components/schemas/LiquidAssetsFundingSource'
              - $ref: '#/components/schemas/LiquidAssetsNoIncomeFundingSource'
              - $ref: '#/components/schemas/MortgageFundingSource'
              - $ref: '#/components/schemas/OtherLoanFundingSource'
              - $ref: '#/components/schemas/ResidentialPropertyFundingSource'
              - $ref: '#/components/schemas/SaveFundingSource'
              - $ref: '#/components/schemas/UKStudentLoanFundingSource'
        growthRate:
          type: string
          description: >-
            Can be either of CALCULATED, NONE, CPI, MEDIAN_WAGE_GROWTH,
            PROPERTY_GROWTH.
          enum:
            - CALCULATED
            - NONE
            - CPI
            - MEDIAN_WAGE_GROWTH
            - PROPERTY_GROWTH
          example: CALCULATED
        id:
          type: string
          description: The id of the resource.
          example: '1'
        maximumAbsoluteSpreadAllowed:
          type: number
          format: double
          description: Maximum absolute spread added to growth rate allowed.
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        minimumAmount:
          type: number
          description: The minimum value of the goal.
          example: 10000
          minimum: 0
        name:
          type: string
          description: The name of the resource.
          example: My resource
        priority:
          type: integer
          format: int32
          description: The priority of the goal (1 = lowest, 10 = highest).
          example: 1
        properties:
          type: object
          additionalProperties:
            type: object
            description: Properties of the resource.
            example:
              property_1: Value of property 1
              property_2: Value of property 2
          description: Properties of the resource.
          example:
            property_1: Value of property 1
            property_2: Value of property 2
        spreadOverGrowthRate:
          type: number
          format: double
          description: Define the additional spread over the defined growthRate.
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        startDate:
          type: string
          format: date-time
          description: >-
            Start date of the goal. Valid date string in simplified extended
            ISO-8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Will be respected only
            in conjuction with `startsOn` equals to `USER_DEFINED`.
          example: 2025-01-01T00:00:00.000Z
        startsOn:
          type: string
          description: Can be any of USER_DEFINED, ON_RETIREMENT, ON_DEATH.
          enum:
            - USER_DEFINED
            - ON_RETIREMENT
            - ON_DEATH
          example: USER_DEFINED
      required:
        - currency
        - frequency
        - minimumAmount
        - priority
        - startDate
    GoalEliminateDebtDto:
      type: object
      properties:
        currency:
          type: string
          description: >-
            The currency in which the goal's value is specified. Valid currency
            code ISO-4217 from the list of supported currencies.
          example: GBP
        description:
          type: string
          description: Description of the resource.
          example: My resource's description
        desiredAmount:
          type: number
          description: The desired value of the goal.
          example: 10000
          minimum: 0
        enabled:
          type: boolean
          description: Toggle inclusion of the goal in the simulation.
          example: true
        endDate:
          type: string
          format: date-time
          description: >-
            End date of the goal. Valid date string in simplified extended
            ISO-8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Will be respected only
            in conjuction with `endsOn` equals to `USER_DEFINED`.
          example: 2026-01-01T00:00:00.000Z
        endsOn:
          type: string
          description: Can be any of USER_DEFINED, ON_RETIREMENT, ON_DEATH.
          enum:
            - USER_DEFINED
            - ON_RETIREMENT
            - ON_DEATH
          example: USER_DEFINED
        frequency:
          type: string
          description: The frequency of the goal.
          enum:
            - UNSPECIFIED
            - ONE_OFF
            - DAILY
            - WEEKLY
            - MONTHLY
            - QUARTERLY
            - SEMI_ANNUALLY
            - ANNUALLY
          example: ONE_OFF
        fundingSources:
          type: array
          description: A list of funding sources.
          example:
            - class: LiquidAssetsFundingSource
              description: Liquid assets funding source
              name: Liquid assets
              wrappers:
                - GENERAL_INVESTMENT_ACCOUNT
                - TAX_ADVANTAGED
                - PENSION
          items:
            oneOf:
              - $ref: '#/components/schemas/BankOfMumAndDadFundingSource'
              - $ref: >-
                  #/components/schemas/FutureInvestmentPropertyAssetFundingSource
              - $ref: >-
                  #/components/schemas/FutureResidentialPropertyAssetFundingSource
              - $ref: '#/components/schemas/InvestmentPropertyFundingSource'
              - $ref: '#/components/schemas/LiquidAssetsFundingSource'
              - $ref: '#/components/schemas/LiquidAssetsNoIncomeFundingSource'
              - $ref: '#/components/schemas/MortgageFundingSource'
              - $ref: '#/components/schemas/OtherLoanFundingSource'
              - $ref: '#/components/schemas/ResidentialPropertyFundingSource'
              - $ref: '#/components/schemas/SaveFundingSource'
              - $ref: '#/components/schemas/UKStudentLoanFundingSource'
        growthRate:
          type: string
          description: >-
            Can be either of CALCULATED, NONE, CPI, MEDIAN_WAGE_GROWTH,
            PROPERTY_GROWTH.
          enum:
            - CALCULATED
            - NONE
            - CPI
            - MEDIAN_WAGE_GROWTH
            - PROPERTY_GROWTH
          example: CALCULATED
        id:
          type: string
          description: The id of the resource.
          example: '1'
        liabilityAndDebtId:
          type: string
          description: The ID of a previously created Debt Liability.
          example: '7'
        maximumAbsoluteSpreadAllowed:
          type: number
          format: double
          description: Maximum absolute spread added to growth rate allowed.
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        minimumAmount:
          type: number
          description: The minimum value of the goal.
          example: 10000
          minimum: 0
        name:
          type: string
          description: The name of the resource.
          example: My resource
        priority:
          type: integer
          format: int32
          description: The priority of the goal (1 = lowest, 10 = highest).
          example: 1
        properties:
          type: object
          additionalProperties:
            type: object
            description: Properties of the resource.
            example:
              property_1: Value of property 1
              property_2: Value of property 2
          description: Properties of the resource.
          example:
            property_1: Value of property 1
            property_2: Value of property 2
        spreadOverGrowthRate:
          type: number
          format: double
          description: Define the additional spread over the defined growthRate.
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        startDate:
          type: string
          format: date-time
          description: >-
            Start date of the goal. Valid date string in simplified extended
            ISO-8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Will be respected only
            in conjuction with `startsOn` equals to `USER_DEFINED`.
          example: 2025-01-01T00:00:00.000Z
        startsOn:
          type: string
          description: Can be any of USER_DEFINED, ON_RETIREMENT, ON_DEATH.
          enum:
            - USER_DEFINED
            - ON_RETIREMENT
            - ON_DEATH
          example: USER_DEFINED
      required:
        - currency
        - frequency
        - liabilityAndDebtId
        - minimumAmount
        - priority
        - startDate
    GoalGetMarriedDto:
      type: object
      properties:
        currency:
          type: string
          description: >-
            The currency in which the goal's value is specified. Valid currency
            code ISO-4217 from the list of supported currencies.
          example: GBP
        description:
          type: string
          description: Description of the resource.
          example: My resource's description
        desiredAmount:
          type: number
          description: The desired value of the goal.
          example: 10000
          minimum: 0
        enabled:
          type: boolean
          description: Toggle inclusion of the goal in the simulation.
          example: true
        endDate:
          type: string
          format: date-time
          description: >-
            End date of the goal. Valid date string in simplified extended
            ISO-8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Will be respected only
            in conjuction with `endsOn` equals to `USER_DEFINED`.
          example: 2026-01-01T00:00:00.000Z
        endsOn:
          type: string
          description: Can be any of USER_DEFINED, ON_RETIREMENT, ON_DEATH.
          enum:
            - USER_DEFINED
            - ON_RETIREMENT
            - ON_DEATH
          example: USER_DEFINED
        frequency:
          type: string
          description: The frequency of the goal.
          enum:
            - UNSPECIFIED
            - ONE_OFF
            - DAILY
            - WEEKLY
            - MONTHLY
            - QUARTERLY
            - SEMI_ANNUALLY
            - ANNUALLY
          example: ONE_OFF
        fundingSources:
          type: array
          description: A list of funding sources.
          example:
            - class: LiquidAssetsFundingSource
              description: Liquid assets funding source
              name: Liquid assets
              wrappers:
                - GENERAL_INVESTMENT_ACCOUNT
                - TAX_ADVANTAGED
                - PENSION
          items:
            oneOf:
              - $ref: '#/components/schemas/BankOfMumAndDadFundingSource'
              - $ref: >-
                  #/components/schemas/FutureInvestmentPropertyAssetFundingSource
              - $ref: >-
                  #/components/schemas/FutureResidentialPropertyAssetFundingSource
              - $ref: '#/components/schemas/InvestmentPropertyFundingSource'
              - $ref: '#/components/schemas/LiquidAssetsFundingSource'
              - $ref: '#/components/schemas/LiquidAssetsNoIncomeFundingSource'
              - $ref: '#/components/schemas/MortgageFundingSource'
              - $ref: '#/components/schemas/OtherLoanFundingSource'
              - $ref: '#/components/schemas/ResidentialPropertyFundingSource'
              - $ref: '#/components/schemas/SaveFundingSource'
              - $ref: '#/components/schemas/UKStudentLoanFundingSource'
        growthRate:
          type: string
          description: >-
            Can be either of CALCULATED, NONE, CPI, MEDIAN_WAGE_GROWTH,
            PROPERTY_GROWTH.
          enum:
            - CALCULATED
            - NONE
            - CPI
            - MEDIAN_WAGE_GROWTH
            - PROPERTY_GROWTH
          example: CALCULATED
        id:
          type: string
          description: The id of the resource.
          example: '1'
        maximumAbsoluteSpreadAllowed:
          type: number
          format: double
          description: Maximum absolute spread added to growth rate allowed.
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        minimumAmount:
          type: number
          description: The minimum value of the goal.
          example: 10000
          minimum: 0
        name:
          type: string
          description: The name of the resource.
          example: My resource
        priority:
          type: integer
          format: int32
          description: The priority of the goal (1 = lowest, 10 = highest).
          example: 1
        properties:
          type: object
          additionalProperties:
            type: object
            description: Properties of the resource.
            example:
              property_1: Value of property 1
              property_2: Value of property 2
          description: Properties of the resource.
          example:
            property_1: Value of property 1
            property_2: Value of property 2
        spreadOverGrowthRate:
          type: number
          format: double
          description: Define the additional spread over the defined growthRate.
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        startDate:
          type: string
          format: date-time
          description: >-
            Start date of the goal. Valid date string in simplified extended
            ISO-8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Will be respected only
            in conjuction with `startsOn` equals to `USER_DEFINED`.
          example: 2025-01-01T00:00:00.000Z
        startsOn:
          type: string
          description: Can be any of USER_DEFINED, ON_RETIREMENT, ON_DEATH.
          enum:
            - USER_DEFINED
            - ON_RETIREMENT
            - ON_DEATH
          example: USER_DEFINED
      required:
        - currency
        - frequency
        - minimumAmount
        - priority
        - startDate
    GoalGoToSchoolDto:
      type: object
      properties:
        currency:
          type: string
          description: >-
            The currency in which the goal's value is specified. Valid currency
            code ISO-4217 from the list of supported currencies.
          example: GBP
        description:
          type: string
          description: Description of the resource.
          example: My resource's description
        desiredAmount:
          type: number
          description: The desired value of the goal.
          example: 10000
          minimum: 0
        enabled:
          type: boolean
          description: Toggle inclusion of the goal in the simulation.
          example: true
        endDate:
          type: string
          format: date-time
          description: >-
            End date of the goal. Valid date string in simplified extended
            ISO-8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Will be respected only
            in conjuction with `endsOn` equals to `USER_DEFINED`.
          example: 2026-01-01T00:00:00.000Z
        endsOn:
          type: string
          description: Can be any of USER_DEFINED, ON_RETIREMENT, ON_DEATH.
          enum:
            - USER_DEFINED
            - ON_RETIREMENT
            - ON_DEATH
          example: USER_DEFINED
        frequency:
          type: string
          description: The frequency of the goal.
          enum:
            - UNSPECIFIED
            - ONE_OFF
            - DAILY
            - WEEKLY
            - MONTHLY
            - QUARTERLY
            - SEMI_ANNUALLY
            - ANNUALLY
          example: ONE_OFF
        fundingSources:
          type: array
          description: A list of funding sources.
          example:
            - class: LiquidAssetsFundingSource
              description: Liquid assets funding source
              name: Liquid assets
              wrappers:
                - GENERAL_INVESTMENT_ACCOUNT
                - TAX_ADVANTAGED
                - PENSION
          items:
            oneOf:
              - $ref: '#/components/schemas/BankOfMumAndDadFundingSource'
              - $ref: >-
                  #/components/schemas/FutureInvestmentPropertyAssetFundingSource
              - $ref: >-
                  #/components/schemas/FutureResidentialPropertyAssetFundingSource
              - $ref: '#/components/schemas/InvestmentPropertyFundingSource'
              - $ref: '#/components/schemas/LiquidAssetsFundingSource'
              - $ref: '#/components/schemas/LiquidAssetsNoIncomeFundingSource'
              - $ref: '#/components/schemas/MortgageFundingSource'
              - $ref: '#/components/schemas/OtherLoanFundingSource'
              - $ref: '#/components/schemas/ResidentialPropertyFundingSource'
              - $ref: '#/components/schemas/SaveFundingSource'
              - $ref: '#/components/schemas/UKStudentLoanFundingSource'
        growthRate:
          type: string
          description: >-
            Can be either of CALCULATED, NONE, CPI, MEDIAN_WAGE_GROWTH,
            PROPERTY_GROWTH.
          enum:
            - CALCULATED
            - NONE
            - CPI
            - MEDIAN_WAGE_GROWTH
            - PROPERTY_GROWTH
          example: CALCULATED
        id:
          type: string
          description: The id of the resource.
          example: '1'
        maximumAbsoluteSpreadAllowed:
          type: number
          format: double
          description: Maximum absolute spread added to growth rate allowed.
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        minimumAmount:
          type: number
          description: The minimum value of the goal.
          example: 10000
          minimum: 0
        name:
          type: string
          description: The name of the resource.
          example: My resource
        priority:
          type: integer
          format: int32
          description: The priority of the goal (1 = lowest, 10 = highest).
          example: 1
        properties:
          type: object
          additionalProperties:
            type: object
            description: Properties of the resource.
            example:
              property_1: Value of property 1
              property_2: Value of property 2
          description: Properties of the resource.
          example:
            property_1: Value of property 1
            property_2: Value of property 2
        spreadOverGrowthRate:
          type: number
          format: double
          description: Define the additional spread over the defined growthRate.
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        startDate:
          type: string
          format: date-time
          description: >-
            Start date of the goal. Valid date string in simplified extended
            ISO-8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Will be respected only
            in conjuction with `startsOn` equals to `USER_DEFINED`.
          example: 2025-01-01T00:00:00.000Z
        startsOn:
          type: string
          description: Can be any of USER_DEFINED, ON_RETIREMENT, ON_DEATH.
          enum:
            - USER_DEFINED
            - ON_RETIREMENT
            - ON_DEATH
          example: USER_DEFINED
      required:
        - currency
        - frequency
        - minimumAmount
        - priority
        - startDate
    GoalGrowMyWealthDto:
      type: object
      properties:
        currency:
          type: string
          description: >-
            The currency in which the goal's value is specified. Valid currency
            code ISO-4217 from the list of supported currencies.
          example: GBP
        description:
          type: string
          description: Description of the resource.
          example: My resource's description
        desiredAmount:
          type: number
          description: The desired value of the goal.
          example: 10000
          minimum: 0
        enabled:
          type: boolean
          description: Toggle inclusion of the goal in the simulation.
          example: true
        endDate:
          type: string
          format: date-time
          description: >-
            End date of the goal. Valid date string in simplified extended
            ISO-8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Will be respected only
            in conjuction with `endsOn` equals to `USER_DEFINED`.
          example: 2026-01-01T00:00:00.000Z
        endsOn:
          type: string
          description: Can be any of USER_DEFINED, ON_RETIREMENT, ON_DEATH.
          enum:
            - USER_DEFINED
            - ON_RETIREMENT
            - ON_DEATH
          example: USER_DEFINED
        frequency:
          type: string
          description: The frequency of the goal.
          enum:
            - UNSPECIFIED
            - ONE_OFF
            - DAILY
            - WEEKLY
            - MONTHLY
            - QUARTERLY
            - SEMI_ANNUALLY
            - ANNUALLY
          example: ONE_OFF
        fundingSources:
          type: array
          description: A list of funding sources.
          example:
            - class: LiquidAssetsFundingSource
              description: Liquid assets funding source
              name: Liquid assets
              wrappers:
                - GENERAL_INVESTMENT_ACCOUNT
                - TAX_ADVANTAGED
                - PENSION
          items:
            oneOf:
              - $ref: '#/components/schemas/BankOfMumAndDadFundingSource'
              - $ref: >-
                  #/components/schemas/FutureInvestmentPropertyAssetFundingSource
              - $ref: >-
                  #/components/schemas/FutureResidentialPropertyAssetFundingSource
              - $ref: '#/components/schemas/InvestmentPropertyFundingSource'
              - $ref: '#/components/schemas/LiquidAssetsFundingSource'
              - $ref: '#/components/schemas/LiquidAssetsNoIncomeFundingSource'
              - $ref: '#/components/schemas/MortgageFundingSource'
              - $ref: '#/components/schemas/OtherLoanFundingSource'
              - $ref: '#/components/schemas/ResidentialPropertyFundingSource'
              - $ref: '#/components/schemas/SaveFundingSource'
              - $ref: '#/components/schemas/UKStudentLoanFundingSource'
        growthRate:
          type: string
          description: >-
            Can be either of CALCULATED, NONE, CPI, MEDIAN_WAGE_GROWTH,
            PROPERTY_GROWTH.
          enum:
            - CALCULATED
            - NONE
            - CPI
            - MEDIAN_WAGE_GROWTH
            - PROPERTY_GROWTH
          example: CALCULATED
        id:
          type: string
          description: The id of the resource.
          example: '1'
        maximumAbsoluteSpreadAllowed:
          type: number
          format: double
          description: Maximum absolute spread added to growth rate allowed.
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        minimumAmount:
          type: number
          description: The minimum value of the goal.
          example: 10000
          minimum: 0
        name:
          type: string
          description: The name of the resource.
          example: My resource
        priority:
          type: integer
          format: int32
          description: The priority of the goal (1 = lowest, 10 = highest).
          example: 1
        properties:
          type: object
          additionalProperties:
            type: object
            description: Properties of the resource.
            example:
              property_1: Value of property 1
              property_2: Value of property 2
          description: Properties of the resource.
          example:
            property_1: Value of property 1
            property_2: Value of property 2
        spreadOverGrowthRate:
          type: number
          format: double
          description: Define the additional spread over the defined growthRate.
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        startDate:
          type: string
          format: date-time
          description: >-
            Start date of the goal. Valid date string in simplified extended
            ISO-8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Will be respected only
            in conjuction with `startsOn` equals to `USER_DEFINED`.
          example: 2025-01-01T00:00:00.000Z
        startsOn:
          type: string
          description: Can be any of USER_DEFINED, ON_RETIREMENT, ON_DEATH.
          enum:
            - USER_DEFINED
            - ON_RETIREMENT
            - ON_DEATH
          example: USER_DEFINED
      required:
        - currency
        - frequency
        - minimumAmount
        - priority
        - startDate
    GoalHaveAChildDto:
      type: object
      properties:
        currency:
          type: string
          description: >-
            The currency in which the goal's value is specified. Valid currency
            code ISO-4217 from the list of supported currencies.
          example: GBP
        description:
          type: string
          description: Description of the resource.
          example: My resource's description
        desiredAmount:
          type: number
          description: The desired value of the goal.
          example: 10000
          minimum: 0
        enabled:
          type: boolean
          description: Toggle inclusion of the goal in the simulation.
          example: true
        endDate:
          type: string
          format: date-time
          description: >-
            End date of the goal. Valid date string in simplified extended
            ISO-8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Will be respected only
            in conjuction with `endsOn` equals to `USER_DEFINED`.
          example: 2026-01-01T00:00:00.000Z
        endsOn:
          type: string
          description: Can be any of USER_DEFINED, ON_RETIREMENT, ON_DEATH.
          enum:
            - USER_DEFINED
            - ON_RETIREMENT
            - ON_DEATH
          example: USER_DEFINED
        frequency:
          type: string
          description: The frequency of the goal.
          enum:
            - UNSPECIFIED
            - ONE_OFF
            - DAILY
            - WEEKLY
            - MONTHLY
            - QUARTERLY
            - SEMI_ANNUALLY
            - ANNUALLY
          example: ONE_OFF
        fundingSources:
          type: array
          description: A list of funding sources.
          example:
            - class: LiquidAssetsFundingSource
              description: Liquid assets funding source
              name: Liquid assets
              wrappers:
                - GENERAL_INVESTMENT_ACCOUNT
                - TAX_ADVANTAGED
                - PENSION
          items:
            oneOf:
              - $ref: '#/components/schemas/BankOfMumAndDadFundingSource'
              - $ref: >-
                  #/components/schemas/FutureInvestmentPropertyAssetFundingSource
              - $ref: >-
                  #/components/schemas/FutureResidentialPropertyAssetFundingSource
              - $ref: '#/components/schemas/InvestmentPropertyFundingSource'
              - $ref: '#/components/schemas/LiquidAssetsFundingSource'
              - $ref: '#/components/schemas/LiquidAssetsNoIncomeFundingSource'
              - $ref: '#/components/schemas/MortgageFundingSource'
              - $ref: '#/components/schemas/OtherLoanFundingSource'
              - $ref: '#/components/schemas/ResidentialPropertyFundingSource'
              - $ref: '#/components/schemas/SaveFundingSource'
              - $ref: '#/components/schemas/UKStudentLoanFundingSource'
        growthRate:
          type: string
          description: >-
            Can be either of CALCULATED, NONE, CPI, MEDIAN_WAGE_GROWTH,
            PROPERTY_GROWTH.
          enum:
            - CALCULATED
            - NONE
            - CPI
            - MEDIAN_WAGE_GROWTH
            - PROPERTY_GROWTH
          example: CALCULATED
        id:
          type: string
          description: The id of the resource.
          example: '1'
        maximumAbsoluteSpreadAllowed:
          type: number
          format: double
          description: Maximum absolute spread added to growth rate allowed.
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        minimumAmount:
          type: number
          description: The minimum value of the goal.
          example: 10000
          minimum: 0
        name:
          type: string
          description: The name of the resource.
          example: My resource
        priority:
          type: integer
          format: int32
          description: The priority of the goal (1 = lowest, 10 = highest).
          example: 1
        properties:
          type: object
          additionalProperties:
            type: object
            description: Properties of the resource.
            example:
              property_1: Value of property 1
              property_2: Value of property 2
          description: Properties of the resource.
          example:
            property_1: Value of property 1
            property_2: Value of property 2
        spreadOverGrowthRate:
          type: number
          format: double
          description: Define the additional spread over the defined growthRate.
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        startDate:
          type: string
          format: date-time
          description: >-
            Start date of the goal. Valid date string in simplified extended
            ISO-8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Will be respected only
            in conjuction with `startsOn` equals to `USER_DEFINED`.
          example: 2025-01-01T00:00:00.000Z
        startsOn:
          type: string
          description: Can be any of USER_DEFINED, ON_RETIREMENT, ON_DEATH.
          enum:
            - USER_DEFINED
            - ON_RETIREMENT
            - ON_DEATH
          example: USER_DEFINED
      required:
        - currency
        - frequency
        - minimumAmount
        - priority
        - startDate
    GoalInvestInABusinessDto:
      type: object
      properties:
        currency:
          type: string
          description: >-
            The currency in which the goal's value is specified. Valid currency
            code ISO-4217 from the list of supported currencies.
          example: GBP
        description:
          type: string
          description: Description of the resource.
          example: My resource's description
        desiredAmount:
          type: number
          description: The desired value of the goal.
          example: 10000
          minimum: 0
        enabled:
          type: boolean
          description: Toggle inclusion of the goal in the simulation.
          example: true
        endDate:
          type: string
          format: date-time
          description: >-
            End date of the goal. Valid date string in simplified extended
            ISO-8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Will be respected only
            in conjuction with `endsOn` equals to `USER_DEFINED`.
          example: 2026-01-01T00:00:00.000Z
        endsOn:
          type: string
          description: Can be any of USER_DEFINED, ON_RETIREMENT, ON_DEATH.
          enum:
            - USER_DEFINED
            - ON_RETIREMENT
            - ON_DEATH
          example: USER_DEFINED
        expectedDividendAmount:
          type: number
          description: Expected dividend amount.
          example: 20000
          minimum: 0
        expectedDividendGrowthRate:
          type: string
          description: >-
            Can be either of CALCULATED, NONE, CPI, MEDIAN_WAGE_GROWTH,
            PROPERTY_GROWTH.
          enum:
            - CALCULATED
            - NONE
            - CPI
            - MEDIAN_WAGE_GROWTH
            - PROPERTY_GROWTH
          example: CALCULATED
        expectedDividendSpreadOverGrowthRate:
          type: number
          format: double
          description: >-
            Define the additional spread over the defined growthRate of the
            dividend income.
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        expectedDividendStartDate:
          type: string
          format: date-time
          description: Expected dividend start date.
          example: 2025-01-01T00:00:00.000Z
        expectedDividendTaxable:
          type: boolean
          description: Whether expected dividends are taxable or not.
          example: true
        expectedExitAmount:
          type: number
          description: Expected exit amount.
          example: 20000
          minimum: 0
        expectedExitGrowthRate:
          type: string
          description: >-
            Can be either of CALCULATED, NONE, CPI, MEDIAN_WAGE_GROWTH,
            PROPERTY_GROWTH.
          enum:
            - CALCULATED
            - NONE
            - CPI
            - MEDIAN_WAGE_GROWTH
            - PROPERTY_GROWTH
          example: CALCULATED
        expectedExitSpreadOverGrowthRate:
          type: number
          format: double
          description: '0.0'
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        expectedExitTaxable:
          type: boolean
          description: Whether expected exit is taxable or not.
          example: true
        frequency:
          type: string
          description: The frequency of the goal.
          enum:
            - UNSPECIFIED
            - ONE_OFF
            - DAILY
            - WEEKLY
            - MONTHLY
            - QUARTERLY
            - SEMI_ANNUALLY
            - ANNUALLY
          example: ONE_OFF
        frequencyMultiplier:
          type: integer
          format: int32
          description: The frequency multiplier.
          example: 1
          minimum: 1
        fundingSources:
          type: array
          description: A list of funding sources.
          example:
            - class: LiquidAssetsFundingSource
              description: Liquid assets funding source
              name: Liquid assets
              wrappers:
                - GENERAL_INVESTMENT_ACCOUNT
                - TAX_ADVANTAGED
                - PENSION
          items:
            oneOf:
              - $ref: '#/components/schemas/BankOfMumAndDadFundingSource'
              - $ref: >-
                  #/components/schemas/FutureInvestmentPropertyAssetFundingSource
              - $ref: >-
                  #/components/schemas/FutureResidentialPropertyAssetFundingSource
              - $ref: '#/components/schemas/InvestmentPropertyFundingSource'
              - $ref: '#/components/schemas/LiquidAssetsFundingSource'
              - $ref: '#/components/schemas/LiquidAssetsNoIncomeFundingSource'
              - $ref: '#/components/schemas/MortgageFundingSource'
              - $ref: '#/components/schemas/OtherLoanFundingSource'
              - $ref: '#/components/schemas/ResidentialPropertyFundingSource'
              - $ref: '#/components/schemas/SaveFundingSource'
              - $ref: '#/components/schemas/UKStudentLoanFundingSource'
        growthRate:
          type: string
          description: >-
            Can be either of CALCULATED, NONE, CPI, MEDIAN_WAGE_GROWTH,
            PROPERTY_GROWTH.
          enum:
            - CALCULATED
            - NONE
            - CPI
            - MEDIAN_WAGE_GROWTH
            - PROPERTY_GROWTH
          example: CALCULATED
        id:
          type: string
          description: The id of the resource.
          example: '1'
        maximumAbsoluteSpreadAllowed:
          type: number
          format: double
          description: Maximum absolute spread added to growth rate allowed.
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        minimumAmount:
          type: number
          description: The minimum value of the goal.
          example: 10000
          minimum: 0
        name:
          type: string
          description: The name of the resource.
          example: My resource
        priority:
          type: integer
          format: int32
          description: The priority of the goal (1 = lowest, 10 = highest).
          example: 1
        properties:
          type: object
          additionalProperties:
            type: object
            description: Properties of the resource.
            example:
              property_1: Value of property 1
              property_2: Value of property 2
          description: Properties of the resource.
          example:
            property_1: Value of property 1
            property_2: Value of property 2
        recurringAmount:
          type: number
          description: The recurring expense amount of the goal.
          example: 20000
          minimum: 0
        recurringStartDate:
          type: string
          format: date-time
          description: Start date of the recurring expense.
          example: 2025-01-01T00:00:00.000Z
        spreadOverGrowthRate:
          type: number
          format: double
          description: Define the additional spread over the defined growthRate.
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        startDate:
          type: string
          format: date-time
          description: >-
            Start date of the goal. Valid date string in simplified extended
            ISO-8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Will be respected only
            in conjuction with `startsOn` equals to `USER_DEFINED`.
          example: 2025-01-01T00:00:00.000Z
        startsOn:
          type: string
          description: Can be any of USER_DEFINED, ON_RETIREMENT, ON_DEATH.
          enum:
            - USER_DEFINED
            - ON_RETIREMENT
            - ON_DEATH
          example: USER_DEFINED
      required:
        - currency
        - expectedDividendAmount
        - expectedDividendStartDate
        - expectedExitAmount
        - frequency
        - minimumAmount
        - priority
        - recurringAmount
        - startDate
    GoalMoveOutDto:
      type: object
      properties:
        currency:
          type: string
          description: >-
            The currency in which the goal's value is specified. Valid currency
            code ISO-4217 from the list of supported currencies.
          example: GBP
        description:
          type: string
          description: Description of the resource.
          example: My resource's description
        desiredAmount:
          type: number
          description: The desired value of the goal.
          example: 10000
          minimum: 0
        enabled:
          type: boolean
          description: Toggle inclusion of the goal in the simulation.
          example: true
        endDate:
          type: string
          format: date-time
          description: >-
            End date of the goal. Valid date string in simplified extended
            ISO-8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Will be respected only
            in conjuction with `endsOn` equals to `USER_DEFINED`.
          example: 2026-01-01T00:00:00.000Z
        endsOn:
          type: string
          description: Can be any of USER_DEFINED, ON_RETIREMENT, ON_DEATH.
          enum:
            - USER_DEFINED
            - ON_RETIREMENT
            - ON_DEATH
          example: USER_DEFINED
        frequency:
          type: string
          description: The frequency of the goal.
          enum:
            - UNSPECIFIED
            - ONE_OFF
            - DAILY
            - WEEKLY
            - MONTHLY
            - QUARTERLY
            - SEMI_ANNUALLY
            - ANNUALLY
          example: ONE_OFF
        fundingSources:
          type: array
          description: A list of funding sources.
          example:
            - class: LiquidAssetsFundingSource
              description: Liquid assets funding source
              name: Liquid assets
              wrappers:
                - GENERAL_INVESTMENT_ACCOUNT
                - TAX_ADVANTAGED
                - PENSION
          items:
            oneOf:
              - $ref: '#/components/schemas/BankOfMumAndDadFundingSource'
              - $ref: >-
                  #/components/schemas/FutureInvestmentPropertyAssetFundingSource
              - $ref: >-
                  #/components/schemas/FutureResidentialPropertyAssetFundingSource
              - $ref: '#/components/schemas/InvestmentPropertyFundingSource'
              - $ref: '#/components/schemas/LiquidAssetsFundingSource'
              - $ref: '#/components/schemas/LiquidAssetsNoIncomeFundingSource'
              - $ref: '#/components/schemas/MortgageFundingSource'
              - $ref: '#/components/schemas/OtherLoanFundingSource'
              - $ref: '#/components/schemas/ResidentialPropertyFundingSource'
              - $ref: '#/components/schemas/SaveFundingSource'
              - $ref: '#/components/schemas/UKStudentLoanFundingSource'
        growthRate:
          type: string
          description: >-
            Can be either of CALCULATED, NONE, CPI, MEDIAN_WAGE_GROWTH,
            PROPERTY_GROWTH.
          enum:
            - CALCULATED
            - NONE
            - CPI
            - MEDIAN_WAGE_GROWTH
            - PROPERTY_GROWTH
          example: CALCULATED
        id:
          type: string
          description: The id of the resource.
          example: '1'
        maximumAbsoluteSpreadAllowed:
          type: number
          format: double
          description: Maximum absolute spread added to growth rate allowed.
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        minimumAmount:
          type: number
          description: The minimum value of the goal.
          example: 10000
          minimum: 0
        name:
          type: string
          description: The name of the resource.
          example: My resource
        priority:
          type: integer
          format: int32
          description: The priority of the goal (1 = lowest, 10 = highest).
          example: 1
        properties:
          type: object
          additionalProperties:
            type: object
            description: Properties of the resource.
            example:
              property_1: Value of property 1
              property_2: Value of property 2
          description: Properties of the resource.
          example:
            property_1: Value of property 1
            property_2: Value of property 2
        spreadOverGrowthRate:
          type: number
          format: double
          description: Define the additional spread over the defined growthRate.
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        startDate:
          type: string
          format: date-time
          description: >-
            Start date of the goal. Valid date string in simplified extended
            ISO-8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Will be respected only
            in conjuction with `startsOn` equals to `USER_DEFINED`.
          example: 2025-01-01T00:00:00.000Z
        startsOn:
          type: string
          description: Can be any of USER_DEFINED, ON_RETIREMENT, ON_DEATH.
          enum:
            - USER_DEFINED
            - ON_RETIREMENT
            - ON_DEATH
          example: USER_DEFINED
        survivorAdjustmentPercentage:
          type: number
          format: double
          description: Percentage of expenditure for the surviving partner.
          example: 0.5
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
      required:
        - currency
        - frequency
        - minimumAmount
        - priority
        - startDate
    GoalRecurringUserDefinedDto:
      type: object
      properties:
        currency:
          type: string
          description: >-
            The currency in which the goal's value is specified. Valid currency
            code ISO-4217 from the list of supported currencies.
          example: GBP
        description:
          type: string
          description: Description of the resource.
          example: My resource's description
        desiredAmount:
          type: number
          description: The desired value of the goal.
          example: 10000
          minimum: 0
        enabled:
          type: boolean
          description: Toggle inclusion of the goal in the simulation.
          example: true
        endDate:
          type: string
          format: date-time
          description: >-
            End date of the goal. Valid date string in simplified extended
            ISO-8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Will be respected only
            in conjuction with `endsOn` equals to `USER_DEFINED`.
          example: 2026-01-01T00:00:00.000Z
        endsOn:
          type: string
          description: Can be any of USER_DEFINED, ON_RETIREMENT, ON_DEATH.
          enum:
            - USER_DEFINED
            - ON_RETIREMENT
            - ON_DEATH
          example: USER_DEFINED
        frequency:
          type: string
          description: The frequency of the goal.
          enum:
            - UNSPECIFIED
            - ONE_OFF
            - DAILY
            - WEEKLY
            - MONTHLY
            - QUARTERLY
            - SEMI_ANNUALLY
            - ANNUALLY
          example: ONE_OFF
        frequencyMultiplier:
          type: integer
          format: int32
          description: The frequency multiplier.
          example: 1
          minimum: 1
        fundingSources:
          type: array
          description: A list of funding sources.
          example:
            - class: LiquidAssetsFundingSource
              description: Liquid assets funding source
              name: Liquid assets
              wrappers:
                - GENERAL_INVESTMENT_ACCOUNT
                - TAX_ADVANTAGED
                - PENSION
          items:
            oneOf:
              - $ref: '#/components/schemas/BankOfMumAndDadFundingSource'
              - $ref: >-
                  #/components/schemas/FutureInvestmentPropertyAssetFundingSource
              - $ref: >-
                  #/components/schemas/FutureResidentialPropertyAssetFundingSource
              - $ref: '#/components/schemas/InvestmentPropertyFundingSource'
              - $ref: '#/components/schemas/LiquidAssetsFundingSource'
              - $ref: '#/components/schemas/LiquidAssetsNoIncomeFundingSource'
              - $ref: '#/components/schemas/MortgageFundingSource'
              - $ref: '#/components/schemas/OtherLoanFundingSource'
              - $ref: '#/components/schemas/ResidentialPropertyFundingSource'
              - $ref: '#/components/schemas/SaveFundingSource'
              - $ref: '#/components/schemas/UKStudentLoanFundingSource'
        growthRate:
          type: string
          description: >-
            Can be either of CALCULATED, NONE, CPI, MEDIAN_WAGE_GROWTH,
            PROPERTY_GROWTH.
          enum:
            - CALCULATED
            - NONE
            - CPI
            - MEDIAN_WAGE_GROWTH
            - PROPERTY_GROWTH
          example: CALCULATED
        id:
          type: string
          description: The id of the resource.
          example: '1'
        maximumAbsoluteSpreadAllowed:
          type: number
          format: double
          description: Maximum absolute spread added to growth rate allowed.
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        minimumAmount:
          type: number
          description: The minimum value of the goal.
          example: 10000
          minimum: 0
        name:
          type: string
          description: The name of the resource.
          example: My resource
        priority:
          type: integer
          format: int32
          description: The priority of the goal (1 = lowest, 10 = highest).
          example: 1
        properties:
          type: object
          additionalProperties:
            type: object
            description: Properties of the resource.
            example:
              property_1: Value of property 1
              property_2: Value of property 2
          description: Properties of the resource.
          example:
            property_1: Value of property 1
            property_2: Value of property 2
        recurringAmount:
          type: number
          description: The recurring expense amount of the goal.
          example: 20000
          minimum: 0
        spreadOverGrowthRate:
          type: number
          format: double
          description: Define the additional spread over the defined growthRate.
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        startDate:
          type: string
          format: date-time
          description: >-
            Start date of the goal. Valid date string in simplified extended
            ISO-8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Will be respected only
            in conjuction with `startsOn` equals to `USER_DEFINED`.
          example: 2025-01-01T00:00:00.000Z
        startsOn:
          type: string
          description: Can be any of USER_DEFINED, ON_RETIREMENT, ON_DEATH.
          enum:
            - USER_DEFINED
            - ON_RETIREMENT
            - ON_DEATH
          example: USER_DEFINED
      required:
        - currency
        - frequency
        - minimumAmount
        - priority
        - recurringAmount
        - startDate
    GoalRelocateDto:
      type: object
      properties:
        currency:
          type: string
          description: >-
            The currency in which the goal's value is specified. Valid currency
            code ISO-4217 from the list of supported currencies.
          example: GBP
        description:
          type: string
          description: Description of the resource.
          example: My resource's description
        desiredAmount:
          type: number
          description: The desired value of the goal.
          example: 10000
          minimum: 0
        enabled:
          type: boolean
          description: Toggle inclusion of the goal in the simulation.
          example: true
        endDate:
          type: string
          format: date-time
          description: >-
            End date of the goal. Valid date string in simplified extended
            ISO-8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Will be respected only
            in conjuction with `endsOn` equals to `USER_DEFINED`.
          example: 2026-01-01T00:00:00.000Z
        endsOn:
          type: string
          description: Can be any of USER_DEFINED, ON_RETIREMENT, ON_DEATH.
          enum:
            - USER_DEFINED
            - ON_RETIREMENT
            - ON_DEATH
          example: USER_DEFINED
        expectedAnnualEarnedIncome:
          type: number
          description: >-
            The desired earned income during relocation. This will override the
            'percentageOfIncome'.
          example: 40000
          minimum: 0
        expectedAnnualLivingExpenses:
          type: number
          description: >-
            The desired spend during relocation. This will override the
            'percentageOfExpenditure'.
          example: 30000
          minimum: 0
        frequency:
          type: string
          description: The frequency of the goal.
          enum:
            - UNSPECIFIED
            - ONE_OFF
            - DAILY
            - WEEKLY
            - MONTHLY
            - QUARTERLY
            - SEMI_ANNUALLY
            - ANNUALLY
          example: ONE_OFF
        fundingSources:
          type: array
          description: A list of funding sources.
          example:
            - class: LiquidAssetsFundingSource
              description: Liquid assets funding source
              name: Liquid assets
              wrappers:
                - GENERAL_INVESTMENT_ACCOUNT
                - TAX_ADVANTAGED
                - PENSION
          items:
            oneOf:
              - $ref: '#/components/schemas/BankOfMumAndDadFundingSource'
              - $ref: >-
                  #/components/schemas/FutureInvestmentPropertyAssetFundingSource
              - $ref: >-
                  #/components/schemas/FutureResidentialPropertyAssetFundingSource
              - $ref: '#/components/schemas/InvestmentPropertyFundingSource'
              - $ref: '#/components/schemas/LiquidAssetsFundingSource'
              - $ref: '#/components/schemas/LiquidAssetsNoIncomeFundingSource'
              - $ref: '#/components/schemas/MortgageFundingSource'
              - $ref: '#/components/schemas/OtherLoanFundingSource'
              - $ref: '#/components/schemas/ResidentialPropertyFundingSource'
              - $ref: '#/components/schemas/SaveFundingSource'
              - $ref: '#/components/schemas/UKStudentLoanFundingSource'
        growthRate:
          type: string
          description: >-
            Can be either of CALCULATED, NONE, CPI, MEDIAN_WAGE_GROWTH,
            PROPERTY_GROWTH.
          enum:
            - CALCULATED
            - NONE
            - CPI
            - MEDIAN_WAGE_GROWTH
            - PROPERTY_GROWTH
          example: CALCULATED
        id:
          type: string
          description: The id of the resource.
          example: '1'
        maximumAbsoluteSpreadAllowed:
          type: number
          format: double
          description: Maximum absolute spread added to growth rate allowed.
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        minimumAmount:
          type: number
          description: The minimum value of the goal.
          example: 10000
          minimum: 0
        name:
          type: string
          description: The name of the resource.
          example: My resource
        percentageOfExpenditure:
          type: number
          format: double
          description: >-
            The desired spend during relocation. The expenses will get to
            previous levels when relocation is over.
          example: 0.6
          exclusiveMinimum: true
          minimum: 0
        percentageOfIncome:
          type: number
          format: double
          description: >-
            The desired earned income adjustment during relocation. The income
            will get to previous levels when relocation is over.
          example: 0.8
          exclusiveMinimum: true
          minimum: 0
        priority:
          type: integer
          format: int32
          description: The priority of the goal (1 = lowest, 10 = highest).
          example: 1
        properties:
          type: object
          additionalProperties:
            type: object
            description: Properties of the resource.
            example:
              property_1: Value of property 1
              property_2: Value of property 2
          description: Properties of the resource.
          example:
            property_1: Value of property 1
            property_2: Value of property 2
        spreadOverGrowthRate:
          type: number
          format: double
          description: Define the additional spread over the defined growthRate.
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        startDate:
          type: string
          format: date-time
          description: >-
            Start date of the goal. Valid date string in simplified extended
            ISO-8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Will be respected only
            in conjuction with `startsOn` equals to `USER_DEFINED`.
          example: 2025-01-01T00:00:00.000Z
        startsOn:
          type: string
          description: Can be any of USER_DEFINED, ON_RETIREMENT, ON_DEATH.
          enum:
            - USER_DEFINED
            - ON_RETIREMENT
            - ON_DEATH
          example: USER_DEFINED
      required:
        - currency
        - frequency
        - minimumAmount
        - priority
        - startDate
    GoalRetirementDto:
      type: object
      properties:
        currency:
          type: string
          description: >-
            The currency in which the goal's value is specified. Valid currency
            code ISO-4217 from the list of supported currencies.
          example: GBP
        description:
          type: string
          description: Description of the resource.
          example: My resource's description
        desiredAmount:
          type: number
          description: The desired value of the goal.
          example: 10000
          minimum: 0
        enabled:
          type: boolean
          description: Toggle inclusion of the goal in the simulation.
          example: true
        endDate:
          type: string
          format: date-time
          description: >-
            End date of the goal. Valid date string in simplified extended
            ISO-8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Will be respected only
            in conjuction with `endsOn` equals to `USER_DEFINED`.
          example: 2026-01-01T00:00:00.000Z
        endsOn:
          type: string
          description: Can be any of USER_DEFINED, ON_RETIREMENT, ON_DEATH.
          enum:
            - USER_DEFINED
            - ON_RETIREMENT
            - ON_DEATH
          example: USER_DEFINED
        frequency:
          type: string
          description: The frequency of the goal.
          enum:
            - UNSPECIFIED
            - ONE_OFF
            - DAILY
            - WEEKLY
            - MONTHLY
            - QUARTERLY
            - SEMI_ANNUALLY
            - ANNUALLY
          example: ONE_OFF
        fundingSources:
          type: array
          description: A list of funding sources.
          example:
            - class: LiquidAssetsFundingSource
              description: Liquid assets funding source
              name: Liquid assets
              wrappers:
                - GENERAL_INVESTMENT_ACCOUNT
                - TAX_ADVANTAGED
                - PENSION
          items:
            oneOf:
              - $ref: '#/components/schemas/BankOfMumAndDadFundingSource'
              - $ref: >-
                  #/components/schemas/FutureInvestmentPropertyAssetFundingSource
              - $ref: >-
                  #/components/schemas/FutureResidentialPropertyAssetFundingSource
              - $ref: '#/components/schemas/InvestmentPropertyFundingSource'
              - $ref: '#/components/schemas/LiquidAssetsFundingSource'
              - $ref: '#/components/schemas/LiquidAssetsNoIncomeFundingSource'
              - $ref: '#/components/schemas/MortgageFundingSource'
              - $ref: '#/components/schemas/OtherLoanFundingSource'
              - $ref: '#/components/schemas/ResidentialPropertyFundingSource'
              - $ref: '#/components/schemas/SaveFundingSource'
              - $ref: '#/components/schemas/UKStudentLoanFundingSource'
        growthRate:
          type: string
          description: >-
            Can be either of CALCULATED, NONE, CPI, MEDIAN_WAGE_GROWTH,
            PROPERTY_GROWTH.
          enum:
            - CALCULATED
            - NONE
            - CPI
            - MEDIAN_WAGE_GROWTH
            - PROPERTY_GROWTH
          example: CALCULATED
        id:
          type: string
          description: The id of the resource.
          example: '1'
        maximumAbsoluteSpreadAllowed:
          type: number
          format: double
          description: Maximum absolute spread added to growth rate allowed.
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        minimumAmount:
          type: number
          description: The minimum value of the goal.
          example: 10000
          minimum: 0
        name:
          type: string
          description: The name of the resource.
          example: My resource
        percentageOfPreRetirementSpendAfterFirst10Years:
          type: number
          format: double
          description: >-
            The desired spend after 10 years of retirement expressed as a
            percentage of pre retirement spend.
          example: 0.6
          exclusiveMinimum: false
          minimum: 0
        percentageOfPreRetirementSpendFirst10Years:
          type: number
          format: double
          description: >-
            The desired spend in the first 10 years after retirement expressed
            as a percentage of pre retirement spend.
          example: 0.9
          exclusiveMinimum: false
          minimum: 0
        percentageOfSurvivorExpenditureSpend:
          type: number
          format: double
          description: >-
            The desired spend after retirement in the situation when the partner
            has died, expressed as a percentage of pre retirement spend.
          example: 0.6
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        priority:
          type: integer
          format: int32
          description: The priority of the goal (1 = lowest, 10 = highest).
          example: 1
        properties:
          type: object
          additionalProperties:
            type: object
            description: Properties of the resource.
            example:
              property_1: Value of property 1
              property_2: Value of property 2
          description: Properties of the resource.
          example:
            property_1: Value of property 1
            property_2: Value of property 2
        spreadOverGrowthRate:
          type: number
          format: double
          description: Define the additional spread over the defined growthRate.
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        startDate:
          type: string
          format: date-time
          description: >-
            Start date of the goal. Valid date string in simplified extended
            ISO-8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Will be respected only
            in conjuction with `startsOn` equals to `USER_DEFINED`.
          example: 2025-01-01T00:00:00.000Z
        startsOn:
          type: string
          description: Can be any of USER_DEFINED, ON_RETIREMENT, ON_DEATH.
          enum:
            - USER_DEFINED
            - ON_RETIREMENT
            - ON_DEATH
          example: USER_DEFINED
        tradeDownDate:
          type: string
          format: date-time
          description: Date in which the property should be traded down.
          example: 2050-01-01T00:00:00.000Z
        tradeDownHouse:
          type: boolean
          description: >-
            True if the the current house is to be traded for a cheaper one to
            fund retirement.
          example: true
        tradeDownNewHousePercentage:
          type: number
          format: double
          description: >-
            The value of the new house to be acquired after retirement,
            expressed as a percentage of the property the household members live
            in.
          example: 0.75
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
      required:
        - currency
        - frequency
        - minimumAmount
        - percentageOfPreRetirementSpendAfterFirst10Years
        - percentageOfPreRetirementSpendFirst10Years
        - percentageOfSurvivorExpenditureSpend
        - priority
        - startDate
        - tradeDownHouse
    GoalSabbaticalDto:
      type: object
      properties:
        currency:
          type: string
          description: >-
            The currency in which the goal's value is specified. Valid currency
            code ISO-4217 from the list of supported currencies.
          example: GBP
        description:
          type: string
          description: Description of the resource.
          example: My resource's description
        desiredAmount:
          type: number
          description: The desired value of the goal.
          example: 10000
          minimum: 0
        enabled:
          type: boolean
          description: Toggle inclusion of the goal in the simulation.
          example: true
        endDate:
          type: string
          format: date-time
          description: >-
            End date of the goal. Valid date string in simplified extended
            ISO-8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Will be respected only
            in conjuction with `endsOn` equals to `USER_DEFINED`.
          example: 2026-01-01T00:00:00.000Z
        endsOn:
          type: string
          description: Can be any of USER_DEFINED, ON_RETIREMENT, ON_DEATH.
          enum:
            - USER_DEFINED
            - ON_RETIREMENT
            - ON_DEATH
          example: USER_DEFINED
        frequency:
          type: string
          description: The frequency of the goal.
          enum:
            - UNSPECIFIED
            - ONE_OFF
            - DAILY
            - WEEKLY
            - MONTHLY
            - QUARTERLY
            - SEMI_ANNUALLY
            - ANNUALLY
          example: ONE_OFF
        fundingSources:
          type: array
          description: A list of funding sources.
          example:
            - class: LiquidAssetsFundingSource
              description: Liquid assets funding source
              name: Liquid assets
              wrappers:
                - GENERAL_INVESTMENT_ACCOUNT
                - TAX_ADVANTAGED
                - PENSION
          items:
            oneOf:
              - $ref: '#/components/schemas/BankOfMumAndDadFundingSource'
              - $ref: >-
                  #/components/schemas/FutureInvestmentPropertyAssetFundingSource
              - $ref: >-
                  #/components/schemas/FutureResidentialPropertyAssetFundingSource
              - $ref: '#/components/schemas/InvestmentPropertyFundingSource'
              - $ref: '#/components/schemas/LiquidAssetsFundingSource'
              - $ref: '#/components/schemas/LiquidAssetsNoIncomeFundingSource'
              - $ref: '#/components/schemas/MortgageFundingSource'
              - $ref: '#/components/schemas/OtherLoanFundingSource'
              - $ref: '#/components/schemas/ResidentialPropertyFundingSource'
              - $ref: '#/components/schemas/SaveFundingSource'
              - $ref: '#/components/schemas/UKStudentLoanFundingSource'
        growthRate:
          type: string
          description: >-
            Can be either of CALCULATED, NONE, CPI, MEDIAN_WAGE_GROWTH,
            PROPERTY_GROWTH.
          enum:
            - CALCULATED
            - NONE
            - CPI
            - MEDIAN_WAGE_GROWTH
            - PROPERTY_GROWTH
          example: CALCULATED
        id:
          type: string
          description: The id of the resource.
          example: '1'
        maximumAbsoluteSpreadAllowed:
          type: number
          format: double
          description: Maximum absolute spread added to growth rate allowed.
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        minimumAmount:
          type: number
          description: The minimum value of the goal.
          example: 10000
          minimum: 0
        name:
          type: string
          description: The name of the resource.
          example: My resource
        percentageOfExpenditure:
          type: number
          format: double
          description: >-
            The desired spend during sabbatical break. The expenses will get to
            previous levels when sabbatical is over.
          example: 0.6
          exclusiveMinimum: true
          minimum: 0
        percentageOfIncome:
          type: number
          format: double
          description: >-
            The desired earned income adjustment during sabbatical break. The
            income will get to previous levels when sabbatical is over.
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        priority:
          type: integer
          format: int32
          description: The priority of the goal (1 = lowest, 10 = highest).
          example: 1
        properties:
          type: object
          additionalProperties:
            type: object
            description: Properties of the resource.
            example:
              property_1: Value of property 1
              property_2: Value of property 2
          description: Properties of the resource.
          example:
            property_1: Value of property 1
            property_2: Value of property 2
        spreadOverGrowthRate:
          type: number
          format: double
          description: Define the additional spread over the defined growthRate.
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        startDate:
          type: string
          format: date-time
          description: >-
            Start date of the goal. Valid date string in simplified extended
            ISO-8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Will be respected only
            in conjuction with `startsOn` equals to `USER_DEFINED`.
          example: 2025-01-01T00:00:00.000Z
        startsOn:
          type: string
          description: Can be any of USER_DEFINED, ON_RETIREMENT, ON_DEATH.
          enum:
            - USER_DEFINED
            - ON_RETIREMENT
            - ON_DEATH
          example: USER_DEFINED
      required:
        - currency
        - frequency
        - minimumAmount
        - percentageOfExpenditure
        - priority
        - startDate
    GoalTravelDto:
      type: object
      properties:
        currency:
          type: string
          description: >-
            The currency in which the goal's value is specified. Valid currency
            code ISO-4217 from the list of supported currencies.
          example: GBP
        description:
          type: string
          description: Description of the resource.
          example: My resource's description
        desiredAmount:
          type: number
          description: The desired value of the goal.
          example: 10000
          minimum: 0
        enabled:
          type: boolean
          description: Toggle inclusion of the goal in the simulation.
          example: true
        endDate:
          type: string
          format: date-time
          description: >-
            End date of the goal. Valid date string in simplified extended
            ISO-8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Will be respected only
            in conjuction with `endsOn` equals to `USER_DEFINED`.
          example: 2026-01-01T00:00:00.000Z
        endsOn:
          type: string
          description: Can be any of USER_DEFINED, ON_RETIREMENT, ON_DEATH.
          enum:
            - USER_DEFINED
            - ON_RETIREMENT
            - ON_DEATH
          example: USER_DEFINED
        frequency:
          type: string
          description: The frequency of the goal.
          enum:
            - UNSPECIFIED
            - ONE_OFF
            - DAILY
            - WEEKLY
            - MONTHLY
            - QUARTERLY
            - SEMI_ANNUALLY
            - ANNUALLY
          example: ONE_OFF
        fundingSources:
          type: array
          description: A list of funding sources.
          example:
            - class: LiquidAssetsFundingSource
              description: Liquid assets funding source
              name: Liquid assets
              wrappers:
                - GENERAL_INVESTMENT_ACCOUNT
                - TAX_ADVANTAGED
                - PENSION
          items:
            oneOf:
              - $ref: '#/components/schemas/BankOfMumAndDadFundingSource'
              - $ref: >-
                  #/components/schemas/FutureInvestmentPropertyAssetFundingSource
              - $ref: >-
                  #/components/schemas/FutureResidentialPropertyAssetFundingSource
              - $ref: '#/components/schemas/InvestmentPropertyFundingSource'
              - $ref: '#/components/schemas/LiquidAssetsFundingSource'
              - $ref: '#/components/schemas/LiquidAssetsNoIncomeFundingSource'
              - $ref: '#/components/schemas/MortgageFundingSource'
              - $ref: '#/components/schemas/OtherLoanFundingSource'
              - $ref: '#/components/schemas/ResidentialPropertyFundingSource'
              - $ref: '#/components/schemas/SaveFundingSource'
              - $ref: '#/components/schemas/UKStudentLoanFundingSource'
        growthRate:
          type: string
          description: >-
            Can be either of CALCULATED, NONE, CPI, MEDIAN_WAGE_GROWTH,
            PROPERTY_GROWTH.
          enum:
            - CALCULATED
            - NONE
            - CPI
            - MEDIAN_WAGE_GROWTH
            - PROPERTY_GROWTH
          example: CALCULATED
        id:
          type: string
          description: The id of the resource.
          example: '1'
        maximumAbsoluteSpreadAllowed:
          type: number
          format: double
          description: Maximum absolute spread added to growth rate allowed.
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        minimumAmount:
          type: number
          description: The minimum value of the goal.
          example: 10000
          minimum: 0
        name:
          type: string
          description: The name of the resource.
          example: My resource
        priority:
          type: integer
          format: int32
          description: The priority of the goal (1 = lowest, 10 = highest).
          example: 1
        properties:
          type: object
          additionalProperties:
            type: object
            description: Properties of the resource.
            example:
              property_1: Value of property 1
              property_2: Value of property 2
          description: Properties of the resource.
          example:
            property_1: Value of property 1
            property_2: Value of property 2
        spreadOverGrowthRate:
          type: number
          format: double
          description: Define the additional spread over the defined growthRate.
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        startDate:
          type: string
          format: date-time
          description: >-
            Start date of the goal. Valid date string in simplified extended
            ISO-8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Will be respected only
            in conjuction with `startsOn` equals to `USER_DEFINED`.
          example: 2025-01-01T00:00:00.000Z
        startsOn:
          type: string
          description: Can be any of USER_DEFINED, ON_RETIREMENT, ON_DEATH.
          enum:
            - USER_DEFINED
            - ON_RETIREMENT
            - ON_DEATH
          example: USER_DEFINED
      required:
        - currency
        - frequency
        - minimumAmount
        - priority
        - startDate
    GoalUserDefinedDto:
      type: object
      properties:
        currency:
          type: string
          description: >-
            The currency in which the goal's value is specified. Valid currency
            code ISO-4217 from the list of supported currencies.
          example: GBP
        description:
          type: string
          description: Description of the resource.
          example: My resource's description
        desiredAmount:
          type: number
          description: The desired value of the goal.
          example: 10000
          minimum: 0
        enabled:
          type: boolean
          description: Toggle inclusion of the goal in the simulation.
          example: true
        endDate:
          type: string
          format: date-time
          description: >-
            End date of the goal. Valid date string in simplified extended
            ISO-8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Will be respected only
            in conjuction with `endsOn` equals to `USER_DEFINED`.
          example: 2026-01-01T00:00:00.000Z
        endsOn:
          type: string
          description: Can be any of USER_DEFINED, ON_RETIREMENT, ON_DEATH.
          enum:
            - USER_DEFINED
            - ON_RETIREMENT
            - ON_DEATH
          example: USER_DEFINED
        frequency:
          type: string
          description: The frequency of the goal.
          enum:
            - UNSPECIFIED
            - ONE_OFF
            - DAILY
            - WEEKLY
            - MONTHLY
            - QUARTERLY
            - SEMI_ANNUALLY
            - ANNUALLY
          example: ONE_OFF
        fundingSources:
          type: array
          description: A list of funding sources.
          example:
            - class: LiquidAssetsFundingSource
              description: Liquid assets funding source
              name: Liquid assets
              wrappers:
                - GENERAL_INVESTMENT_ACCOUNT
                - TAX_ADVANTAGED
                - PENSION
          items:
            oneOf:
              - $ref: '#/components/schemas/BankOfMumAndDadFundingSource'
              - $ref: >-
                  #/components/schemas/FutureInvestmentPropertyAssetFundingSource
              - $ref: >-
                  #/components/schemas/FutureResidentialPropertyAssetFundingSource
              - $ref: '#/components/schemas/InvestmentPropertyFundingSource'
              - $ref: '#/components/schemas/LiquidAssetsFundingSource'
              - $ref: '#/components/schemas/LiquidAssetsNoIncomeFundingSource'
              - $ref: '#/components/schemas/MortgageFundingSource'
              - $ref: '#/components/schemas/OtherLoanFundingSource'
              - $ref: '#/components/schemas/ResidentialPropertyFundingSource'
              - $ref: '#/components/schemas/SaveFundingSource'
              - $ref: '#/components/schemas/UKStudentLoanFundingSource'
        growthRate:
          type: string
          description: >-
            Can be either of CALCULATED, NONE, CPI, MEDIAN_WAGE_GROWTH,
            PROPERTY_GROWTH.
          enum:
            - CALCULATED
            - NONE
            - CPI
            - MEDIAN_WAGE_GROWTH
            - PROPERTY_GROWTH
          example: CALCULATED
        id:
          type: string
          description: The id of the resource.
          example: '1'
        maximumAbsoluteSpreadAllowed:
          type: number
          format: double
          description: Maximum absolute spread added to growth rate allowed.
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        minimumAmount:
          type: number
          description: The minimum value of the goal.
          example: 10000
          minimum: 0
        name:
          type: string
          description: The name of the resource.
          example: My resource
        priority:
          type: integer
          format: int32
          description: The priority of the goal (1 = lowest, 10 = highest).
          example: 1
        properties:
          type: object
          additionalProperties:
            type: object
            description: Properties of the resource.
            example:
              property_1: Value of property 1
              property_2: Value of property 2
          description: Properties of the resource.
          example:
            property_1: Value of property 1
            property_2: Value of property 2
        spreadOverGrowthRate:
          type: number
          format: double
          description: Define the additional spread over the defined growthRate.
          example: 0
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 1
          minimum: 0
        startDate:
          type: string
          format: date-time
          description: >-
            Start date of the goal. Valid date string in simplified extended
            ISO-8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Will be respected only
            in conjuction with `startsOn` equals to `USER_DEFINED`.
          example: 2025-01-01T00:00:00.000Z
        startsOn:
          type: string
          description: Can be any of USER_DEFINED, ON_RETIREMENT, ON_DEATH.
          enum:
            - USER_DEFINED
            - ON_RETIREMENT
            - ON_DEATH
          example: USER_DEFINED
      required:
        - currency
        - frequency
        - minimumAmount
        - priority
        - startDate
    InvestmentPropertyFundingSource:
      type: object
      allOf:
        - $ref: '#/components/schemas/FundingSource'
        - type: object
          properties:
            propertyAssetId:
              type: string
              description: >-
                The id of the investment property that will be sold in order to
                fund the goal.
              example: '8'
      required:
        - propertyAssetId
    LiquidAssetsFundingSource:
      type: object
      allOf:
        - $ref: '#/components/schemas/FundingSource'
        - type: object
          properties:
            wrappers:
              type: array
              items:
                type: string
    LiquidAssetsNoIncomeFundingSource:
      type: object
      allOf:
        - $ref: '#/components/schemas/FundingSource'
        - type: object
          properties:
            wrappers:
              type: array
              items:
                type: string
    MortgageFundingSource:
      type: object
      allOf:
        - $ref: '#/components/schemas/FundingSource'
        - type: object
          properties:
            amount:
              type: number
              description: The funding source amount.
              example: 10000
              exclusiveMinimum: true
              minimum: 0
            annualInterestRate:
              type: number
              format: double
              description: The mortgage annual interest rate.
              example: 0.045
              exclusiveMaximum: false
              exclusiveMinimum: false
              maximum: 1
              minimum: 0
            currency:
              type: string
              description: >-
                The funding source currency. Valid currency code ISO-4217 from
                the list of supported currencies.
              example: GBP
            growthRate:
              type: string
              enum:
                - CALCULATED
                - NONE
                - CPI
                - MEDIAN_WAGE_GROWTH
                - PROPERTY_GROWTH
            maximumAbsoluteSpreadAllowed:
              type: number
              format: double
              exclusiveMaximum: false
              exclusiveMinimum: false
              maximum: 1
              minimum: 0
            mortgageType:
              type: string
              description: The mortgage type. Can be any of (FIXED_RATE, ADJUSTABLE_RATE).
              enum:
                - FIXED_RATE
                - ADJUSTABLE_RATE
              example: FIXED_RATE
            repaymentType:
              type: string
              description: >-
                The mortgage repayment type. Can be any of
                (PRINCIPAL_AMORTIZATION, INTEREST_ONLY_WITH_BALLOON_PAYMENT).
              enum:
                - PRINCIPAL_AMORTIZATION
                - INTEREST_ONLY_WITH_BALLOON_PAYMENT
              example: PRINCIPAL_AMORTIZATION
            spreadOverGrowthRate:
              type: number
              format: double
              exclusiveMaximum: false
              exclusiveMinimum: false
              maximum: 1
              minimum: 0
            termYears:
              type: integer
              format: int32
              description: The mortgage term years.
              example: 20
              minimum: 0
      required:
        - amount
        - annualInterestRate
        - currency
        - mortgageType
        - repaymentType
        - termYears
    OtherLoanFundingSource:
      type: object
      allOf:
        - $ref: '#/components/schemas/FundingSource'
        - type: object
          properties:
            amount:
              type: number
              description: The funding source amount.
              example: 10000
              exclusiveMinimum: true
              minimum: 0
            annualInterestRate:
              type: number
              format: double
              description: The loan annual interest rate.
              example: 0.045
              exclusiveMaximum: false
              exclusiveMinimum: false
              maximum: 1
              minimum: 0
            currency:
              type: string
              description: The funding source amount.
              example: '10000'
            growthRate:
              type: string
              enum:
                - CALCULATED
                - NONE
                - CPI
                - MEDIAN_WAGE_GROWTH
                - PROPERTY_GROWTH
            maximumAbsoluteSpreadAllowed:
              type: number
              format: double
              exclusiveMaximum: false
              exclusiveMinimum: false
              maximum: 1
              minimum: 0
            repaymentType:
              type: string
              description: >-
                The loan repayment type. Can be any of (PRINCIPAL_AMORTIZATION,
                INTEREST_ONLY_WITH_BALLOON_PAYMENT).
              enum:
                - PRINCIPAL_AMORTIZATION
                - INTEREST_ONLY_WITH_BALLOON_PAYMENT
              example: PRINCIPAL_AMORTIZATION
            spreadOverGrowthRate:
              type: number
              format: double
              exclusiveMaximum: false
              exclusiveMinimum: false
              maximum: 1
              minimum: 0
            termYears:
              type: integer
              format: int32
              description: The loan term years.
              example: 20
              minimum: 0
      required:
        - amount
        - annualInterestRate
        - currency
        - repaymentType
        - termYears
    PageGoalBuyACarDto:
      type: object
      properties:
        content:
          type: array
          items:
            $ref: '#/components/schemas/GoalBuyACarDto'
        empty:
          type: boolean
        first:
          type: boolean
        last:
          type: boolean
        number:
          type: integer
          format: int32
        numberOfElements:
          type: integer
          format: int32
        pageable:
          $ref: '#/components/schemas/PageableObject'
        size:
          type: integer
          format: int32
        sort:
          $ref: '#/components/schemas/SortObject'
        totalElements:
          type: integer
          format: int64
        totalPages:
          type: integer
          format: int32
    PageGoalBuyAHouseDto:
      type: object
      properties:
        content:
          type: array
          items:
            $ref: '#/components/schemas/GoalBuyAHouseDto'
        empty:
          type: boolean
        first:
          type: boolean
        last:
          type: boolean
        number:
          type: integer
          format: int32
        numberOfElements:
          type: integer
          format: int32
        pageable:
          $ref: '#/components/schemas/PageableObject'
        size:
          type: integer
          format: int32
        sort:
          $ref: '#/components/schemas/SortObject'
        totalElements:
          type: integer
          format: int64
        totalPages:
          type: integer
          format: int32
    PageGoalBuyToLetDto:
      type: object
      properties:
        content:
          type: array
          items:
            $ref: '#/components/schemas/GoalBuyToLetDto'
        empty:
          type: boolean
        first:
          type: boolean
        last:
          type: boolean
        number:
          type: integer
          format: int32
        numberOfElements:
          type: integer
          format: int32
        pageable:
          $ref: '#/components/schemas/PageableObject'
        size:
          type: integer
          format: int32
        sort:
          $ref: '#/components/schemas/SortObject'
        totalElements:
          type: integer
          format: int64
        totalPages:
          type: integer
          format: int32
    PageGoalDto:
      type: object
      properties:
        content:
          type: array
          items:
            $ref: '#/components/schemas/GoalDto'
        empty:
          type: boolean
        first:
          type: boolean
        last:
          type: boolean
        number:
          type: integer
          format: int32
        numberOfElements:
          type: integer
          format: int32
        pageable:
          $ref: '#/components/schemas/PageableObject'
        size:
          type: integer
          format: int32
        sort:
          $ref: '#/components/schemas/SortObject'
        totalElements:
          type: integer
          format: int64
        totalPages:
          type: integer
          format: int32
    PageGoalEliminateDebtDto:
      type: object
      properties:
        content:
          type: array
          items:
            $ref: '#/components/schemas/GoalEliminateDebtDto'
        empty:
          type: boolean
        first:
          type: boolean
        last:
          type: boolean
        number:
          type: integer
          format: int32
        numberOfElements:
          type: integer
          format: int32
        pageable:
          $ref: '#/components/schemas/PageableObject'
        size:
          type: integer
          format: int32
        sort:
          $ref: '#/components/schemas/SortObject'
        totalElements:
          type: integer
          format: int64
        totalPages:
          type: integer
          format: int32
    PageGoalGetMarriedDto:
      type: object
      properties:
        content:
          type: array
          items:
            $ref: '#/components/schemas/GoalGetMarriedDto'
        empty:
          type: boolean
        first:
          type: boolean
        last:
          type: boolean
        number:
          type: integer
          format: int32
        numberOfElements:
          type: integer
          format: int32
        pageable:
          $ref: '#/components/schemas/PageableObject'
        size:
          type: integer
          format: int32
        sort:
          $ref: '#/components/schemas/SortObject'
        totalElements:
          type: integer
          format: int64
        totalPages:
          type: integer
          format: int32
    PageGoalGoToSchoolDto:
      type: object
      properties:
        content:
          type: array
          items:
            $ref: '#/components/schemas/GoalGoToSchoolDto'
        empty:
          type: boolean
        first:
          type: boolean
        last:
          type: boolean
        number:
          type: integer
          format: int32
        numberOfElements:
          type: integer
          format: int32
        pageable:
          $ref: '#/components/schemas/PageableObject'
        size:
          type: integer
          format: int32
        sort:
          $ref: '#/components/schemas/SortObject'
        totalElements:
          type: integer
          format: int64
        totalPages:
          type: integer
          format: int32
    PageGoalGrowMyWealthDto:
      type: object
      properties:
        content:
          type: array
          items:
            $ref: '#/components/schemas/GoalGrowMyWealthDto'
        empty:
          type: boolean
        first:
          type: boolean
        last:
          type: boolean
        number:
          type: integer
          format: int32
        numberOfElements:
          type: integer
          format: int32
        pageable:
          $ref: '#/components/schemas/PageableObject'
        size:
          type: integer
          format: int32
        sort:
          $ref: '#/components/schemas/SortObject'
        totalElements:
          type: integer
          format: int64
        totalPages:
          type: integer
          format: int32
    PageGoalHaveAChildDto:
      type: object
      properties:
        content:
          type: array
          items:
            $ref: '#/components/schemas/GoalHaveAChildDto'
        empty:
          type: boolean
        first:
          type: boolean
        last:
          type: boolean
        number:
          type: integer
          format: int32
        numberOfElements:
          type: integer
          format: int32
        pageable:
          $ref: '#/components/schemas/PageableObject'
        size:
          type: integer
          format: int32
        sort:
          $ref: '#/components/schemas/SortObject'
        totalElements:
          type: integer
          format: int64
        totalPages:
          type: integer
          format: int32
    PageGoalInvestInABusinessDto:
      type: object
      properties:
        content:
          type: array
          items:
            $ref: '#/components/schemas/GoalInvestInABusinessDto'
        empty:
          type: boolean
        first:
          type: boolean
        last:
          type: boolean
        number:
          type: integer
          format: int32
        numberOfElements:
          type: integer
          format: int32
        pageable:
          $ref: '#/components/schemas/PageableObject'
        size:
          type: integer
          format: int32
        sort:
          $ref: '#/components/schemas/SortObject'
        totalElements:
          type: integer
          format: int64
        totalPages:
          type: integer
          format: int32
    PageGoalMoveOutDto:
      type: object
      properties:
        content:
          type: array
          items:
            $ref: '#/components/schemas/GoalMoveOutDto'
        empty:
          type: boolean
        first:
          type: boolean
        last:
          type: boolean
        number:
          type: integer
          format: int32
        numberOfElements:
          type: integer
          format: int32
        pageable:
          $ref: '#/components/schemas/PageableObject'
        size:
          type: integer
          format: int32
        sort:
          $ref: '#/components/schemas/SortObject'
        totalElements:
          type: integer
          format: int64
        totalPages:
          type: integer
          format: int32
    PageGoalRecurringUserDefinedDto:
      type: object
      properties:
        content:
          type: array
          items:
            $ref: '#/components/schemas/GoalRecurringUserDefinedDto'
        empty:
          type: boolean
        first:
          type: boolean
        last:
          type: boolean
        number:
          type: integer
          format: int32
        numberOfElements:
          type: integer
          format: int32
        pageable:
          $ref: '#/components/schemas/PageableObject'
        size:
          type: integer
          format: int32
        sort:
          $ref: '#/components/schemas/SortObject'
        totalElements:
          type: integer
          format: int64
        totalPages:
          type: integer
          format: int32
    PageGoalRelocateDto:
      type: object
      properties:
        content:
          type: array
          items:
            $ref: '#/components/schemas/GoalRelocateDto'
        empty:
          type: boolean
        first:
          type: boolean
        last:
          type: boolean
        number:
          type: integer
          format: int32
        numberOfElements:
          type: integer
          format: int32
        pageable:
          $ref: '#/components/schemas/PageableObject'
        size:
          type: integer
          format: int32
        sort:
          $ref: '#/components/schemas/SortObject'
        totalElements:
          type: integer
          format: int64
        totalPages:
          type: integer
          format: int32
    PageGoalRetirementDto:
      type: object
      properties:
        content:
          type: array
          items:
            $ref: '#/components/schemas/GoalRetirementDto'
        empty:
          type: boolean
        first:
          type: boolean
        last:
          type: boolean
        number:
          type: integer
          format: int32
        numberOfElements:
          type: integer
          format: int32
        pageable:
          $ref: '#/components/schemas/PageableObject'
        size:
          type: integer
          format: int32
        sort:
          $ref: '#/components/schemas/SortObject'
        totalElements:
          type: integer
          format: int64
        totalPages:
          type: integer
          format: int32
    PageGoalSabbaticalDto:
      type: object
      properties:
        content:
          type: array
          items:
            $ref: '#/components/schemas/GoalSabbaticalDto'
        empty:
          type: boolean
        first:
          type: boolean
        last:
          type: boolean
        number:
          type: integer
          format: int32
        numberOfElements:
          type: integer
          format: int32
        pageable:
          $ref: '#/components/schemas/PageableObject'
        size:
          type: integer
          format: int32
        sort:
          $ref: '#/components/schemas/SortObject'
        totalElements:
          type: integer
          format: int64
        totalPages:
          type: integer
          format: int32
    PageGoalTravelDto:
      type: object
      properties:
        content:
          type: array
          items:
            $ref: '#/components/schemas/GoalTravelDto'
        empty:
          type: boolean
        first:
          type: boolean
        last:
          type: boolean
        number:
          type: integer
          format: int32
        numberOfElements:
          type: integer
          format: int32
        pageable:
          $ref: '#/components/schemas/PageableObject'
        size:
          type: integer
          format: int32
        sort:
          $ref: '#/components/schemas/SortObject'
        totalElements:
          type: integer
          format: int64
        totalPages:
          type: integer
          format: int32
    PageGoalUserDefinedDto:
      type: object
      properties:
        content:
          type: array
          items:
            $ref: '#/components/schemas/GoalUserDefinedDto'
        empty:
          type: boolean
        first:
          type: boolean
        last:
          type: boolean
        number:
          type: integer
          format: int32
        numberOfElements:
          type: integer
          format: int32
        pageable:
          $ref: '#/components/schemas/PageableObject'
        size:
          type: integer
          format: int32
        sort:
          $ref: '#/components/schemas/SortObject'
        totalElements:
          type: integer
          format: int64
        totalPages:
          type: integer
          format: int32
    PageableObject:
      type: object
      properties:
        offset:
          type: integer
          format: int64
        pageNumber:
          type: integer
          format: int32
        pageSize:
          type: integer
          format: int32
        paged:
          type: boolean
        sort:
          $ref: '#/components/schemas/SortObject'
        unpaged:
          type: boolean
    ResidentialPropertyFundingSource:
      type: object
      allOf:
        - $ref: '#/components/schemas/FundingSource'
        - type: object
          properties:
            propertyAssetId:
              type: string
              description: >-
                The id of the residential property that will be sold in order to
                fund the goal.
              example: '8'
      required:
        - propertyAssetId
    SaveFundingSource:
      type: object
      allOf:
        - $ref: '#/components/schemas/FundingSource'
        - type: object
          properties:
            saveInYears:
              type: integer
              format: int32
              description: >-
                The number of years for which you would like to save, in order
                to use the savings to fund the goal.
              example: 5
              minimum: 0
      required:
        - saveInYears
    SortObject:
      type: object
      properties:
        empty:
          type: boolean
        sorted:
          type: boolean
        unsorted:
          type: boolean
    UKStudentLoanFundingSource:
      type: object
      allOf:
        - $ref: '#/components/schemas/FundingSource'
        - type: object
          properties:
            amount:
              type: number
              description: The funding source amount.
              example: 10000
              exclusiveMinimum: true
              minimum: 0
            currency:
              type: string
              description: The funding source amount.
              example: '10000'
            growthRate:
              type: string
              enum:
                - CALCULATED
                - NONE
                - CPI
                - MEDIAN_WAGE_GROWTH
                - PROPERTY_GROWTH
            maximumAbsoluteSpreadAllowed:
              type: number
              format: double
              exclusiveMaximum: false
              exclusiveMinimum: false
              maximum: 1
              minimum: 0
            spreadOverGrowthRate:
              type: number
              format: double
              exclusiveMaximum: false
              exclusiveMinimum: false
              maximum: 1
              minimum: 0
      required:
        - amount
        - currency
  securitySchemes:
    authentication:
      bearerFormat: JWT
      openIdConnectUrl: https://id.envizage.me/realms/:realmId/protocol/openid-connect
      scheme: Bearer
      type: openIdConnect
