{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/hemrock-com/json-schema/hemrock-com-fund-result-response-schema.json",
  "title": "FundResultResponse",
  "x-generated": "2026-11-11",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/hemrock-com-openapi.json#/components/schemas/FundResultResponse",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "required": [
        "result"
      ],
      "properties": {
        "result": {
          "$ref": "#/$defs/FundResult"
        },
        "detail": {
          "$ref": "#/$defs/FundDetail"
        },
        "workbook": {
          "type": "object",
          "description": "Returned when the request sets format to \"xlsx\" or \"xlsx_url\": the live Excel workbook the web tool exports, with every number a formula back to its Get Started inputs. For \"xlsx\", decode data from base64 and save it as filename. For \"xlsx_url\", download it from url before expiresAt (24 hours).",
          "required": [
            "filename",
            "contentType"
          ],
          "properties": {
            "filename": {
              "type": "string"
            },
            "contentType": {
              "type": "string"
            },
            "encoding": {
              "type": "string",
              "enum": [
                "base64"
              ]
            },
            "data": {
              "type": "string"
            },
            "url": {
              "type": "string",
              "format": "uri"
            },
            "expiresAt": {
              "type": "string",
              "format": "date-time"
            }
          }
        }
      }
    },
    "meta": {
      "type": "object",
      "properties": {
        "keyName": {
          "type": "string"
        }
      }
    }
  },
  "$defs": {
    "FundDetail": {
      "type": "object",
      "description": "The fund over time. Returned unless the request sets granularity to \"none\". Every array in periods has one entry per label. waterfall, lpClasses and mgmtCo appear only when the request sent that feature block.",
      "required": [
        "granularity",
        "irr",
        "periods",
        "statements"
      ],
      "properties": {
        "granularity": {
          "type": "string",
          "enum": [
            "year",
            "quarter"
          ]
        },
        "irr": {
          "type": "object",
          "description": "IRRs solved from the dated quarterly cash flows, with terminal NAV.",
          "properties": {
            "grossIRR": {
              "type": "number"
            },
            "netIRR": {
              "type": "object",
              "properties": {
                "total": {
                  "type": "number"
                },
                "lp": {
                  "type": "number"
                }
              }
            }
          }
        },
        "periods": {
          "type": "object",
          "required": [
            "labels"
          ],
          "properties": {
            "labels": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "calledCapital": {
              "$ref": "#/$defs/FundSeries"
            },
            "managementFees": {
              "$ref": "#/$defs/FundSeries"
            },
            "partnershipExpenses": {
              "$ref": "#/$defs/FundSeries"
            },
            "investedCapital": {
              "$ref": "#/$defs/FundSeries"
            },
            "recycledCapital": {
              "$ref": "#/$defs/FundSeries"
            },
            "recycledDeemed": {
              "$ref": "#/$defs/FundSeries",
              "description": "The part of recycledCapital booked as distributed and recontributed (features.recycling treatment \"deemed\"). It is also in calledCapital and distributions; recycling that is never distributed is in neither."
            },
            "proceeds": {
              "$ref": "#/$defs/FundSeries"
            },
            "distributions": {
              "$ref": "#/$defs/FundSeries",
              "description": "Distributions after carry. The LP line runs through the waterfall period by period."
            },
            "carriedInterest": {
              "type": "array",
              "items": {
                "type": "number"
              },
              "description": "GP carry paid each period, catchups included, net of the clawback."
            },
            "gpClawback": {
              "type": "array",
              "items": {
                "type": "number"
              },
              "description": "Carry the GP returns to the LPs, in the quarter the fund ends (or its year). Return of capital covers only capital called so far, so early carry is possible; the clawback brings the GP back to its whole-fund share. Off with features.waterfall.clawback: false."
            },
            "preferredReturn": {
              "type": "array",
              "items": {
                "type": "number"
              },
              "description": "Preferred return paid to LPs each period. Only with a waterfall block."
            },
            "gpCatchup": {
              "type": "array",
              "items": {
                "type": "number"
              },
              "description": "GP catchup paid each period. Only with a waterfall block."
            },
            "nav": {
              "$ref": "#/$defs/FundSeries"
            },
            "dpi": {
              "type": "array",
              "items": {
                "type": "number"
              }
            },
            "rvpi": {
              "type": "array",
              "items": {
                "type": "number"
              }
            },
            "tvpi": {
              "type": "array",
              "items": {
                "type": "number"
              }
            },
            "jCurveLp": {
              "type": "array",
              "items": {
                "type": "number"
              },
              "description": "Cumulative LP net cash flow at the end of each period."
            }
          }
        },
        "statements": {
          "type": "object",
          "properties": {
            "currency": {
              "type": "string"
            },
            "periods": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "label": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "periodStart": {
                    "type": "string"
                  },
                  "periodEnd": {
                    "type": "string"
                  },
                  "operations": {
                    "type": "object",
                    "properties": {
                      "managementFees": {
                        "type": "number",
                        "description": "Management fees"
                      },
                      "organizationalExpenses": {
                        "type": "number",
                        "description": "Organizational expenses"
                      },
                      "operationalExpenses": {
                        "type": "number",
                        "description": "Operational expenses. Run through Q1 of the fund year after the fund life ends."
                      },
                      "partnershipExpenses": {
                        "type": "number",
                        "description": "Partnership expenses"
                      },
                      "totalExpenses": {
                        "type": "number",
                        "description": "Total expenses"
                      },
                      "netInvestmentIncome": {
                        "type": "number",
                        "description": "Net investment income (loss). No interest or dividend income is modeled."
                      },
                      "realizedGainOnExits": {
                        "type": "number",
                        "description": "Realized gain on exits. Proceeds less the cost they release."
                      },
                      "realizedLossOnWriteoffs": {
                        "type": "number",
                        "description": "Realized loss on writeoffs"
                      },
                      "netRealizedGain": {
                        "type": "number",
                        "description": "Net realized gain (loss)"
                      },
                      "netChangeInUnrealized": {
                        "type": "number",
                        "description": "Net change in unrealized appreciation (depreciation). Change in NAV less change in cost held."
                      },
                      "netGainOnInvestments": {
                        "type": "number",
                        "description": "Net gain (loss) on investments"
                      },
                      "netIncreaseFromOperations": {
                        "type": "number",
                        "description": "Net increase (decrease) in partners' capital from operations"
                      },
                      "operationalExpenseLines": {
                        "type": "array",
                        "description": "The operational expense lines, when the model itemizes them.",
                        "items": {
                          "type": "object",
                          "properties": {
                            "label": {
                              "type": "string"
                            },
                            "amount": {
                              "type": "number"
                            }
                          }
                        }
                      },
                      "partnershipExpenseLines": {
                        "type": "array",
                        "description": "The partnership expense lines, when the model itemizes them.",
                        "items": {
                          "type": "object",
                          "properties": {
                            "label": {
                              "type": "string"
                            },
                            "amount": {
                              "type": "number"
                            }
                          }
                        }
                      }
                    }
                  },
                  "balanceSheet": {
                    "type": "object",
                    "properties": {
                      "cash": {
                        "type": "number",
                        "description": "Cash"
                      },
                      "investmentsAtCost": {
                        "type": "number",
                        "description": "Investments, at cost. AUM."
                      },
                      "unrealizedAppreciation": {
                        "type": "number",
                        "description": "Unrealized appreciation (depreciation)"
                      },
                      "investmentsAtFairValue": {
                        "type": "number",
                        "description": "Investments, at fair value. NAV."
                      },
                      "totalAssets": {
                        "type": "number",
                        "description": "Total assets"
                      },
                      "totalLiabilities": {
                        "type": "number",
                        "description": "Total liabilities. Expenses are paid when incurred, so nothing is accrued."
                      },
                      "contributedCapitalLp": {
                        "type": "number",
                        "description": "Contributed capital, LPs"
                      },
                      "contributedCapitalGp": {
                        "type": "number",
                        "description": "Contributed capital, GP"
                      },
                      "distributionsLp": {
                        "type": "number",
                        "description": "Distributions to LPs"
                      },
                      "distributionsGpCommit": {
                        "type": "number",
                        "description": "Distributions to the GP commit"
                      },
                      "carriedInterestDistributed": {
                        "type": "number",
                        "description": "Carried interest distributed"
                      },
                      "cumulativeNetInvestmentIncome": {
                        "type": "number",
                        "description": "Cumulative net investment income (loss)"
                      },
                      "cumulativeNetRealizedGain": {
                        "type": "number",
                        "description": "Cumulative net realized gain (loss)"
                      },
                      "cumulativeNetUnrealized": {
                        "type": "number",
                        "description": "Cumulative net unrealized appreciation (depreciation)"
                      },
                      "totalPartnersCapital": {
                        "type": "number",
                        "description": "Total partners' capital"
                      },
                      "totalLiabilitiesAndCapital": {
                        "type": "number",
                        "description": "Total liabilities and partners' capital"
                      },
                      "checkBalances": {
                        "type": "number",
                        "description": "Check: assets less liabilities and capital. Zero when the balance sheet balances."
                      },
                      "unfundedCommitments": {
                        "type": "number",
                        "description": "Memo: unfunded commitments"
                      }
                    }
                  },
                  "cashFlow": {
                    "type": "object",
                    "properties": {
                      "netIncreaseFromOperations": {
                        "type": "number",
                        "description": "Net increase (decrease) in partners' capital from operations"
                      },
                      "lessNetRealizedGain": {
                        "type": "number",
                        "description": "Net realized (gain) loss on investments"
                      },
                      "lessNetChangeInUnrealized": {
                        "type": "number",
                        "description": "Net change in unrealized (appreciation) depreciation"
                      },
                      "purchasesOfInvestments": {
                        "type": "number",
                        "description": "Purchases of investments. Includes recycled proceeds."
                      },
                      "proceedsFromExits": {
                        "type": "number",
                        "description": "Proceeds from exits"
                      },
                      "netCashFromOperating": {
                        "type": "number",
                        "description": "Net cash from operating activities"
                      },
                      "contributionsLp": {
                        "type": "number",
                        "description": "Capital contributions, LPs"
                      },
                      "contributionsGp": {
                        "type": "number",
                        "description": "Capital contributions, GP"
                      },
                      "distributionsLp": {
                        "type": "number",
                        "description": "Distributions to LPs"
                      },
                      "distributionsGpCommit": {
                        "type": "number",
                        "description": "Distributions to the GP commit"
                      },
                      "carriedInterestPaid": {
                        "type": "number",
                        "description": "Carried interest paid"
                      },
                      "netCashFromFinancing": {
                        "type": "number",
                        "description": "Net cash from financing activities"
                      },
                      "netChangeInCash": {
                        "type": "number",
                        "description": "Net change in cash"
                      },
                      "cashBeginning": {
                        "type": "number",
                        "description": "Cash, beginning of period"
                      },
                      "cashEnd": {
                        "type": "number",
                        "description": "Cash, end of period"
                      },
                      "checkTiesToBalanceSheet": {
                        "type": "number",
                        "description": "Check: cash less balance sheet cash. Zero when the cash flow ties to the balance sheet."
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "waterfall": {
          "type": "object",
          "description": "Lifetime totals of the waterfall as run through the periods: return of capital, preferred return (accrued on the dates capital was called), catchup, carry by tier."
        },
        "lpClasses": {
          "type": "object",
          "description": "LP economics split by class. Each class carries its lifetime totals, datedNetIRR (solved from its own dated calls and distributions) and periods: calledCapital, unscheduledCalls, distributions and netIRR (the class's IRR through each period, with its share of LP NAV as the terminal value), one entry per label. A class with a callSchedule is called on it; the others are called as the fund needs cash."
        },
        "mgmtCo": {
          "type": "object"
        }
      }
    },
    "FundResult": {
      "type": "object",
      "required": [
        "committedCapital",
        "calledCapital",
        "managementFees",
        "partnershipExpenses",
        "investedCapital",
        "proceeds",
        "distributions",
        "grossMultiple",
        "netMultiple",
        "grossIRR",
        "netIRR",
        "pic",
        "dpi",
        "rvpi",
        "tvpi",
        "weightedHoldPeriodYears"
      ],
      "properties": {
        "committedCapital": {
          "$ref": "#/$defs/LineTotals"
        },
        "calledCapital": {
          "$ref": "#/$defs/LineTotals"
        },
        "managementFees": {
          "$ref": "#/$defs/LineTotals"
        },
        "partnershipExpenses": {
          "$ref": "#/$defs/LineTotals"
        },
        "investedCapital": {
          "$ref": "#/$defs/LineTotals"
        },
        "proceeds": {
          "$ref": "#/$defs/LineTotals"
        },
        "distributions": {
          "$ref": "#/$defs/LineTotals"
        },
        "grossMultiple": {
          "$ref": "#/$defs/LineTotals"
        },
        "netMultiple": {
          "$ref": "#/$defs/LineTotals"
        },
        "grossIRR": {
          "$ref": "#/$defs/LineTotals"
        },
        "netIRR": {
          "$ref": "#/$defs/LineTotals"
        },
        "pic": {
          "type": "number"
        },
        "dpi": {
          "type": "number"
        },
        "rvpi": {
          "type": "number"
        },
        "tvpi": {
          "type": "number"
        },
        "weightedHoldPeriodYears": {
          "type": "number"
        },
        "tiers": {
          "type": "array",
          "items": {
            "type": "object"
          }
        }
      }
    },
    "FundSeries": {
      "type": "object",
      "required": [
        "total",
        "lp",
        "gp"
      ],
      "properties": {
        "total": {
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "lp": {
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "gp": {
          "type": "array",
          "items": {
            "type": "number"
          }
        }
      }
    },
    "LineTotals": {
      "type": "object",
      "required": [
        "total",
        "lp",
        "gp"
      ],
      "properties": {
        "total": {
          "type": "number"
        },
        "lp": {
          "type": "number"
        },
        "gp": {
          "type": "number"
        }
      }
    }
  }
}