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

# 대화 보기

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



## OpenAPI

````yaml /openapi.json get /v1/plans/{id}/advisor/threads/{threadId}
openapi: 3.1.0
info:
  title: OpenAPI definition
  version: v0
servers:
  - url: https://api.morrowly.app
security:
  - token: []
paths:
  /v1/plans/{id}/advisor/threads/{threadId}:
    get:
      tags:
        - advisor
      summary: 대화 보기
      description: '필요한 권한: `moro:read`'
      operationId: exchanges
      parameters:
        - in: path
          name: id
          required: true
          schema:
            format: uuid
            type: string
        - in: path
          name: threadId
          required: true
          schema:
            format: uuid
            type: string
      responses:
        '200':
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiResponseListExchange'
          description: OK
        '401':
          description: 토큰이 없거나 틀리거나 만료됨(본문 없음)
        '403':
          description: 토큰의 권한이 모자람(본문 없음)
components:
  schemas:
    ApiResponseListExchange:
      properties:
        data:
          items:
            $ref: '#/components/schemas/Exchange'
          type:
            - array
            - 'null'
        error:
          oneOf:
            - $ref: '#/components/schemas/ErrorMessage'
            - type: 'null'
        result:
          $ref: '#/components/schemas/ResultType'
      required:
        - data
        - error
        - result
      type: object
    Exchange:
      properties:
        answer:
          type: string
        createdAt:
          format: date-time
          type: string
        id:
          format: uuid
          type: string
        proposals:
          items:
            $ref: '#/components/schemas/Proposal'
          type: array
        question:
          type: string
        undoable:
          type: boolean
      required:
        - answer
        - createdAt
        - id
        - proposals
        - question
        - undoable
      type: object
    ErrorMessage:
      properties:
        code:
          type: string
        data: {}
        message:
          type: string
      required:
        - code
        - data
        - message
      type: object
    ResultType:
      enum:
        - SUCCESS
        - ERROR
      type: string
    Proposal:
      properties:
        after:
          $ref: '#/components/schemas/AdvisorOutcome'
        afterPath:
          items:
            $ref: '#/components/schemas/PathPoint'
          type: array
        applied:
          type: boolean
        before:
          oneOf:
            - $ref: '#/components/schemas/AdvisorOutcome'
            - type: 'null'
        beforePath:
          items:
            $ref: '#/components/schemas/PathPoint'
          type: array
        finances:
          oneOf:
            - $ref: '#/components/schemas/FinanceEdit'
            - type: 'null'
        financesSeen:
          type: string
        milestones:
          items:
            $ref: '#/components/schemas/Milestone'
          type: array
        planSeen:
          type: string
        reason:
          type: string
        remove:
          items:
            type: string
          type: array
        sharedFinances:
          type: boolean
        title:
          type: string
        upsert:
          items:
            oneOf:
              - $ref: '#/components/schemas/AssetItem'
              - $ref: '#/components/schemas/ChangeItem'
              - $ref: '#/components/schemas/ChildItem'
              - $ref: '#/components/schemas/ExpenseItem'
              - $ref: '#/components/schemas/GiftItem'
              - $ref: '#/components/schemas/HoldingItem'
              - $ref: '#/components/schemas/HousingItem'
              - $ref: '#/components/schemas/IncomeItem'
              - $ref: '#/components/schemas/LumpSumItem'
              - $ref: '#/components/schemas/SeveranceItem'
              - $ref: '#/components/schemas/TransferItem'
          type: array
      required:
        - after
        - afterPath
        - applied
        - before
        - beforePath
        - finances
        - financesSeen
        - milestones
        - planSeen
        - reason
        - remove
        - sharedFinances
        - title
        - upsert
      type: object
    AdvisorOutcome:
      properties:
        fiAge:
          format: int32
          type:
            - integer
            - 'null'
        finalNetWorth:
          format: int64
          type: integer
        firstShortfallMonth:
          type:
            - string
            - 'null'
        minCash:
          format: int64
          type: integer
        retirementNetWorth:
          format: int64
          type:
            - integer
            - 'null'
      required:
        - fiAge
        - finalNetWorth
        - firstShortfallMonth
        - minCash
        - retirementNetWorth
      type: object
    PathPoint:
      properties:
        age:
          format: int32
          type: integer
        cash:
          format: int64
          type: integer
        month:
          type: string
        netWorth:
          format: int64
          type: integer
        shortfall:
          type: boolean
      required:
        - age
        - cash
        - month
        - netWorth
        - shortfall
      type: object
    FinanceEdit:
      properties:
        assets:
          items:
            $ref: '#/components/schemas/Asset'
          type: array
        birthMonth:
          type:
            - string
            - 'null'
        cash:
          format: int64
          type:
            - integer
            - 'null'
        cashFlows:
          items:
            $ref: '#/components/schemas/CashFlow'
          type: array
        dependents:
          items:
            $ref: '#/components/schemas/Dependent'
          type: array
        liabilities:
          items:
            $ref: '#/components/schemas/Liability'
          type: array
        remove:
          items:
            type: string
          type: array
      required:
        - assets
        - birthMonth
        - cash
        - cashFlows
        - dependents
        - liabilities
        - remove
      type: object
    Milestone:
      properties:
        id:
          type: string
        name:
          type: string
        time:
          $ref: '#/components/schemas/Time'
      required:
        - id
        - name
        - time
      type: object
    AssetItem:
      allOf:
        - $ref: '#/components/schemas/PlanItem'
        - properties:
            annualRate:
              format: double
              type:
                - number
                - 'null'
            assetType:
              $ref: '#/components/schemas/AssetType'
            cost:
              format: int64
              type: integer
            end:
              oneOf:
                - $ref: '#/components/schemas/Time'
                - type: 'null'
            loan:
              oneOf:
                - $ref: '#/components/schemas/ItemLoan'
                - type: 'null'
            owner:
              $ref: '#/components/schemas/Owner'
            price:
              format: int64
              type: integer
            saleCost:
              format: int64
              type: integer
            start:
              $ref: '#/components/schemas/Time'
          required:
            - annualRate
            - assetType
            - cost
            - end
            - loan
            - owner
            - price
            - saleCost
            - start
          type: object
    ChangeItem:
      allOf:
        - $ref: '#/components/schemas/PlanItem'
        - properties:
            at:
              $ref: '#/components/schemas/Time'
            cashFlowId:
              type: string
            monthlyAmount:
              format: int64
              type: integer
          required:
            - at
            - cashFlowId
            - monthlyAmount
          type: object
    ChildItem:
      allOf:
        - $ref: '#/components/schemas/PlanItem'
        - properties:
            birth:
              $ref: '#/components/schemas/Time'
            childcare:
              format: int64
              type: integer
            until:
              oneOf:
                - $ref: '#/components/schemas/Time'
                - type: 'null'
          required:
            - birth
            - childcare
            - until
          type: object
    ExpenseItem:
      allOf:
        - $ref: '#/components/schemas/PlanItem'
        - properties:
            annualGrowth:
              format: double
              type:
                - number
                - 'null'
            end:
              oneOf:
                - $ref: '#/components/schemas/Time'
                - type: 'null'
            expenseKind:
              oneOf:
                - $ref: '#/components/schemas/ExpenseKind'
                - type: 'null'
            monthlyAmount:
              format: int64
              type: integer
            start:
              $ref: '#/components/schemas/Time'
          required:
            - annualGrowth
            - end
            - expenseKind
            - monthlyAmount
            - start
          type: object
    GiftItem:
      allOf:
        - $ref: '#/components/schemas/PlanItem'
        - properties:
            amount:
              format: int64
              type: integer
            at:
              $ref: '#/components/schemas/Time'
            marriageOrBirth:
              type: boolean
            recipient:
              type: string
            relation:
              $ref: '#/components/schemas/GiftRelation'
          required:
            - amount
            - at
            - marriageOrBirth
            - recipient
            - relation
          type: object
    HoldingItem:
      allOf:
        - $ref: '#/components/schemas/PlanItem'
        - properties:
            assetId:
              type: string
            dividend:
              oneOf:
                - $ref: '#/components/schemas/Dividend'
                - type: 'null'
            protect:
              oneOf:
                - $ref: '#/components/schemas/Time'
                - type: 'null'
            renew:
              oneOf:
                - $ref: '#/components/schemas/HoldingRenew'
                - type: 'null'
            reverseMortgage:
              oneOf:
                - $ref: '#/components/schemas/Time'
                - type: 'null'
            sell:
              oneOf:
                - $ref: '#/components/schemas/Sell'
                - type: 'null'
          required:
            - assetId
            - dividend
            - protect
            - renew
            - reverseMortgage
            - sell
          type: object
    HousingItem:
      allOf:
        - $ref: '#/components/schemas/PlanItem'
        - properties:
            cost:
              format: int64
              type: integer
            end:
              oneOf:
                - $ref: '#/components/schemas/Time'
                - type: 'null'
            firstHome:
              type: boolean
            loan:
              oneOf:
                - $ref: '#/components/schemas/ItemLoan'
                - type: 'null'
            owner:
              $ref: '#/components/schemas/Owner'
            price:
              format: int64
              type: integer
            region:
              type:
                - string
                - 'null'
            renew:
              oneOf:
                - $ref: '#/components/schemas/Renew'
                - type: 'null'
            rent:
              format: int64
              type:
                - integer
                - 'null'
            reverseMortgage:
              oneOf:
                - $ref: '#/components/schemas/Time'
                - type: 'null'
            saleCost:
              format: int64
              type: integer
            start:
              $ref: '#/components/schemas/Time'
            tenure:
              $ref: '#/components/schemas/HousingTenure'
          required:
            - cost
            - end
            - firstHome
            - loan
            - owner
            - price
            - region
            - renew
            - rent
            - reverseMortgage
            - saleCost
            - start
            - tenure
          type: object
    IncomeItem:
      allOf:
        - $ref: '#/components/schemas/PlanItem'
        - properties:
            annualGrowth:
              format: double
              type:
                - number
                - 'null'
            end:
              oneOf:
                - $ref: '#/components/schemas/Time'
                - type: 'null'
            expenseRate:
              format: double
              type:
                - number
                - 'null'
            incomeKind:
              $ref: '#/components/schemas/IncomeKind'
            monthlyAmount:
              format: int64
              type: integer
            owner:
              $ref: '#/components/schemas/Owner'
            start:
              $ref: '#/components/schemas/Time'
          required:
            - annualGrowth
            - end
            - expenseRate
            - incomeKind
            - monthlyAmount
            - owner
            - start
          type: object
    LumpSumItem:
      allOf:
        - $ref: '#/components/schemas/PlanItem'
        - properties:
            amount:
              format: int64
              type: integer
            at:
              $ref: '#/components/schemas/Time'
          required:
            - amount
            - at
          type: object
    SeveranceItem:
      allOf:
        - $ref: '#/components/schemas/PlanItem'
        - properties:
            amount:
              format: int64
              type: integer
            at:
              $ref: '#/components/schemas/Time'
            serviceYears:
              format: int32
              type: integer
          required:
            - amount
            - at
            - serviceYears
          type: object
    TransferItem:
      allOf:
        - $ref: '#/components/schemas/PlanItem'
        - properties:
            amount:
              format: int64
              type:
                - integer
                - 'null'
            at:
              $ref: '#/components/schemas/Time'
            fromAssetId:
              type: string
            newAsset:
              oneOf:
                - $ref: '#/components/schemas/Asset'
                - type: 'null'
            toAssetId:
              type: string
          required:
            - amount
            - at
            - fromAssetId
            - newAsset
            - toAssetId
          type: object
    Asset:
      properties:
        acquiredAt:
          type:
            - string
            - 'null'
        acquisitionPrice:
          format: int64
          type:
            - integer
            - 'null'
        annualRate:
          format: double
          type:
            - number
            - 'null'
        dividendYield:
          format: double
          type:
            - number
            - 'null'
        id:
          type: string
        investmentTax:
          $ref: '#/components/schemas/InvestmentTax'
        monthlyContribution:
          format: int64
          type:
            - integer
            - 'null'
        name:
          type: string
        owner:
          $ref: '#/components/schemas/Owner'
        payoutStartAge:
          format: int32
          type:
            - integer
            - 'null'
        payoutYears:
          format: int32
          type:
            - integer
            - 'null'
        region:
          type:
            - string
            - 'null'
        serviceYears:
          format: int32
          type:
            - integer
            - 'null'
        type:
          $ref: '#/components/schemas/AssetType'
        value:
          format: int64
          type: integer
      required:
        - acquiredAt
        - acquisitionPrice
        - annualRate
        - dividendYield
        - id
        - investmentTax
        - monthlyContribution
        - name
        - owner
        - payoutStartAge
        - payoutYears
        - region
        - serviceYears
        - type
        - value
      type: object
    CashFlow:
      properties:
        annualGrowth:
          format: double
          type:
            - number
            - 'null'
        end:
          type:
            - string
            - 'null'
        expenseKind:
          oneOf:
            - $ref: '#/components/schemas/ExpenseKind'
            - type: 'null'
        expenseRate:
          format: double
          type:
            - number
            - 'null'
        id:
          type: string
        incomeKind:
          $ref: '#/components/schemas/IncomeKind'
        monthlyAmount:
          format: int64
          type: integer
        name:
          type: string
        owner:
          $ref: '#/components/schemas/Owner'
        start:
          type: string
        type:
          $ref: '#/components/schemas/FlowType'
      required:
        - annualGrowth
        - end
        - expenseKind
        - expenseRate
        - id
        - incomeKind
        - monthlyAmount
        - name
        - owner
        - start
        - type
      type: object
    Dependent:
      properties:
        birthMonth:
          type:
            - string
            - 'null'
        id:
          type: string
        kind:
          $ref: '#/components/schemas/DependentKind'
        name:
          type: string
      required:
        - birthMonth
        - id
        - kind
        - name
      type: object
    Liability:
      properties:
        annualRate:
          format: double
          type: number
        id:
          type: string
        interestDeduction:
          type: boolean
        name:
          type: string
        owner:
          $ref: '#/components/schemas/Owner'
        principal:
          format: int64
          type: integer
        remainingMonths:
          format: int32
          type: integer
        repayment:
          $ref: '#/components/schemas/Repayment'
      required:
        - annualRate
        - id
        - interestDeduction
        - name
        - owner
        - principal
        - remainingMonths
        - repayment
      type: object
    Time:
      properties:
        age:
          format: int32
          type:
            - integer
            - 'null'
        milestone:
          type:
            - string
            - 'null'
        month:
          type:
            - string
            - 'null'
        offset:
          format: int32
          type: integer
        who:
          oneOf:
            - $ref: '#/components/schemas/Owner'
            - type: 'null'
      required:
        - age
        - milestone
        - month
        - offset
        - who
      type: object
    PlanItem:
      discriminator:
        mapping:
          asset: '#/components/schemas/AssetItem'
          change: '#/components/schemas/ChangeItem'
          child: '#/components/schemas/ChildItem'
          expense: '#/components/schemas/ExpenseItem'
          gift: '#/components/schemas/GiftItem'
          holding: '#/components/schemas/HoldingItem'
          housing: '#/components/schemas/HousingItem'
          income: '#/components/schemas/IncomeItem'
          lumpSum: '#/components/schemas/LumpSumItem'
          severance: '#/components/schemas/SeveranceItem'
          transfer: '#/components/schemas/TransferItem'
        propertyName: kind
      properties:
        id:
          type: string
        kind:
          type: string
        name:
          type: string
      required:
        - id
        - kind
        - name
      type: object
    AssetType:
      enum:
        - INVESTMENT
        - REAL_ESTATE
        - VEHICLE
        - PENSION_ACCOUNT
        - DEPOSIT
        - RETIREMENT_PENSION
      type: string
    ItemLoan:
      properties:
        annualRate:
          format: double
          type: number
        owner:
          $ref: '#/components/schemas/Owner'
        policyLoan:
          oneOf:
            - $ref: '#/components/schemas/PolicyLoan'
            - type: 'null'
        principal:
          format: int64
          type: integer
        repayment:
          $ref: '#/components/schemas/Repayment'
        termMonths:
          format: int32
          type: integer
      required:
        - annualRate
        - owner
        - policyLoan
        - principal
        - repayment
        - termMonths
      type: object
    Owner:
      enum:
        - SELF
        - SPOUSE
        - JOINT
      type: string
    ExpenseKind:
      enum:
        - RENT
        - DONATION
      type: string
    GiftRelation:
      enum:
        - SPOUSE
        - ADULT_CHILD
        - MINOR_CHILD
      type: string
    Dividend:
      properties:
        from:
          $ref: '#/components/schemas/Time'
        until:
          oneOf:
            - $ref: '#/components/schemas/Time'
            - type: 'null'
      required:
        - from
        - until
      type: object
    HoldingRenew:
      properties:
        at:
          $ref: '#/components/schemas/Time'
        liabilityId:
          type:
            - string
            - 'null'
        rate:
          format: double
          type:
            - number
            - 'null'
      required:
        - at
        - liabilityId
        - rate
      type: object
    Sell:
      properties:
        at:
          $ref: '#/components/schemas/Time'
        cost:
          format: int64
          type: integer
        payOffLiabilityId:
          type:
            - string
            - 'null'
      required:
        - at
        - cost
        - payOffLiabilityId
      type: object
    Renew:
      properties:
        at:
          oneOf:
            - $ref: '#/components/schemas/Time'
            - type: 'null'
        rate:
          format: double
          type:
            - number
            - 'null'
      required:
        - at
        - rate
      type: object
    HousingTenure:
      enum:
        - OWN
        - JEONSE
        - RENT
        - GAP
      type: string
    IncomeKind:
      enum:
        - NET
        - SALARY
        - PUBLIC_PENSION
        - BUSINESS
      type: string
    InvestmentTax:
      enum:
        - DOMESTIC_STOCK
        - FOREIGN_STOCK
        - INTEREST
        - TAX_FREE
        - OTHER_ETF
        - HIGH_DIVIDEND
        - ISA
      type: string
    FlowType:
      enum:
        - INCOME
        - EXPENSE
      type: string
    DependentKind:
      enum:
        - SPOUSE
        - CHILD
        - PARENT
      type: string
    Repayment:
      enum:
        - ANNUITY
        - EQUAL_PRINCIPAL
        - BULLET
        - DEPOSIT
      type: string
    PolicyLoan:
      enum:
        - DIDIMDOL
        - NEWBORN
        - BOGEUMJARI
      type: string
  securitySchemes:
    token:
      scheme: bearer
      type: http

````

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