{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://artifacts.apis.io/hemrock-com/json-schema/hemrock-com-fund-compute-request-schema.json",
  "title": "FundComputeRequest",
  "x-generated": "2026-11-11",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/hemrock-com-openapi.json#/components/schemas/FundComputeRequest",
  "type": "object",
  "properties": {
    "inputs": {
      "type": "object",
      "properties": {
        "committedCapital": {
          "type": "number",
          "exclusiveMinimum": 0
        },
        "gpCommitPct": {
          "type": "number",
          "minimum": 0,
          "maximum": 1
        },
        "gpCommitCountedTowardInvested": {
          "type": "boolean"
        },
        "gpCommitBearsCarry": {
          "type": "boolean"
        },
        "organizationalExpenses": {
          "type": "number",
          "minimum": 0
        },
        "organizationalExpenseLines": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "label": {
                "type": "string"
              },
              "amount": {
                "type": "number",
                "minimum": 0
              }
            },
            "required": [
              "label",
              "amount"
            ],
            "additionalProperties": false
          }
        },
        "operationalExpensesAnnual": {
          "type": "number",
          "minimum": 0
        },
        "operationalExpensesBreakout": {
          "type": "object",
          "properties": {
            "fundAdmin": {
              "type": "number",
              "minimum": 0
            },
            "tax": {
              "type": "number",
              "minimum": 0
            },
            "audit": {
              "type": "number",
              "minimum": 0
            },
            "other": {
              "type": "number",
              "minimum": 0
            }
          },
          "required": [
            "fundAdmin",
            "tax",
            "audit",
            "other"
          ],
          "additionalProperties": false
        },
        "operationalExpenseLines": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "label": {
                "type": "string"
              },
              "amount": {
                "type": "number",
                "minimum": 0
              },
              "quarterly": {
                "type": "array",
                "minItems": 4,
                "maxItems": 4,
                "items": [
                  {
                    "type": "number",
                    "minimum": 0
                  },
                  {
                    "type": "number",
                    "minimum": 0
                  },
                  {
                    "type": "number",
                    "minimum": 0
                  },
                  {
                    "type": "number",
                    "minimum": 0
                  }
                ]
              }
            },
            "required": [
              "label",
              "amount"
            ],
            "additionalProperties": false
          }
        },
        "partnershipExpensesAnnual": {
          "type": "number",
          "minimum": 0
        },
        "partnershipExpenseLines": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "label": {
                "type": "string"
              },
              "amount": {
                "type": "number",
                "minimum": 0
              },
              "quarterly": {
                "type": "array",
                "minItems": 4,
                "maxItems": 4,
                "items": [
                  {
                    "type": "number",
                    "minimum": 0
                  },
                  {
                    "type": "number",
                    "minimum": 0
                  },
                  {
                    "type": "number",
                    "minimum": 0
                  },
                  {
                    "type": "number",
                    "minimum": 0
                  }
                ]
              }
            },
            "required": [
              "label",
              "amount"
            ],
            "additionalProperties": false
          }
        },
        "mgmtFeePct": {
          "type": "number",
          "minimum": 0,
          "maximum": 1
        },
        "mgmtFeeSchedule": {
          "type": "array",
          "items": {
            "type": "number",
            "minimum": 0,
            "maximum": 1
          }
        },
        "recycledCapitalPct": {
          "type": "number",
          "minimum": 0,
          "maximum": 1
        },
        "carryPct": {
          "type": "number",
          "minimum": 0,
          "maximum": 1
        },
        "newInvestmentPeriodYears": {
          "type": "number",
          "exclusiveMinimum": 0
        },
        "mgmtFeesPeriodYears": {
          "type": "number",
          "exclusiveMinimum": 0
        },
        "fundOperationsYears": {
          "type": "number",
          "exclusiveMinimum": 0
        },
        "maxFundLifeYears": {
          "type": "number",
          "exclusiveMinimum": 0
        },
        "navMarkupYears": {
          "type": "number",
          "minimum": 0,
          "maximum": 100
        },
        "portfolio": {
          "type": "object",
          "properties": {
            "newPct": {
              "type": "number",
              "minimum": 0,
              "maximum": 1
            },
            "followPct": {
              "type": "number",
              "minimum": 0,
              "maximum": 1
            },
            "avgCheckSizeNew": {
              "type": "number",
              "minimum": 0
            },
            "avgCheckSizeFollow": {
              "type": "number",
              "minimum": 0
            },
            "entryStages": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "numInvestments": {
                    "type": "number",
                    "minimum": 0
                  },
                  "avgCheckSize": {
                    "type": "number",
                    "minimum": 0
                  },
                  "pctAllocation": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1
                  },
                  "reserveRatio": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1
                  },
                  "initialCheckLabel": {
                    "type": "string"
                  },
                  "followOnChecks": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "label": {
                          "type": "string"
                        },
                        "avgCheckSize": {
                          "type": "number",
                          "minimum": 0
                        },
                        "pctOfReserve": {
                          "type": "number",
                          "minimum": 0,
                          "maximum": 1
                        }
                      },
                      "required": [
                        "avgCheckSize"
                      ],
                      "additionalProperties": false
                    }
                  }
                },
                "required": [
                  "name",
                  "numInvestments",
                  "avgCheckSize"
                ],
                "additionalProperties": false
              }
            }
          },
          "required": [
            "newPct",
            "followPct",
            "avgCheckSizeNew",
            "avgCheckSizeFollow"
          ],
          "additionalProperties": false
        },
        "returnTiers": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1
              },
              "pctOfCapital": {
                "type": "number",
                "minimum": 0,
                "maximum": 1
              },
              "multiple": {
                "type": "number",
                "minimum": 0
              },
              "holdingPeriodYears": {
                "type": "number",
                "minimum": 0
              },
              "numCompanies": {
                "type": "number",
                "minimum": 0
              }
            },
            "required": [
              "name",
              "pctOfCapital",
              "multiple",
              "holdingPeriodYears"
            ],
            "additionalProperties": false
          },
          "minItems": 1
        },
        "tierInputMode": {
          "type": "string",
          "enum": [
            "pct-capital",
            "num-companies"
          ]
        },
        "stageInputMode": {
          "type": "string",
          "enum": [
            "pct-capital",
            "num-companies"
          ]
        },
        "tierFractional": {
          "type": "boolean"
        },
        "solveCalledFromDeployment": {
          "type": "boolean"
        },
        "targetTotalInvestments": {
          "type": "number",
          "minimum": 0
        }
      },
      "required": [
        "committedCapital",
        "gpCommitPct",
        "gpCommitCountedTowardInvested",
        "organizationalExpenses",
        "operationalExpensesAnnual",
        "mgmtFeePct",
        "recycledCapitalPct",
        "carryPct",
        "newInvestmentPeriodYears",
        "mgmtFeesPeriodYears",
        "portfolio",
        "returnTiers"
      ],
      "additionalProperties": false
    },
    "features": {
      "type": "object",
      "properties": {
        "capTable": {
          "type": "object",
          "properties": {
            "inputs": {
              "type": "object",
              "properties": {
                "newInvestmentCheckSize": {
                  "type": "number",
                  "minimum": 0
                },
                "postmoneyValuation": {
                  "type": "number",
                  "exclusiveMinimum": 0
                },
                "numFollowOnRounds": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 20
                },
                "numRoundsFollowOn": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 20
                },
                "defaultValuationIncrease": {
                  "type": "number",
                  "minimum": 0
                },
                "dilutionPerRound": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 100
                },
                "dilutionFromOptionPoolsPerRound": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 100
                },
                "pctCompaniesFollowOn": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 100
                },
                "followOnRounds": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "valuationIncrease": {
                        "type": "number",
                        "minimum": 0
                      },
                      "dilutionFromRound": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "newOptionPoolInRound": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "pctCompaniesFollowOn": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      }
                    },
                    "additionalProperties": false
                  },
                  "maxItems": 20
                },
                "defaultGraduationRate": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 100
                },
                "defaultWriteoffRate": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 100
                },
                "defaultExitMultiple": {
                  "type": "number",
                  "minimum": 0
                },
                "roundOutcomes": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "graduationRate": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "writeoffRate": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "exitMultiple": {
                        "type": "number",
                        "minimum": 0
                      }
                    },
                    "additionalProperties": false
                  },
                  "maxItems": 21
                },
                "roundLabels": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "maxLength": 200
                  },
                  "maxItems": 21
                },
                "ownershipOutsideInvestment": {
                  "type": "array",
                  "items": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "maxItems": 21
                },
                "exitMultipleOnLastRound": {
                  "type": "number",
                  "minimum": 0
                }
              },
              "required": [
                "newInvestmentCheckSize",
                "postmoneyValuation",
                "numFollowOnRounds",
                "numRoundsFollowOn",
                "defaultValuationIncrease",
                "dilutionPerRound",
                "dilutionFromOptionPoolsPerRound",
                "pctCompaniesFollowOn",
                "defaultGraduationRate",
                "defaultWriteoffRate",
                "defaultExitMultiple"
              ],
              "additionalProperties": false
            },
            "bridge": {
              "type": "object",
              "properties": {
                "numInvestmentsTarget": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000
                },
                "stageName": {
                  "type": "string",
                  "maxLength": 200
                },
                "writeoffHoldYears": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 100
                },
                "expectedAgeAtRound": {
                  "type": "array",
                  "items": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "maxItems": 21
                },
                "yearsBetweenRounds": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 100
                }
              },
              "required": [
                "numInvestmentsTarget"
              ],
              "additionalProperties": false
            }
          },
          "required": [
            "inputs",
            "bridge"
          ],
          "additionalProperties": false
        },
        "deals": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "investments": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "quarter": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 400,
                      "description": "Quarter from first close, 1-based."
                    },
                    "amount": {
                      "type": "number",
                      "minimum": 0
                    }
                  },
                  "required": [
                    "quarter",
                    "amount"
                  ],
                  "additionalProperties": false
                },
                "minItems": 1,
                "maxItems": 40,
                "description": "The checks the fund writes into the deal: the initial check, then any follow-ons."
              },
              "exit": {
                "type": "object",
                "properties": {
                  "quarter": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 400
                  },
                  "multiple": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 10000,
                    "description": "Of everything invested in the deal. 0 is a write-off."
                  },
                  "proceeds": {
                    "type": "number",
                    "minimum": 0,
                    "description": "Exit proceeds in money, instead of a multiple."
                  }
                },
                "required": [
                  "quarter"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "name",
              "investments",
              "exit"
            ],
            "additionalProperties": false
          },
          "minItems": 1,
          "maxItems": 500,
          "description": "Build the portfolio from specific deals instead of entry stages and return tiers (and instead of capTable when both are sent). Each deal has its checks, each in a quarter from first close (1-based), and one exit in a quarter, at a multiple of everything invested in the deal (0 is a write-off) or for proceeds in money. Invested capital is the sum of the checks and called capital is solved from it; the fund life runs to the last exit, capped by maxFundLifeYears; each deal comes back as a row of result.tiers. Recycling keeps back the earliest proceeds, up to recycledCapitalPct of committed, only while later checks can use them. Send dealsMix true to mix the methods instead."
        },
        "dealsMix": {
          "type": "boolean",
          "description": "With deals: the deals come first, and the capital they leave (committed less fees and expenses, plus recycling, less the checks) is invested through the entry stages and return tiers, or capTable when sent, as it would be without deals. Recycling then goes to the stages, the fund life is the later of the deals' and the stages', and result.tiers lists the deals and then the tiers."
        },
        "fees": {
          "type": "object",
          "properties": {
            "base": {
              "type": "string",
              "enum": [
                "committed",
                "nav",
                "aum",
                "step-down"
              ]
            },
            "ratePct": {
              "type": "number",
              "minimum": 0,
              "maximum": 1
            },
            "yearlyRateSchedule": {
              "type": "array",
              "items": {
                "type": "number",
                "minimum": 0,
                "maximum": 1
              },
              "maxItems": 100
            },
            "basesByYear": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "committed",
                  "nav",
                  "aum",
                  "step-down"
                ]
              },
              "maxItems": 100
            },
            "feeYears": {
              "type": "number",
              "minimum": 0,
              "maximum": 100
            },
            "stepDownAfterYears": {
              "type": "number",
              "minimum": 0,
              "maximum": 100
            },
            "schedule": {
              "type": "object",
              "properties": {
                "frequency": {
                  "type": "string",
                  "enum": [
                    "quarterly",
                    "semiannual",
                    "annual"
                  ]
                },
                "steps": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "fromYear": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "rate": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1
                      },
                      "basis": {
                        "type": "string",
                        "enum": [
                          "committed",
                          "invested",
                          "nav"
                        ]
                      }
                    },
                    "required": [
                      "fromYear",
                      "rate",
                      "basis"
                    ],
                    "additionalProperties": false
                  },
                  "minItems": 1,
                  "maxItems": 20
                },
                "organizationalExpenseCap": {
                  "type": "number",
                  "minimum": 0
                }
              },
              "required": [
                "steps"
              ],
              "additionalProperties": false,
              "description": "The fee as an LPA states it, on the dated schedule: each rate from a point in fund years (0 = first close; 5.5 starts halfway through year 6 and cuts the period it lands in), charged on committed capital, invested cost not yet realized, or NAV, with organizational expenses above organizationalExpenseCap offsetting the fee. Runs for feeYears; base, ratePct, yearlyRateSchedule and basesByYear are ignored when it is set."
            }
          },
          "required": [
            "base"
          ],
          "additionalProperties": false
        },
        "followOn": {
          "type": "object",
          "properties": {
            "offsetQuarters": {
              "type": "integer",
              "minimum": 0,
              "maximum": 40
            }
          },
          "required": [
            "offsetQuarters"
          ],
          "additionalProperties": false
        },
        "waterfall": {
          "type": "object",
          "properties": {
            "preferredReturnMode": {
              "type": "string",
              "enum": [
                "none",
                "irr",
                "multiple"
              ]
            },
            "preferredReturnRate": {
              "type": "number",
              "minimum": 0,
              "maximum": 1
            },
            "preferredReturnMultiple": {
              "type": "number",
              "minimum": 0,
              "maximum": 100
            },
            "catchupPct": {
              "type": "number",
              "minimum": 0,
              "maximum": 1
            },
            "catchupGpShare": {
              "type": "number",
              "minimum": 0,
              "maximum": 1
            },
            "carryTiers": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "moicThreshold": {
                    "type": "number",
                    "minimum": 0
                  },
                  "irrThreshold": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1,
                    "description": "Instead of moicThreshold: the band below this tier ends when the LP IRR reaches this rate. With one of these, tiers run in the order given."
                  },
                  "carryPct": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1
                  },
                  "catchup": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "moicThreshold",
                  "carryPct"
                ],
                "additionalProperties": false
              },
              "maxItems": 20
            },
            "clawback": {
              "type": "boolean"
            },
            "preferredReturnCompounding": {
              "type": "string",
              "enum": [
                "annual",
                "none"
              ],
              "description": "IRR pref: compound annually (the default) or simple interest."
            },
            "preferredReturnBase": {
              "type": "string",
              "enum": [
                "unreturned",
                "contributed"
              ],
              "description": "IRR pref: accrue on capital not yet returned plus unpaid pref (the default), or on each contribution from its date whatever comes back."
            },
            "catchupMeasure": {
              "type": "string",
              "enum": [
                "preferred",
                "profit"
              ],
              "description": "GP catchup: to the carry share of the pref paid (the default), or until the GP holds the carry share of all profit paid. They differ when the GP shares the catchup with LPs."
            },
            "basis": {
              "type": "string",
              "enum": [
                "whole-fund",
                "deal-by-deal"
              ],
              "description": "Whole fund (the default, European) or deal by deal (American): return of capital owes only the capital in deals exited or written off so far, so carry can be paid before the fund returns all capital. The clawback settles on the whole fund."
            }
          },
          "additionalProperties": false
        },
        "recycling": {
          "type": "object",
          "properties": {
            "defaultTreatment": {
              "type": "string",
              "enum": [
                "retained",
                "deemed"
              ]
            },
            "schedule": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "quarter": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 400
                  },
                  "amount": {
                    "type": "number",
                    "minimum": 0
                  },
                  "treatment": {
                    "type": "string",
                    "enum": [
                      "retained",
                      "deemed"
                    ]
                  }
                },
                "required": [
                  "quarter"
                ],
                "additionalProperties": false
              },
              "maxItems": 400
            }
          },
          "additionalProperties": false
        },
        "lpClasses": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "commitment": {
                "type": "number",
                "minimum": 0
              },
              "isRemainder": {
                "type": "boolean"
              },
              "isFirstLoss": {
                "type": "boolean"
              },
              "overrides": {
                "type": "object",
                "properties": {
                  "carryPct": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1
                  },
                  "preferredReturnMode": {
                    "type": "string",
                    "enum": [
                      "none",
                      "irr",
                      "multiple"
                    ]
                  },
                  "preferredReturnRate": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1
                  },
                  "preferredReturnMultiple": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "catchupPct": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1
                  },
                  "catchupGpShare": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1
                  },
                  "carryTiers": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "moicThreshold": {
                          "type": "number",
                          "minimum": 0
                        },
                        "irrThreshold": {
                          "type": "number",
                          "minimum": 0,
                          "maximum": 1,
                          "description": "Instead of moicThreshold: the band below this tier ends when the LP IRR reaches this rate. With one of these, tiers run in the order given."
                        },
                        "carryPct": {
                          "type": "number",
                          "minimum": 0,
                          "maximum": 1
                        },
                        "catchup": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "moicThreshold",
                        "carryPct"
                      ],
                      "additionalProperties": false
                    },
                    "maxItems": 20
                  }
                },
                "additionalProperties": false
              },
              "feeOverrides": {
                "type": "object",
                "properties": {
                  "ratePct": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1
                  },
                  "yearlyRateSchedule": {
                    "type": "array",
                    "items": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    },
                    "maxItems": 100
                  },
                  "basesByYear": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "committed",
                        "nav",
                        "aum",
                        "step-down"
                      ]
                    },
                    "maxItems": 100
                  }
                },
                "additionalProperties": false
              },
              "callSchedule": {
                "type": "object",
                "properties": {
                  "frequency": {
                    "type": "string",
                    "enum": [
                      "year",
                      "quarter"
                    ]
                  },
                  "pct": {
                    "type": "array",
                    "items": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    },
                    "maxItems": 80
                  }
                },
                "required": [
                  "frequency",
                  "pct"
                ],
                "additionalProperties": false,
                "description": "Call this class on its own schedule instead of as the fund needs cash. pct is a share of the class commitment per fund year (called in the year's first quarter) or per quarter. Whatever the entries leave is called when the fund needs it."
              }
            },
            "required": [
              "name",
              "commitment"
            ],
            "additionalProperties": false
          },
          "minItems": 1,
          "maxItems": 50
        },
        "mgmtCo": {
          "type": "object",
          "properties": {
            "oneTimeFormationCost": {
              "type": "number",
              "minimum": 0
            },
            "expenses": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "label": {
                    "type": "string",
                    "maxLength": 200
                  },
                  "annualCost": {
                    "type": "number",
                    "minimum": 0
                  },
                  "growthRatePerYear": {
                    "type": "number",
                    "minimum": -1,
                    "maximum": 10
                  },
                  "yearsActive": {
                    "type": "array",
                    "items": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 100
                    },
                    "maxItems": 100
                  }
                },
                "required": [
                  "label",
                  "annualCost"
                ],
                "additionalProperties": false
              },
              "maxItems": 100
            },
            "startingCash": {
              "type": "number",
              "minimum": 0
            }
          },
          "required": [
            "expenses"
          ],
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    },
    "granularity": {
      "type": "string",
      "enum": [
        "year",
        "quarter",
        "none"
      ]
    },
    "firstCloseDate": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "format": {
      "type": "string",
      "enum": [
        "json",
        "xlsx",
        "xlsx_url"
      ]
    },
    "fundName": {
      "type": "string",
      "maxLength": 200
    }
  },
  "required": [
    "inputs"
  ],
  "additionalProperties": false
}