> ## Documentation Index
> Fetch the complete documentation index at: https://docs.morrowly.app/llms.txt
> Use this file to discover all available pages before exploring further.

# 전망

> 필요한 권한: `plans:read`



## OpenAPI

````yaml /openapi.json get /v1/plans/{id}/projection
openapi: 3.1.0
info:
  title: OpenAPI definition
  version: v0
servers:
  - url: https://api.morrowly.app
security:
  - token: []
paths:
  /v1/plans/{id}/projection:
    get:
      tags:
        - plans
      summary: 전망
      description: '필요한 권한: `plans:read`'
      operationId: projection
      parameters:
        - in: path
          name: id
          required: true
          schema:
            format: uuid
            type: string
      responses:
        '200':
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiResponseProjection'
          description: OK
        '401':
          description: 토큰이 없거나 틀리거나 만료됨(본문 없음)
        '403':
          description: 토큰의 권한이 모자람(본문 없음)
components:
  schemas:
    ApiResponseProjection:
      properties:
        data:
          oneOf:
            - $ref: '#/components/schemas/Projection'
            - type: 'null'
        error:
          oneOf:
            - $ref: '#/components/schemas/ErrorMessage'
            - type: 'null'
        result:
          $ref: '#/components/schemas/ResultType'
      required:
        - data
        - error
        - result
      type: object
    Projection:
      properties:
        incomes:
          items:
            $ref: '#/components/schemas/IncomeYear'
          type: array
        loanChecks:
          items:
            $ref: '#/components/schemas/LoanCheck'
          type: array
        months:
          items:
            $ref: '#/components/schemas/MonthSnapshot'
          type: array
        repeats:
          additionalProperties:
            items:
              type: string
            type: array
          type: object
        summary:
          $ref: '#/components/schemas/Summary'
        taxYears:
          items:
            $ref: '#/components/schemas/TaxYearDetail'
          type: array
        warnings:
          items:
            $ref: '#/components/schemas/PlanWarning'
          type: array
      required:
        - incomes
        - loanChecks
        - months
        - repeats
        - summary
        - taxYears
        - warnings
      type: object
    ErrorMessage:
      properties:
        code:
          type: string
        data: {}
        message:
          type: string
      required:
        - code
        - data
        - message
      type: object
    ResultType:
      enum:
        - SUCCESS
        - ERROR
      type: string
    IncomeYear:
      properties:
        dependentFails:
          type: boolean
        dependentIncome:
          format: int64
          type: integer
        financialIncome:
          format: int64
          type: integer
        owner:
          $ref: '#/components/schemas/Owner'
        privatePension:
          format: int64
          type: integer
        year:
          format: int32
          type: integer
      required:
        - dependentFails
        - dependentIncome
        - financialIncome
        - owner
        - privatePension
        - year
      type: object
    LoanCheck:
      properties:
        borrowed:
          format: int64
          type: integer
        event:
          type: string
        limit:
          $ref: '#/components/schemas/MortgageLimit'
        principal:
          format: int64
          type: integer
      required:
        - borrowed
        - event
        - limit
        - principal
      type: object
    MonthSnapshot:
      properties:
        age:
          format: int32
          type: integer
        assets:
          additionalProperties:
            format: int64
            type: integer
          type: object
        cash:
          format: int64
          type: integer
        debtPayment:
          format: int64
          type: integer
        expense:
          format: int64
          type: integer
        flows:
          $ref: '#/components/schemas/FlowBreakdown'
        income:
          format: int64
          type: integer
        liabilities:
          additionalProperties:
            format: int64
            type: integer
          type: object
        month:
          type: string
        netWorth:
          format: int64
          type: integer
        shortfall:
          type: boolean
        tax:
          format: int64
          type: integer
        taxes:
          additionalProperties:
            format: int64
            type: integer
          type: object
        totalAssets:
          format: int64
          type: integer
        totalLiabilities:
          format: int64
          type: integer
      required:
        - age
        - assets
        - cash
        - debtPayment
        - expense
        - flows
        - income
        - liabilities
        - month
        - netWorth
        - shortfall
        - tax
        - taxes
        - totalAssets
        - totalLiabilities
      type: object
    Summary:
      properties:
        estate:
          $ref: '#/components/schemas/EstateScenario'
        fiAge:
          format: int32
          type:
            - integer
            - 'null'
        finalNetWorth:
          format: int64
          type: integer
        firstShortfallMonth:
          type:
            - string
            - 'null'
        liquidByAge:
          additionalProperties:
            format: int64
            type: integer
          type: object
        minCash:
          format: int64
          type: integer
        netWorthByAge:
          additionalProperties:
            format: int64
            type: integer
          type: object
        retirementNetWorth:
          format: int64
          type:
            - integer
            - 'null'
        spendingAfter:
          format: int64
          type:
            - integer
            - 'null'
        spendingBefore:
          format: int64
          type:
            - integer
            - 'null'
      required:
        - estate
        - fiAge
        - finalNetWorth
        - firstShortfallMonth
        - liquidByAge
        - minCash
        - netWorthByAge
        - retirementNetWorth
        - spendingAfter
        - spendingBefore
      type: object
    TaxYearDetail:
      properties:
        age:
          format: int32
          type: integer
        brackets:
          items:
            $ref: '#/components/schemas/Bracket'
          type: array
        earners:
          items:
            $ref: '#/components/schemas/EarnerTax'
          type: array
        pensionAccountCredit:
          format: int64
          type: integer
        year:
          format: int32
          type: integer
      required:
        - age
        - brackets
        - earners
        - pensionAccountCredit
        - year
      type: object
    PlanWarning:
      properties:
        event:
          type: string
        kind:
          $ref: '#/components/schemas/WarningKind'
      required:
        - event
        - kind
      type: object
    Owner:
      enum:
        - SELF
        - SPOUSE
        - JOINT
      type: string
    MortgageLimit:
      properties:
        cap:
          format: int64
          type:
            - integer
            - 'null'
        dsr:
          format: int64
          type: integer
        ineligible:
          oneOf:
            - $ref: '#/components/schemas/Ineligible'
            - type: 'null'
        limit:
          format: int64
          type: integer
        ltv:
          format: int64
          type: integer
        policy:
          oneOf:
            - $ref: '#/components/schemas/PolicyLoan'
            - type: 'null'
        regulated:
          type: boolean
      required:
        - cap
        - dsr
        - ineligible
        - limit
        - ltv
        - policy
        - regulated
      type: object
    FlowBreakdown:
      properties:
        debt:
          additionalProperties:
            format: int64
            type: integer
          type: object
        events:
          additionalProperties:
            format: int64
            type: integer
          type: object
        expense:
          additionalProperties:
            format: int64
            type: integer
          type: object
        income:
          additionalProperties:
            format: int64
            type: integer
          type: object
        saved:
          additionalProperties:
            format: int64
            type: integer
          type: object
        sold:
          additionalProperties:
            format: int64
            type: integer
          type: object
        withdrawn:
          additionalProperties:
            format: int64
            type: integer
          type: object
      required:
        - debt
        - events
        - expense
        - income
        - saved
        - sold
        - withdrawn
      type: object
    EstateScenario:
      properties:
        age:
          format: int32
          type: integer
        charity:
          format: int64
          type: integer
        charityShare:
          format: double
          type: number
        first:
          $ref: '#/components/schemas/EstateSummary'
        legalSpouseShare:
          format: double
          type: number
        month:
          type: string
        netWorth:
          format: int64
          type: integer
        ownership:
          format: double
          type: number
        second:
          oneOf:
            - $ref: '#/components/schemas/EstateSummary'
            - type: 'null'
        spouseShare:
          format: double
          type: number
        tax:
          format: int64
          type: integer
        toHeirs:
          format: int64
          type: integer
      required:
        - age
        - charity
        - charityShare
        - first
        - legalSpouseShare
        - month
        - netWorth
        - ownership
        - second
        - spouseShare
        - tax
        - toHeirs
      type: object
    Bracket:
      properties:
        rate:
          format: double
          type: number
        upTo:
          format: int64
          type:
            - integer
            - 'null'
      required:
        - rate
        - upTo
      type: object
    EarnerTax:
      properties:
        calculated:
          format: int64
          type: integer
        credits:
          additionalProperties:
            format: int64
            type: integer
          type: object
        deductions:
          additionalProperties:
            format: int64
            type: integer
          type: object
        determined:
          format: int64
          type: integer
        marginalRate:
          format: double
          type: number
        owner:
          $ref: '#/components/schemas/Owner'
        pay:
          format: int64
          type: integer
        taxBase:
          format: int64
          type: integer
      required:
        - calculated
        - credits
        - deductions
        - determined
        - marginalRate
        - owner
        - pay
        - taxBase
      type: object
    WarningKind:
      enum:
        - LAND_PERMIT_GAP
        - TEMP_TWO_HOME_EXPIRED
      type: string
    Ineligible:
      enum:
        - HOME
        - INCOME
        - PRICE
        - NEWBORN
      type: string
    PolicyLoan:
      enum:
        - DIDIMDOL
        - NEWBORN
        - BOGEUMJARI
      type: string
    EstateSummary:
      properties:
        charity:
          format: int64
          type: integer
        financial:
          format: int64
          type: integer
        financialDeduction:
          format: int64
          type: integer
        giftsAdded:
          format: int64
          type: integer
        gross:
          format: int64
          type: integer
        personalDeduction:
          format: int64
          type: integer
        spouseDeduction:
          format: int64
          type: integer
        tax:
          format: int64
          type: integer
        taxable:
          format: int64
          type: integer
      required:
        - charity
        - financial
        - financialDeduction
        - giftsAdded
        - gross
        - personalDeduction
        - spouseDeduction
        - tax
        - taxable
      type: object
  securitySchemes:
    token:
      scheme: bearer
      type: http

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.