{"openapi":"3.1.0","externalDocs":{"description":"Public API methodology","url":"https://investboard.com/calculators/api/methodology"},"info":{"title":"Investboard Public Portfolio Analysis API","version":"2026-10-15.3","description":"Anonymous, stateless portfolio analysis. 25 holdings per snapshot and 16 KiB per request. 60 units per IP per minute: one per submitted holding (both snapshots for compare); revenue-geography reserves 25 extra company units; historical replay costs two per holding; alternatives cost two per source/candidate (ten candidates reserved for catalogue reads); cost-drag/discovery cost one. Limiting is best-effort during outages. Weights, returns and fees are fractions; values are already in baseCurrency."},"servers":[{"url":"https://investboard.com"}],"components":{"schemas":{},"parameters":{}},"paths":{"/api/v1/public/portfolio-analysis":{"get":{"operationId":"listPublicPortfolioAnalyses","summary":"Discover: All eight snapshot analyses","security":[],"responses":{"200":{"description":"Catalog or descriptor with inputSchema, resultSchema and example, in data/error/meta.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":{}},"error":{"type":"null"},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"400":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"404":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"413":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"429":{"description":"Rate limited; honor Retry-After in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"500":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}}}},"post":{"operationId":"analyzePublicPortfolio","summary":"All eight snapshot analyses","security":[],"description":"Anonymous and stateless. The base POST runs the eight snapshot analyses. Snapshot endpoints return analyses with other sections not_requested; the standalone operations return capability plus analysis. Inspect statuses, reasons, coverage and population definitions even on HTTP 200.","requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["en","de"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["weights"],"default":"weights"},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["isin","weight"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["assetClass","currency","weight"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["holdings"],"additionalProperties":false},{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["en","de"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["values"]},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["isin","value"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["assetClass","currency","value"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["basis","holdings"],"additionalProperties":false}]},"example":{"basis":"weights","baseCurrency":"EUR","holdings":[{"isin":"IE00B4L5Y983","weight":0.6},{"isin":"IE00B3XXRP09","weight":0.3},{"assetClass":"cash","currency":"EUR","weight":0.1}],"locale":"en"}}}},"responses":{"200":{"description":"Explicit status, coverage and unknowns.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"modelVersion":{"type":"string"},"computedAt":{"type":"string","format":"date-time"},"baseCurrency":{"type":"string"},"basis":{"type":"string","enum":["weights","values"]},"totalValue":{"type":["number","null"],"minimum":0},"resolvedPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"constituentsAsOf":{"type":["string","null"],"description":"Oldest known fund-constituent date; null when unavailable. Not the date of all reference data."},"holdings":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"value":{"type":["number","null"],"minimum":0},"assetClass":{"type":["string","null"]},"status":{"type":"string","enum":["resolved","unresolved"]}},"required":["isin","name","weight","value","assetClass","status"],"additionalProperties":false}},"analyses":{"type":"object","properties":{"allocation":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["whole_portfolio"]},"coverage":{"type":"number","minimum":0,"maximum":1},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","coverage","buckets"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"overlap":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"method":{"type":"string","enum":["sum_minimum_constituent_weights"]},"fundCount":{"type":"integer","minimum":0},"pairs":{"type":"array","items":{"type":"object","properties":{"fundA":{"type":"string"},"fundB":{"type":"string"},"isinA":{"type":["string","null"]},"isinB":{"type":["string","null"]},"overlap":{"type":"number","minimum":0,"maximum":1,"description":"Sum of the smaller constituent weights in the two funds, not a percentage of the portfolio."},"sharedCount":{"type":"integer","minimum":0},"sharedTail":{"type":["object","null"],"properties":{"count":{"type":"integer","minimum":0},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["count","weight"],"additionalProperties":false,"description":"Shared constituents beyond the returned list; weight uses the same overlap measure as the headline."},"sharedHoldings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"weightInA":{"type":"number","minimum":0,"maximum":1},"weightInB":{"type":"number","minimum":0,"maximum":1}},"required":["id","name","weightInA","weightInB"],"additionalProperties":false}}},"required":["fundA","fundB","isinA","isinB","overlap","sharedCount","sharedTail","sharedHoldings"],"additionalProperties":false}},"funds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"status":{"type":"string","enum":["full","partial","none"]},"coveredWeight":{"type":"number","minimum":0,"maximum":1},"asOf":{"type":["string","null"]}},"required":["isin","name","status","coveredWeight","asOf"],"additionalProperties":false}}},"required":["method","fundCount","pairs","funds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"look-through":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"positions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"isin":{"type":["string","null"]},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"value":{"type":["number","null"],"minimum":0},"sector":{"type":["string","null"]},"region":{"type":["string","null"]},"provenance":{"type":"object","properties":{"direct":{"type":"number","minimum":0,"maximum":1},"viaFunds":{"type":"array","items":{"type":"object","properties":{"fund":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"shareInFund":{"type":"number","minimum":0,"maximum":1}},"required":["fund","weight","shareInFund"],"additionalProperties":false}}},"required":["direct","viaFunds"],"additionalProperties":false}},"required":["id","isin","name","weight","value","sector","region","provenance"],"additionalProperties":false}},"positionCount":{"type":"integer","minimum":0},"unresolvedFundWeight":{"type":"number","minimum":0,"maximum":1,"description":"Whole-portfolio share in undissolved equity fund remainders; these are not named companies."},"tailWeight":{"type":"number","minimum":0,"maximum":1},"funds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"status":{"type":"string","enum":["full","partial","none"]},"coveredWeight":{"type":"number","minimum":0,"maximum":1},"asOf":{"type":["string","null"]}},"required":["isin","name","status","coveredWeight","asOf"],"additionalProperties":false}}},"required":["scope","positions","positionCount","unresolvedFundWeight","tailWeight","funds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"concentration":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"coverage":{"type":"number","minimum":0,"maximum":1},"issuers":{"type":"array","items":{"type":"object","properties":{"issuerId":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["issuerId","name","weight"],"additionalProperties":false}},"issuerCount":{"type":["integer","null"],"minimum":0},"tailWeight":{"type":["number","null"],"minimum":0,"maximum":1},"largestIssuer":{"type":["object","null"],"properties":{"issuerId":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["issuerId","name","weight"],"additionalProperties":false},"hhi":{"type":["number","null"],"minimum":0,"maximum":1,"description":"Herfindahl index over the equity issuer book; withheld below 80% coverage."},"effectiveN":{"type":["number","null"],"minimum":0,"description":"Effective issuer count; withheld below 80% coverage."}},"required":["scope","coverage","issuers","issuerCount","tailWeight","largestIssuer","hhi","effectiveN"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"sectors":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"geography":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"countries":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false},"regions":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false}},"required":["countries","regions"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"currencies":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"equityExposure":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false},"heldCurrencies":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false},"description":"Resolved listing currencies and caller-stated cash currencies; separate from underlying exposure."},"hedgedFunds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"currency":{"type":["string","null"]},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["isin","name","currency","weight"],"additionalProperties":false}}},"required":["equityExposure","heldCurrencies","hedgedFunds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"costs":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["ongoing_fund_charges"]},"coveredPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"fundPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"unknownPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"weightedTer":{"type":["number","null"],"minimum":0,"description":"TER fraction on the covered fund portion, not on the entire portfolio. 0.002 means 0.2%."},"knownAnnualCost":{"type":["number","null"],"minimum":0,"description":"Known fund charges in baseCurrency; a subtotal when coverage is incomplete. Null for weight-only input."},"positions":{"type":"array","items":{"type":"object","properties":{"isin":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"ter":{"type":["number","null"],"minimum":0},"annualCost":{"type":["number","null"],"minimum":0}},"required":["isin","name","weight","ter","annualCost"],"additionalProperties":false}}},"required":["scope","coveredPortfolioWeight","fundPortfolioWeight","unknownPortfolioWeight","weightedTer","knownAnnualCost","positions"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false}},"required":["allocation","overlap","look-through","concentration","sectors","geography","currencies","costs"],"additionalProperties":false},"assumptions":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}},"links":{"type":"object","properties":{"documentation":{"type":"string","format":"uri"},"catalog":{"type":"string","format":"uri"}},"required":["documentation","catalog"],"additionalProperties":false}},"required":["modelVersion","computedAt","baseCurrency","basis","totalValue","resolvedPortfolioWeight","constituentsAsOf","holdings","analyses","assumptions","limitations","links"],"additionalProperties":false},"error":{"type":"null"},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"400":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"404":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"413":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"429":{"description":"Rate limited; honor Retry-After in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"500":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}}}}},"/api/v1/public/portfolio-analysis/allocation":{"get":{"operationId":"describePublicPortfolioAllocation","summary":"Discover: Whole-portfolio allocation by asset class, with unknown holdings retained.","security":[],"responses":{"200":{"description":"Catalog or descriptor with inputSchema, resultSchema and example, in data/error/meta.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":{}},"error":{"type":"null"},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"400":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"404":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"413":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"429":{"description":"Rate limited; honor Retry-After in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"500":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}}}},"post":{"operationId":"analyzePublicPortfolioAllocation","summary":"Whole-portfolio allocation by asset class, with unknown holdings retained.","security":[],"description":"Anonymous and stateless. The base POST runs the eight snapshot analyses. Snapshot endpoints return analyses with other sections not_requested; the standalone operations return capability plus analysis. Inspect statuses, reasons, coverage and population definitions even on HTTP 200.","requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["en","de"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["weights"],"default":"weights"},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["isin","weight"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["assetClass","currency","weight"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["holdings"],"additionalProperties":false},{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["en","de"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["values"]},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["isin","value"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["assetClass","currency","value"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["basis","holdings"],"additionalProperties":false}]},"example":{"basis":"weights","baseCurrency":"EUR","holdings":[{"isin":"IE00B4L5Y983","weight":0.6},{"isin":"IE00B3XXRP09","weight":0.3},{"assetClass":"cash","currency":"EUR","weight":0.1}],"locale":"en"}}}},"responses":{"200":{"description":"Explicit status, coverage and unknowns.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"modelVersion":{"type":"string"},"computedAt":{"type":"string","format":"date-time"},"baseCurrency":{"type":"string"},"basis":{"type":"string","enum":["weights","values"]},"totalValue":{"type":["number","null"],"minimum":0},"resolvedPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"constituentsAsOf":{"type":["string","null"],"description":"Oldest known fund-constituent date; null when unavailable. Not the date of all reference data."},"holdings":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"value":{"type":["number","null"],"minimum":0},"assetClass":{"type":["string","null"]},"status":{"type":"string","enum":["resolved","unresolved"]}},"required":["isin","name","weight","value","assetClass","status"],"additionalProperties":false}},"analyses":{"type":"object","properties":{"allocation":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["whole_portfolio"]},"coverage":{"type":"number","minimum":0,"maximum":1},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","coverage","buckets"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"overlap":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"method":{"type":"string","enum":["sum_minimum_constituent_weights"]},"fundCount":{"type":"integer","minimum":0},"pairs":{"type":"array","items":{"type":"object","properties":{"fundA":{"type":"string"},"fundB":{"type":"string"},"isinA":{"type":["string","null"]},"isinB":{"type":["string","null"]},"overlap":{"type":"number","minimum":0,"maximum":1,"description":"Sum of the smaller constituent weights in the two funds, not a percentage of the portfolio."},"sharedCount":{"type":"integer","minimum":0},"sharedTail":{"type":["object","null"],"properties":{"count":{"type":"integer","minimum":0},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["count","weight"],"additionalProperties":false,"description":"Shared constituents beyond the returned list; weight uses the same overlap measure as the headline."},"sharedHoldings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"weightInA":{"type":"number","minimum":0,"maximum":1},"weightInB":{"type":"number","minimum":0,"maximum":1}},"required":["id","name","weightInA","weightInB"],"additionalProperties":false}}},"required":["fundA","fundB","isinA","isinB","overlap","sharedCount","sharedTail","sharedHoldings"],"additionalProperties":false}},"funds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"status":{"type":"string","enum":["full","partial","none"]},"coveredWeight":{"type":"number","minimum":0,"maximum":1},"asOf":{"type":["string","null"]}},"required":["isin","name","status","coveredWeight","asOf"],"additionalProperties":false}}},"required":["method","fundCount","pairs","funds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"look-through":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"positions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"isin":{"type":["string","null"]},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"value":{"type":["number","null"],"minimum":0},"sector":{"type":["string","null"]},"region":{"type":["string","null"]},"provenance":{"type":"object","properties":{"direct":{"type":"number","minimum":0,"maximum":1},"viaFunds":{"type":"array","items":{"type":"object","properties":{"fund":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"shareInFund":{"type":"number","minimum":0,"maximum":1}},"required":["fund","weight","shareInFund"],"additionalProperties":false}}},"required":["direct","viaFunds"],"additionalProperties":false}},"required":["id","isin","name","weight","value","sector","region","provenance"],"additionalProperties":false}},"positionCount":{"type":"integer","minimum":0},"unresolvedFundWeight":{"type":"number","minimum":0,"maximum":1,"description":"Whole-portfolio share in undissolved equity fund remainders; these are not named companies."},"tailWeight":{"type":"number","minimum":0,"maximum":1},"funds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"status":{"type":"string","enum":["full","partial","none"]},"coveredWeight":{"type":"number","minimum":0,"maximum":1},"asOf":{"type":["string","null"]}},"required":["isin","name","status","coveredWeight","asOf"],"additionalProperties":false}}},"required":["scope","positions","positionCount","unresolvedFundWeight","tailWeight","funds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"concentration":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"coverage":{"type":"number","minimum":0,"maximum":1},"issuers":{"type":"array","items":{"type":"object","properties":{"issuerId":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["issuerId","name","weight"],"additionalProperties":false}},"issuerCount":{"type":["integer","null"],"minimum":0},"tailWeight":{"type":["number","null"],"minimum":0,"maximum":1},"largestIssuer":{"type":["object","null"],"properties":{"issuerId":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["issuerId","name","weight"],"additionalProperties":false},"hhi":{"type":["number","null"],"minimum":0,"maximum":1,"description":"Herfindahl index over the equity issuer book; withheld below 80% coverage."},"effectiveN":{"type":["number","null"],"minimum":0,"description":"Effective issuer count; withheld below 80% coverage."}},"required":["scope","coverage","issuers","issuerCount","tailWeight","largestIssuer","hhi","effectiveN"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"sectors":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"geography":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"countries":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false},"regions":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false}},"required":["countries","regions"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"currencies":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"equityExposure":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false},"heldCurrencies":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false},"description":"Resolved listing currencies and caller-stated cash currencies; separate from underlying exposure."},"hedgedFunds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"currency":{"type":["string","null"]},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["isin","name","currency","weight"],"additionalProperties":false}}},"required":["equityExposure","heldCurrencies","hedgedFunds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"costs":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["ongoing_fund_charges"]},"coveredPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"fundPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"unknownPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"weightedTer":{"type":["number","null"],"minimum":0,"description":"TER fraction on the covered fund portion, not on the entire portfolio. 0.002 means 0.2%."},"knownAnnualCost":{"type":["number","null"],"minimum":0,"description":"Known fund charges in baseCurrency; a subtotal when coverage is incomplete. Null for weight-only input."},"positions":{"type":"array","items":{"type":"object","properties":{"isin":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"ter":{"type":["number","null"],"minimum":0},"annualCost":{"type":["number","null"],"minimum":0}},"required":["isin","name","weight","ter","annualCost"],"additionalProperties":false}}},"required":["scope","coveredPortfolioWeight","fundPortfolioWeight","unknownPortfolioWeight","weightedTer","knownAnnualCost","positions"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false}},"required":["allocation","overlap","look-through","concentration","sectors","geography","currencies","costs"],"additionalProperties":false},"assumptions":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}},"links":{"type":"object","properties":{"documentation":{"type":"string","format":"uri"},"catalog":{"type":"string","format":"uri"}},"required":["documentation","catalog"],"additionalProperties":false}},"required":["modelVersion","computedAt","baseCurrency","basis","totalValue","resolvedPortfolioWeight","constituentsAsOf","holdings","analyses","assumptions","limitations","links"],"additionalProperties":false},"error":{"type":"null"},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"400":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"404":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"413":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"429":{"description":"Rate limited; honor Retry-After in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"500":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}}}}},"/api/v1/public/portfolio-analysis/overlap":{"get":{"operationId":"describePublicPortfolioOverlap","summary":"Discover: Pairwise equity fund overlap, shared companies and constituent coverage.","security":[],"responses":{"200":{"description":"Catalog or descriptor with inputSchema, resultSchema and example, in data/error/meta.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":{}},"error":{"type":"null"},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"400":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"404":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"413":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"429":{"description":"Rate limited; honor Retry-After in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"500":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}}}},"post":{"operationId":"analyzePublicPortfolioOverlap","summary":"Pairwise equity fund overlap, shared companies and constituent coverage.","security":[],"description":"Anonymous and stateless. The base POST runs the eight snapshot analyses. Snapshot endpoints return analyses with other sections not_requested; the standalone operations return capability plus analysis. Inspect statuses, reasons, coverage and population definitions even on HTTP 200.","requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["en","de"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["weights"],"default":"weights"},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["isin","weight"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["assetClass","currency","weight"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["holdings"],"additionalProperties":false},{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["en","de"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["values"]},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["isin","value"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["assetClass","currency","value"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["basis","holdings"],"additionalProperties":false}]},"example":{"basis":"weights","baseCurrency":"EUR","holdings":[{"isin":"IE00B4L5Y983","weight":0.6},{"isin":"IE00B3XXRP09","weight":0.3},{"assetClass":"cash","currency":"EUR","weight":0.1}],"locale":"en"}}}},"responses":{"200":{"description":"Explicit status, coverage and unknowns.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"modelVersion":{"type":"string"},"computedAt":{"type":"string","format":"date-time"},"baseCurrency":{"type":"string"},"basis":{"type":"string","enum":["weights","values"]},"totalValue":{"type":["number","null"],"minimum":0},"resolvedPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"constituentsAsOf":{"type":["string","null"],"description":"Oldest known fund-constituent date; null when unavailable. Not the date of all reference data."},"holdings":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"value":{"type":["number","null"],"minimum":0},"assetClass":{"type":["string","null"]},"status":{"type":"string","enum":["resolved","unresolved"]}},"required":["isin","name","weight","value","assetClass","status"],"additionalProperties":false}},"analyses":{"type":"object","properties":{"allocation":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["whole_portfolio"]},"coverage":{"type":"number","minimum":0,"maximum":1},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","coverage","buckets"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"overlap":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"method":{"type":"string","enum":["sum_minimum_constituent_weights"]},"fundCount":{"type":"integer","minimum":0},"pairs":{"type":"array","items":{"type":"object","properties":{"fundA":{"type":"string"},"fundB":{"type":"string"},"isinA":{"type":["string","null"]},"isinB":{"type":["string","null"]},"overlap":{"type":"number","minimum":0,"maximum":1,"description":"Sum of the smaller constituent weights in the two funds, not a percentage of the portfolio."},"sharedCount":{"type":"integer","minimum":0},"sharedTail":{"type":["object","null"],"properties":{"count":{"type":"integer","minimum":0},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["count","weight"],"additionalProperties":false,"description":"Shared constituents beyond the returned list; weight uses the same overlap measure as the headline."},"sharedHoldings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"weightInA":{"type":"number","minimum":0,"maximum":1},"weightInB":{"type":"number","minimum":0,"maximum":1}},"required":["id","name","weightInA","weightInB"],"additionalProperties":false}}},"required":["fundA","fundB","isinA","isinB","overlap","sharedCount","sharedTail","sharedHoldings"],"additionalProperties":false}},"funds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"status":{"type":"string","enum":["full","partial","none"]},"coveredWeight":{"type":"number","minimum":0,"maximum":1},"asOf":{"type":["string","null"]}},"required":["isin","name","status","coveredWeight","asOf"],"additionalProperties":false}}},"required":["method","fundCount","pairs","funds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"look-through":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"positions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"isin":{"type":["string","null"]},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"value":{"type":["number","null"],"minimum":0},"sector":{"type":["string","null"]},"region":{"type":["string","null"]},"provenance":{"type":"object","properties":{"direct":{"type":"number","minimum":0,"maximum":1},"viaFunds":{"type":"array","items":{"type":"object","properties":{"fund":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"shareInFund":{"type":"number","minimum":0,"maximum":1}},"required":["fund","weight","shareInFund"],"additionalProperties":false}}},"required":["direct","viaFunds"],"additionalProperties":false}},"required":["id","isin","name","weight","value","sector","region","provenance"],"additionalProperties":false}},"positionCount":{"type":"integer","minimum":0},"unresolvedFundWeight":{"type":"number","minimum":0,"maximum":1,"description":"Whole-portfolio share in undissolved equity fund remainders; these are not named companies."},"tailWeight":{"type":"number","minimum":0,"maximum":1},"funds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"status":{"type":"string","enum":["full","partial","none"]},"coveredWeight":{"type":"number","minimum":0,"maximum":1},"asOf":{"type":["string","null"]}},"required":["isin","name","status","coveredWeight","asOf"],"additionalProperties":false}}},"required":["scope","positions","positionCount","unresolvedFundWeight","tailWeight","funds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"concentration":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"coverage":{"type":"number","minimum":0,"maximum":1},"issuers":{"type":"array","items":{"type":"object","properties":{"issuerId":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["issuerId","name","weight"],"additionalProperties":false}},"issuerCount":{"type":["integer","null"],"minimum":0},"tailWeight":{"type":["number","null"],"minimum":0,"maximum":1},"largestIssuer":{"type":["object","null"],"properties":{"issuerId":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["issuerId","name","weight"],"additionalProperties":false},"hhi":{"type":["number","null"],"minimum":0,"maximum":1,"description":"Herfindahl index over the equity issuer book; withheld below 80% coverage."},"effectiveN":{"type":["number","null"],"minimum":0,"description":"Effective issuer count; withheld below 80% coverage."}},"required":["scope","coverage","issuers","issuerCount","tailWeight","largestIssuer","hhi","effectiveN"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"sectors":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"geography":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"countries":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false},"regions":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false}},"required":["countries","regions"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"currencies":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"equityExposure":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false},"heldCurrencies":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false},"description":"Resolved listing currencies and caller-stated cash currencies; separate from underlying exposure."},"hedgedFunds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"currency":{"type":["string","null"]},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["isin","name","currency","weight"],"additionalProperties":false}}},"required":["equityExposure","heldCurrencies","hedgedFunds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"costs":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["ongoing_fund_charges"]},"coveredPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"fundPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"unknownPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"weightedTer":{"type":["number","null"],"minimum":0,"description":"TER fraction on the covered fund portion, not on the entire portfolio. 0.002 means 0.2%."},"knownAnnualCost":{"type":["number","null"],"minimum":0,"description":"Known fund charges in baseCurrency; a subtotal when coverage is incomplete. Null for weight-only input."},"positions":{"type":"array","items":{"type":"object","properties":{"isin":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"ter":{"type":["number","null"],"minimum":0},"annualCost":{"type":["number","null"],"minimum":0}},"required":["isin","name","weight","ter","annualCost"],"additionalProperties":false}}},"required":["scope","coveredPortfolioWeight","fundPortfolioWeight","unknownPortfolioWeight","weightedTer","knownAnnualCost","positions"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false}},"required":["allocation","overlap","look-through","concentration","sectors","geography","currencies","costs"],"additionalProperties":false},"assumptions":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}},"links":{"type":"object","properties":{"documentation":{"type":"string","format":"uri"},"catalog":{"type":"string","format":"uri"}},"required":["documentation","catalog"],"additionalProperties":false}},"required":["modelVersion","computedAt","baseCurrency","basis","totalValue","resolvedPortfolioWeight","constituentsAsOf","holdings","analyses","assumptions","limitations","links"],"additionalProperties":false},"error":{"type":"null"},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"400":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"404":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"413":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"429":{"description":"Rate limited; honor Retry-After in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"500":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}}}}},"/api/v1/public/portfolio-analysis/look-through":{"get":{"operationId":"describePublicPortfolioLookThrough","summary":"Discover: Underlying equity positions, direct and fund provenance, and omitted tail weight.","security":[],"responses":{"200":{"description":"Catalog or descriptor with inputSchema, resultSchema and example, in data/error/meta.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":{}},"error":{"type":"null"},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"400":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"404":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"413":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"429":{"description":"Rate limited; honor Retry-After in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"500":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}}}},"post":{"operationId":"analyzePublicPortfolioLookThrough","summary":"Underlying equity positions, direct and fund provenance, and omitted tail weight.","security":[],"description":"Anonymous and stateless. The base POST runs the eight snapshot analyses. Snapshot endpoints return analyses with other sections not_requested; the standalone operations return capability plus analysis. Inspect statuses, reasons, coverage and population definitions even on HTTP 200.","requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["en","de"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["weights"],"default":"weights"},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["isin","weight"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["assetClass","currency","weight"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["holdings"],"additionalProperties":false},{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["en","de"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["values"]},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["isin","value"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["assetClass","currency","value"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["basis","holdings"],"additionalProperties":false}]},"example":{"basis":"weights","baseCurrency":"EUR","holdings":[{"isin":"IE00B4L5Y983","weight":0.6},{"isin":"IE00B3XXRP09","weight":0.3},{"assetClass":"cash","currency":"EUR","weight":0.1}],"locale":"en"}}}},"responses":{"200":{"description":"Explicit status, coverage and unknowns.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"modelVersion":{"type":"string"},"computedAt":{"type":"string","format":"date-time"},"baseCurrency":{"type":"string"},"basis":{"type":"string","enum":["weights","values"]},"totalValue":{"type":["number","null"],"minimum":0},"resolvedPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"constituentsAsOf":{"type":["string","null"],"description":"Oldest known fund-constituent date; null when unavailable. Not the date of all reference data."},"holdings":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"value":{"type":["number","null"],"minimum":0},"assetClass":{"type":["string","null"]},"status":{"type":"string","enum":["resolved","unresolved"]}},"required":["isin","name","weight","value","assetClass","status"],"additionalProperties":false}},"analyses":{"type":"object","properties":{"allocation":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["whole_portfolio"]},"coverage":{"type":"number","minimum":0,"maximum":1},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","coverage","buckets"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"overlap":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"method":{"type":"string","enum":["sum_minimum_constituent_weights"]},"fundCount":{"type":"integer","minimum":0},"pairs":{"type":"array","items":{"type":"object","properties":{"fundA":{"type":"string"},"fundB":{"type":"string"},"isinA":{"type":["string","null"]},"isinB":{"type":["string","null"]},"overlap":{"type":"number","minimum":0,"maximum":1,"description":"Sum of the smaller constituent weights in the two funds, not a percentage of the portfolio."},"sharedCount":{"type":"integer","minimum":0},"sharedTail":{"type":["object","null"],"properties":{"count":{"type":"integer","minimum":0},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["count","weight"],"additionalProperties":false,"description":"Shared constituents beyond the returned list; weight uses the same overlap measure as the headline."},"sharedHoldings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"weightInA":{"type":"number","minimum":0,"maximum":1},"weightInB":{"type":"number","minimum":0,"maximum":1}},"required":["id","name","weightInA","weightInB"],"additionalProperties":false}}},"required":["fundA","fundB","isinA","isinB","overlap","sharedCount","sharedTail","sharedHoldings"],"additionalProperties":false}},"funds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"status":{"type":"string","enum":["full","partial","none"]},"coveredWeight":{"type":"number","minimum":0,"maximum":1},"asOf":{"type":["string","null"]}},"required":["isin","name","status","coveredWeight","asOf"],"additionalProperties":false}}},"required":["method","fundCount","pairs","funds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"look-through":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"positions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"isin":{"type":["string","null"]},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"value":{"type":["number","null"],"minimum":0},"sector":{"type":["string","null"]},"region":{"type":["string","null"]},"provenance":{"type":"object","properties":{"direct":{"type":"number","minimum":0,"maximum":1},"viaFunds":{"type":"array","items":{"type":"object","properties":{"fund":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"shareInFund":{"type":"number","minimum":0,"maximum":1}},"required":["fund","weight","shareInFund"],"additionalProperties":false}}},"required":["direct","viaFunds"],"additionalProperties":false}},"required":["id","isin","name","weight","value","sector","region","provenance"],"additionalProperties":false}},"positionCount":{"type":"integer","minimum":0},"unresolvedFundWeight":{"type":"number","minimum":0,"maximum":1,"description":"Whole-portfolio share in undissolved equity fund remainders; these are not named companies."},"tailWeight":{"type":"number","minimum":0,"maximum":1},"funds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"status":{"type":"string","enum":["full","partial","none"]},"coveredWeight":{"type":"number","minimum":0,"maximum":1},"asOf":{"type":["string","null"]}},"required":["isin","name","status","coveredWeight","asOf"],"additionalProperties":false}}},"required":["scope","positions","positionCount","unresolvedFundWeight","tailWeight","funds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"concentration":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"coverage":{"type":"number","minimum":0,"maximum":1},"issuers":{"type":"array","items":{"type":"object","properties":{"issuerId":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["issuerId","name","weight"],"additionalProperties":false}},"issuerCount":{"type":["integer","null"],"minimum":0},"tailWeight":{"type":["number","null"],"minimum":0,"maximum":1},"largestIssuer":{"type":["object","null"],"properties":{"issuerId":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["issuerId","name","weight"],"additionalProperties":false},"hhi":{"type":["number","null"],"minimum":0,"maximum":1,"description":"Herfindahl index over the equity issuer book; withheld below 80% coverage."},"effectiveN":{"type":["number","null"],"minimum":0,"description":"Effective issuer count; withheld below 80% coverage."}},"required":["scope","coverage","issuers","issuerCount","tailWeight","largestIssuer","hhi","effectiveN"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"sectors":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"geography":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"countries":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false},"regions":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false}},"required":["countries","regions"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"currencies":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"equityExposure":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false},"heldCurrencies":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false},"description":"Resolved listing currencies and caller-stated cash currencies; separate from underlying exposure."},"hedgedFunds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"currency":{"type":["string","null"]},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["isin","name","currency","weight"],"additionalProperties":false}}},"required":["equityExposure","heldCurrencies","hedgedFunds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"costs":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["ongoing_fund_charges"]},"coveredPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"fundPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"unknownPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"weightedTer":{"type":["number","null"],"minimum":0,"description":"TER fraction on the covered fund portion, not on the entire portfolio. 0.002 means 0.2%."},"knownAnnualCost":{"type":["number","null"],"minimum":0,"description":"Known fund charges in baseCurrency; a subtotal when coverage is incomplete. Null for weight-only input."},"positions":{"type":"array","items":{"type":"object","properties":{"isin":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"ter":{"type":["number","null"],"minimum":0},"annualCost":{"type":["number","null"],"minimum":0}},"required":["isin","name","weight","ter","annualCost"],"additionalProperties":false}}},"required":["scope","coveredPortfolioWeight","fundPortfolioWeight","unknownPortfolioWeight","weightedTer","knownAnnualCost","positions"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false}},"required":["allocation","overlap","look-through","concentration","sectors","geography","currencies","costs"],"additionalProperties":false},"assumptions":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}},"links":{"type":"object","properties":{"documentation":{"type":"string","format":"uri"},"catalog":{"type":"string","format":"uri"}},"required":["documentation","catalog"],"additionalProperties":false}},"required":["modelVersion","computedAt","baseCurrency","basis","totalValue","resolvedPortfolioWeight","constituentsAsOf","holdings","analyses","assumptions","limitations","links"],"additionalProperties":false},"error":{"type":"null"},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"400":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"404":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"413":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"429":{"description":"Rate limited; honor Retry-After in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"500":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}}}}},"/api/v1/public/portfolio-analysis/concentration":{"get":{"operationId":"describePublicPortfolioConcentration","summary":"Discover: Issuer concentration, HHI and effective issuer count on the equity book; coverage-gated.","security":[],"responses":{"200":{"description":"Catalog or descriptor with inputSchema, resultSchema and example, in data/error/meta.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":{}},"error":{"type":"null"},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"400":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"404":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"413":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"429":{"description":"Rate limited; honor Retry-After in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"500":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}}}},"post":{"operationId":"analyzePublicPortfolioConcentration","summary":"Issuer concentration, HHI and effective issuer count on the equity book; coverage-gated.","security":[],"description":"Anonymous and stateless. The base POST runs the eight snapshot analyses. Snapshot endpoints return analyses with other sections not_requested; the standalone operations return capability plus analysis. Inspect statuses, reasons, coverage and population definitions even on HTTP 200.","requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["en","de"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["weights"],"default":"weights"},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["isin","weight"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["assetClass","currency","weight"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["holdings"],"additionalProperties":false},{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["en","de"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["values"]},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["isin","value"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["assetClass","currency","value"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["basis","holdings"],"additionalProperties":false}]},"example":{"basis":"weights","baseCurrency":"EUR","holdings":[{"isin":"IE00B4L5Y983","weight":0.6},{"isin":"IE00B3XXRP09","weight":0.3},{"assetClass":"cash","currency":"EUR","weight":0.1}],"locale":"en"}}}},"responses":{"200":{"description":"Explicit status, coverage and unknowns.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"modelVersion":{"type":"string"},"computedAt":{"type":"string","format":"date-time"},"baseCurrency":{"type":"string"},"basis":{"type":"string","enum":["weights","values"]},"totalValue":{"type":["number","null"],"minimum":0},"resolvedPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"constituentsAsOf":{"type":["string","null"],"description":"Oldest known fund-constituent date; null when unavailable. Not the date of all reference data."},"holdings":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"value":{"type":["number","null"],"minimum":0},"assetClass":{"type":["string","null"]},"status":{"type":"string","enum":["resolved","unresolved"]}},"required":["isin","name","weight","value","assetClass","status"],"additionalProperties":false}},"analyses":{"type":"object","properties":{"allocation":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["whole_portfolio"]},"coverage":{"type":"number","minimum":0,"maximum":1},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","coverage","buckets"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"overlap":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"method":{"type":"string","enum":["sum_minimum_constituent_weights"]},"fundCount":{"type":"integer","minimum":0},"pairs":{"type":"array","items":{"type":"object","properties":{"fundA":{"type":"string"},"fundB":{"type":"string"},"isinA":{"type":["string","null"]},"isinB":{"type":["string","null"]},"overlap":{"type":"number","minimum":0,"maximum":1,"description":"Sum of the smaller constituent weights in the two funds, not a percentage of the portfolio."},"sharedCount":{"type":"integer","minimum":0},"sharedTail":{"type":["object","null"],"properties":{"count":{"type":"integer","minimum":0},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["count","weight"],"additionalProperties":false,"description":"Shared constituents beyond the returned list; weight uses the same overlap measure as the headline."},"sharedHoldings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"weightInA":{"type":"number","minimum":0,"maximum":1},"weightInB":{"type":"number","minimum":0,"maximum":1}},"required":["id","name","weightInA","weightInB"],"additionalProperties":false}}},"required":["fundA","fundB","isinA","isinB","overlap","sharedCount","sharedTail","sharedHoldings"],"additionalProperties":false}},"funds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"status":{"type":"string","enum":["full","partial","none"]},"coveredWeight":{"type":"number","minimum":0,"maximum":1},"asOf":{"type":["string","null"]}},"required":["isin","name","status","coveredWeight","asOf"],"additionalProperties":false}}},"required":["method","fundCount","pairs","funds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"look-through":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"positions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"isin":{"type":["string","null"]},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"value":{"type":["number","null"],"minimum":0},"sector":{"type":["string","null"]},"region":{"type":["string","null"]},"provenance":{"type":"object","properties":{"direct":{"type":"number","minimum":0,"maximum":1},"viaFunds":{"type":"array","items":{"type":"object","properties":{"fund":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"shareInFund":{"type":"number","minimum":0,"maximum":1}},"required":["fund","weight","shareInFund"],"additionalProperties":false}}},"required":["direct","viaFunds"],"additionalProperties":false}},"required":["id","isin","name","weight","value","sector","region","provenance"],"additionalProperties":false}},"positionCount":{"type":"integer","minimum":0},"unresolvedFundWeight":{"type":"number","minimum":0,"maximum":1,"description":"Whole-portfolio share in undissolved equity fund remainders; these are not named companies."},"tailWeight":{"type":"number","minimum":0,"maximum":1},"funds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"status":{"type":"string","enum":["full","partial","none"]},"coveredWeight":{"type":"number","minimum":0,"maximum":1},"asOf":{"type":["string","null"]}},"required":["isin","name","status","coveredWeight","asOf"],"additionalProperties":false}}},"required":["scope","positions","positionCount","unresolvedFundWeight","tailWeight","funds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"concentration":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"coverage":{"type":"number","minimum":0,"maximum":1},"issuers":{"type":"array","items":{"type":"object","properties":{"issuerId":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["issuerId","name","weight"],"additionalProperties":false}},"issuerCount":{"type":["integer","null"],"minimum":0},"tailWeight":{"type":["number","null"],"minimum":0,"maximum":1},"largestIssuer":{"type":["object","null"],"properties":{"issuerId":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["issuerId","name","weight"],"additionalProperties":false},"hhi":{"type":["number","null"],"minimum":0,"maximum":1,"description":"Herfindahl index over the equity issuer book; withheld below 80% coverage."},"effectiveN":{"type":["number","null"],"minimum":0,"description":"Effective issuer count; withheld below 80% coverage."}},"required":["scope","coverage","issuers","issuerCount","tailWeight","largestIssuer","hhi","effectiveN"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"sectors":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"geography":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"countries":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false},"regions":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false}},"required":["countries","regions"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"currencies":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"equityExposure":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false},"heldCurrencies":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false},"description":"Resolved listing currencies and caller-stated cash currencies; separate from underlying exposure."},"hedgedFunds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"currency":{"type":["string","null"]},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["isin","name","currency","weight"],"additionalProperties":false}}},"required":["equityExposure","heldCurrencies","hedgedFunds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"costs":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["ongoing_fund_charges"]},"coveredPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"fundPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"unknownPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"weightedTer":{"type":["number","null"],"minimum":0,"description":"TER fraction on the covered fund portion, not on the entire portfolio. 0.002 means 0.2%."},"knownAnnualCost":{"type":["number","null"],"minimum":0,"description":"Known fund charges in baseCurrency; a subtotal when coverage is incomplete. Null for weight-only input."},"positions":{"type":"array","items":{"type":"object","properties":{"isin":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"ter":{"type":["number","null"],"minimum":0},"annualCost":{"type":["number","null"],"minimum":0}},"required":["isin","name","weight","ter","annualCost"],"additionalProperties":false}}},"required":["scope","coveredPortfolioWeight","fundPortfolioWeight","unknownPortfolioWeight","weightedTer","knownAnnualCost","positions"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false}},"required":["allocation","overlap","look-through","concentration","sectors","geography","currencies","costs"],"additionalProperties":false},"assumptions":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}},"links":{"type":"object","properties":{"documentation":{"type":"string","format":"uri"},"catalog":{"type":"string","format":"uri"}},"required":["documentation","catalog"],"additionalProperties":false}},"required":["modelVersion","computedAt","baseCurrency","basis","totalValue","resolvedPortfolioWeight","constituentsAsOf","holdings","analyses","assumptions","limitations","links"],"additionalProperties":false},"error":{"type":"null"},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"400":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"404":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"413":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"429":{"description":"Rate limited; honor Retry-After in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"500":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}}}}},"/api/v1/public/portfolio-analysis/sectors":{"get":{"operationId":"describePublicPortfolioSectors","summary":"Discover: Underlying equity sectors, with an explicit unknown bucket.","security":[],"responses":{"200":{"description":"Catalog or descriptor with inputSchema, resultSchema and example, in data/error/meta.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":{}},"error":{"type":"null"},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"400":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"404":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"413":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"429":{"description":"Rate limited; honor Retry-After in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"500":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}}}},"post":{"operationId":"analyzePublicPortfolioSectors","summary":"Underlying equity sectors, with an explicit unknown bucket.","security":[],"description":"Anonymous and stateless. The base POST runs the eight snapshot analyses. Snapshot endpoints return analyses with other sections not_requested; the standalone operations return capability plus analysis. Inspect statuses, reasons, coverage and population definitions even on HTTP 200.","requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["en","de"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["weights"],"default":"weights"},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["isin","weight"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["assetClass","currency","weight"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["holdings"],"additionalProperties":false},{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["en","de"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["values"]},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["isin","value"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["assetClass","currency","value"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["basis","holdings"],"additionalProperties":false}]},"example":{"basis":"weights","baseCurrency":"EUR","holdings":[{"isin":"IE00B4L5Y983","weight":0.6},{"isin":"IE00B3XXRP09","weight":0.3},{"assetClass":"cash","currency":"EUR","weight":0.1}],"locale":"en"}}}},"responses":{"200":{"description":"Explicit status, coverage and unknowns.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"modelVersion":{"type":"string"},"computedAt":{"type":"string","format":"date-time"},"baseCurrency":{"type":"string"},"basis":{"type":"string","enum":["weights","values"]},"totalValue":{"type":["number","null"],"minimum":0},"resolvedPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"constituentsAsOf":{"type":["string","null"],"description":"Oldest known fund-constituent date; null when unavailable. Not the date of all reference data."},"holdings":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"value":{"type":["number","null"],"minimum":0},"assetClass":{"type":["string","null"]},"status":{"type":"string","enum":["resolved","unresolved"]}},"required":["isin","name","weight","value","assetClass","status"],"additionalProperties":false}},"analyses":{"type":"object","properties":{"allocation":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["whole_portfolio"]},"coverage":{"type":"number","minimum":0,"maximum":1},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","coverage","buckets"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"overlap":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"method":{"type":"string","enum":["sum_minimum_constituent_weights"]},"fundCount":{"type":"integer","minimum":0},"pairs":{"type":"array","items":{"type":"object","properties":{"fundA":{"type":"string"},"fundB":{"type":"string"},"isinA":{"type":["string","null"]},"isinB":{"type":["string","null"]},"overlap":{"type":"number","minimum":0,"maximum":1,"description":"Sum of the smaller constituent weights in the two funds, not a percentage of the portfolio."},"sharedCount":{"type":"integer","minimum":0},"sharedTail":{"type":["object","null"],"properties":{"count":{"type":"integer","minimum":0},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["count","weight"],"additionalProperties":false,"description":"Shared constituents beyond the returned list; weight uses the same overlap measure as the headline."},"sharedHoldings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"weightInA":{"type":"number","minimum":0,"maximum":1},"weightInB":{"type":"number","minimum":0,"maximum":1}},"required":["id","name","weightInA","weightInB"],"additionalProperties":false}}},"required":["fundA","fundB","isinA","isinB","overlap","sharedCount","sharedTail","sharedHoldings"],"additionalProperties":false}},"funds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"status":{"type":"string","enum":["full","partial","none"]},"coveredWeight":{"type":"number","minimum":0,"maximum":1},"asOf":{"type":["string","null"]}},"required":["isin","name","status","coveredWeight","asOf"],"additionalProperties":false}}},"required":["method","fundCount","pairs","funds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"look-through":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"positions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"isin":{"type":["string","null"]},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"value":{"type":["number","null"],"minimum":0},"sector":{"type":["string","null"]},"region":{"type":["string","null"]},"provenance":{"type":"object","properties":{"direct":{"type":"number","minimum":0,"maximum":1},"viaFunds":{"type":"array","items":{"type":"object","properties":{"fund":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"shareInFund":{"type":"number","minimum":0,"maximum":1}},"required":["fund","weight","shareInFund"],"additionalProperties":false}}},"required":["direct","viaFunds"],"additionalProperties":false}},"required":["id","isin","name","weight","value","sector","region","provenance"],"additionalProperties":false}},"positionCount":{"type":"integer","minimum":0},"unresolvedFundWeight":{"type":"number","minimum":0,"maximum":1,"description":"Whole-portfolio share in undissolved equity fund remainders; these are not named companies."},"tailWeight":{"type":"number","minimum":0,"maximum":1},"funds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"status":{"type":"string","enum":["full","partial","none"]},"coveredWeight":{"type":"number","minimum":0,"maximum":1},"asOf":{"type":["string","null"]}},"required":["isin","name","status","coveredWeight","asOf"],"additionalProperties":false}}},"required":["scope","positions","positionCount","unresolvedFundWeight","tailWeight","funds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"concentration":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"coverage":{"type":"number","minimum":0,"maximum":1},"issuers":{"type":"array","items":{"type":"object","properties":{"issuerId":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["issuerId","name","weight"],"additionalProperties":false}},"issuerCount":{"type":["integer","null"],"minimum":0},"tailWeight":{"type":["number","null"],"minimum":0,"maximum":1},"largestIssuer":{"type":["object","null"],"properties":{"issuerId":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["issuerId","name","weight"],"additionalProperties":false},"hhi":{"type":["number","null"],"minimum":0,"maximum":1,"description":"Herfindahl index over the equity issuer book; withheld below 80% coverage."},"effectiveN":{"type":["number","null"],"minimum":0,"description":"Effective issuer count; withheld below 80% coverage."}},"required":["scope","coverage","issuers","issuerCount","tailWeight","largestIssuer","hhi","effectiveN"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"sectors":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"geography":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"countries":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false},"regions":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false}},"required":["countries","regions"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"currencies":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"equityExposure":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false},"heldCurrencies":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false},"description":"Resolved listing currencies and caller-stated cash currencies; separate from underlying exposure."},"hedgedFunds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"currency":{"type":["string","null"]},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["isin","name","currency","weight"],"additionalProperties":false}}},"required":["equityExposure","heldCurrencies","hedgedFunds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"costs":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["ongoing_fund_charges"]},"coveredPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"fundPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"unknownPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"weightedTer":{"type":["number","null"],"minimum":0,"description":"TER fraction on the covered fund portion, not on the entire portfolio. 0.002 means 0.2%."},"knownAnnualCost":{"type":["number","null"],"minimum":0,"description":"Known fund charges in baseCurrency; a subtotal when coverage is incomplete. Null for weight-only input."},"positions":{"type":"array","items":{"type":"object","properties":{"isin":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"ter":{"type":["number","null"],"minimum":0},"annualCost":{"type":["number","null"],"minimum":0}},"required":["isin","name","weight","ter","annualCost"],"additionalProperties":false}}},"required":["scope","coveredPortfolioWeight","fundPortfolioWeight","unknownPortfolioWeight","weightedTer","knownAnnualCost","positions"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false}},"required":["allocation","overlap","look-through","concentration","sectors","geography","currencies","costs"],"additionalProperties":false},"assumptions":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}},"links":{"type":"object","properties":{"documentation":{"type":"string","format":"uri"},"catalog":{"type":"string","format":"uri"}},"required":["documentation","catalog"],"additionalProperties":false}},"required":["modelVersion","computedAt","baseCurrency","basis","totalValue","resolvedPortfolioWeight","constituentsAsOf","holdings","analyses","assumptions","limitations","links"],"additionalProperties":false},"error":{"type":"null"},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"400":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"404":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"413":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"429":{"description":"Rate limited; honor Retry-After in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"500":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}}}}},"/api/v1/public/portfolio-analysis/geography":{"get":{"operationId":"describePublicPortfolioGeography","summary":"Discover: Underlying equity country and region allocation, not fund domicile or revenue geography.","security":[],"responses":{"200":{"description":"Catalog or descriptor with inputSchema, resultSchema and example, in data/error/meta.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":{}},"error":{"type":"null"},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"400":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"404":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"413":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"429":{"description":"Rate limited; honor Retry-After in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"500":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}}}},"post":{"operationId":"analyzePublicPortfolioGeography","summary":"Underlying equity country and region allocation, not fund domicile or revenue geography.","security":[],"description":"Anonymous and stateless. The base POST runs the eight snapshot analyses. Snapshot endpoints return analyses with other sections not_requested; the standalone operations return capability plus analysis. Inspect statuses, reasons, coverage and population definitions even on HTTP 200.","requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["en","de"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["weights"],"default":"weights"},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["isin","weight"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["assetClass","currency","weight"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["holdings"],"additionalProperties":false},{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["en","de"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["values"]},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["isin","value"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["assetClass","currency","value"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["basis","holdings"],"additionalProperties":false}]},"example":{"basis":"weights","baseCurrency":"EUR","holdings":[{"isin":"IE00B4L5Y983","weight":0.6},{"isin":"IE00B3XXRP09","weight":0.3},{"assetClass":"cash","currency":"EUR","weight":0.1}],"locale":"en"}}}},"responses":{"200":{"description":"Explicit status, coverage and unknowns.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"modelVersion":{"type":"string"},"computedAt":{"type":"string","format":"date-time"},"baseCurrency":{"type":"string"},"basis":{"type":"string","enum":["weights","values"]},"totalValue":{"type":["number","null"],"minimum":0},"resolvedPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"constituentsAsOf":{"type":["string","null"],"description":"Oldest known fund-constituent date; null when unavailable. Not the date of all reference data."},"holdings":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"value":{"type":["number","null"],"minimum":0},"assetClass":{"type":["string","null"]},"status":{"type":"string","enum":["resolved","unresolved"]}},"required":["isin","name","weight","value","assetClass","status"],"additionalProperties":false}},"analyses":{"type":"object","properties":{"allocation":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["whole_portfolio"]},"coverage":{"type":"number","minimum":0,"maximum":1},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","coverage","buckets"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"overlap":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"method":{"type":"string","enum":["sum_minimum_constituent_weights"]},"fundCount":{"type":"integer","minimum":0},"pairs":{"type":"array","items":{"type":"object","properties":{"fundA":{"type":"string"},"fundB":{"type":"string"},"isinA":{"type":["string","null"]},"isinB":{"type":["string","null"]},"overlap":{"type":"number","minimum":0,"maximum":1,"description":"Sum of the smaller constituent weights in the two funds, not a percentage of the portfolio."},"sharedCount":{"type":"integer","minimum":0},"sharedTail":{"type":["object","null"],"properties":{"count":{"type":"integer","minimum":0},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["count","weight"],"additionalProperties":false,"description":"Shared constituents beyond the returned list; weight uses the same overlap measure as the headline."},"sharedHoldings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"weightInA":{"type":"number","minimum":0,"maximum":1},"weightInB":{"type":"number","minimum":0,"maximum":1}},"required":["id","name","weightInA","weightInB"],"additionalProperties":false}}},"required":["fundA","fundB","isinA","isinB","overlap","sharedCount","sharedTail","sharedHoldings"],"additionalProperties":false}},"funds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"status":{"type":"string","enum":["full","partial","none"]},"coveredWeight":{"type":"number","minimum":0,"maximum":1},"asOf":{"type":["string","null"]}},"required":["isin","name","status","coveredWeight","asOf"],"additionalProperties":false}}},"required":["method","fundCount","pairs","funds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"look-through":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"positions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"isin":{"type":["string","null"]},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"value":{"type":["number","null"],"minimum":0},"sector":{"type":["string","null"]},"region":{"type":["string","null"]},"provenance":{"type":"object","properties":{"direct":{"type":"number","minimum":0,"maximum":1},"viaFunds":{"type":"array","items":{"type":"object","properties":{"fund":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"shareInFund":{"type":"number","minimum":0,"maximum":1}},"required":["fund","weight","shareInFund"],"additionalProperties":false}}},"required":["direct","viaFunds"],"additionalProperties":false}},"required":["id","isin","name","weight","value","sector","region","provenance"],"additionalProperties":false}},"positionCount":{"type":"integer","minimum":0},"unresolvedFundWeight":{"type":"number","minimum":0,"maximum":1,"description":"Whole-portfolio share in undissolved equity fund remainders; these are not named companies."},"tailWeight":{"type":"number","minimum":0,"maximum":1},"funds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"status":{"type":"string","enum":["full","partial","none"]},"coveredWeight":{"type":"number","minimum":0,"maximum":1},"asOf":{"type":["string","null"]}},"required":["isin","name","status","coveredWeight","asOf"],"additionalProperties":false}}},"required":["scope","positions","positionCount","unresolvedFundWeight","tailWeight","funds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"concentration":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"coverage":{"type":"number","minimum":0,"maximum":1},"issuers":{"type":"array","items":{"type":"object","properties":{"issuerId":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["issuerId","name","weight"],"additionalProperties":false}},"issuerCount":{"type":["integer","null"],"minimum":0},"tailWeight":{"type":["number","null"],"minimum":0,"maximum":1},"largestIssuer":{"type":["object","null"],"properties":{"issuerId":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["issuerId","name","weight"],"additionalProperties":false},"hhi":{"type":["number","null"],"minimum":0,"maximum":1,"description":"Herfindahl index over the equity issuer book; withheld below 80% coverage."},"effectiveN":{"type":["number","null"],"minimum":0,"description":"Effective issuer count; withheld below 80% coverage."}},"required":["scope","coverage","issuers","issuerCount","tailWeight","largestIssuer","hhi","effectiveN"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"sectors":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"geography":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"countries":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false},"regions":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false}},"required":["countries","regions"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"currencies":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"equityExposure":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false},"heldCurrencies":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false},"description":"Resolved listing currencies and caller-stated cash currencies; separate from underlying exposure."},"hedgedFunds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"currency":{"type":["string","null"]},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["isin","name","currency","weight"],"additionalProperties":false}}},"required":["equityExposure","heldCurrencies","hedgedFunds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"costs":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["ongoing_fund_charges"]},"coveredPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"fundPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"unknownPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"weightedTer":{"type":["number","null"],"minimum":0,"description":"TER fraction on the covered fund portion, not on the entire portfolio. 0.002 means 0.2%."},"knownAnnualCost":{"type":["number","null"],"minimum":0,"description":"Known fund charges in baseCurrency; a subtotal when coverage is incomplete. Null for weight-only input."},"positions":{"type":"array","items":{"type":"object","properties":{"isin":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"ter":{"type":["number","null"],"minimum":0},"annualCost":{"type":["number","null"],"minimum":0}},"required":["isin","name","weight","ter","annualCost"],"additionalProperties":false}}},"required":["scope","coveredPortfolioWeight","fundPortfolioWeight","unknownPortfolioWeight","weightedTer","knownAnnualCost","positions"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false}},"required":["allocation","overlap","look-through","concentration","sectors","geography","currencies","costs"],"additionalProperties":false},"assumptions":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}},"links":{"type":"object","properties":{"documentation":{"type":"string","format":"uri"},"catalog":{"type":"string","format":"uri"}},"required":["documentation","catalog"],"additionalProperties":false}},"required":["modelVersion","computedAt","baseCurrency","basis","totalValue","resolvedPortfolioWeight","constituentsAsOf","holdings","analyses","assumptions","limitations","links"],"additionalProperties":false},"error":{"type":"null"},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"400":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"404":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"413":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"429":{"description":"Rate limited; honor Retry-After in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"500":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}}}}},"/api/v1/public/portfolio-analysis/currencies":{"get":{"operationId":"describePublicPortfolioCurrencies","summary":"Discover: Modeled underlying equity currency exposure, named hedges, and separate held currencies.","security":[],"responses":{"200":{"description":"Catalog or descriptor with inputSchema, resultSchema and example, in data/error/meta.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":{}},"error":{"type":"null"},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"400":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"404":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"413":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"429":{"description":"Rate limited; honor Retry-After in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"500":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}}}},"post":{"operationId":"analyzePublicPortfolioCurrencies","summary":"Modeled underlying equity currency exposure, named hedges, and separate held currencies.","security":[],"description":"Anonymous and stateless. The base POST runs the eight snapshot analyses. Snapshot endpoints return analyses with other sections not_requested; the standalone operations return capability plus analysis. Inspect statuses, reasons, coverage and population definitions even on HTTP 200.","requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["en","de"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["weights"],"default":"weights"},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["isin","weight"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["assetClass","currency","weight"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["holdings"],"additionalProperties":false},{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["en","de"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["values"]},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["isin","value"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["assetClass","currency","value"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["basis","holdings"],"additionalProperties":false}]},"example":{"basis":"weights","baseCurrency":"EUR","holdings":[{"isin":"IE00B4L5Y983","weight":0.6},{"isin":"IE00B3XXRP09","weight":0.3},{"assetClass":"cash","currency":"EUR","weight":0.1}],"locale":"en"}}}},"responses":{"200":{"description":"Explicit status, coverage and unknowns.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"modelVersion":{"type":"string"},"computedAt":{"type":"string","format":"date-time"},"baseCurrency":{"type":"string"},"basis":{"type":"string","enum":["weights","values"]},"totalValue":{"type":["number","null"],"minimum":0},"resolvedPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"constituentsAsOf":{"type":["string","null"],"description":"Oldest known fund-constituent date; null when unavailable. Not the date of all reference data."},"holdings":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"value":{"type":["number","null"],"minimum":0},"assetClass":{"type":["string","null"]},"status":{"type":"string","enum":["resolved","unresolved"]}},"required":["isin","name","weight","value","assetClass","status"],"additionalProperties":false}},"analyses":{"type":"object","properties":{"allocation":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["whole_portfolio"]},"coverage":{"type":"number","minimum":0,"maximum":1},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","coverage","buckets"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"overlap":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"method":{"type":"string","enum":["sum_minimum_constituent_weights"]},"fundCount":{"type":"integer","minimum":0},"pairs":{"type":"array","items":{"type":"object","properties":{"fundA":{"type":"string"},"fundB":{"type":"string"},"isinA":{"type":["string","null"]},"isinB":{"type":["string","null"]},"overlap":{"type":"number","minimum":0,"maximum":1,"description":"Sum of the smaller constituent weights in the two funds, not a percentage of the portfolio."},"sharedCount":{"type":"integer","minimum":0},"sharedTail":{"type":["object","null"],"properties":{"count":{"type":"integer","minimum":0},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["count","weight"],"additionalProperties":false,"description":"Shared constituents beyond the returned list; weight uses the same overlap measure as the headline."},"sharedHoldings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"weightInA":{"type":"number","minimum":0,"maximum":1},"weightInB":{"type":"number","minimum":0,"maximum":1}},"required":["id","name","weightInA","weightInB"],"additionalProperties":false}}},"required":["fundA","fundB","isinA","isinB","overlap","sharedCount","sharedTail","sharedHoldings"],"additionalProperties":false}},"funds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"status":{"type":"string","enum":["full","partial","none"]},"coveredWeight":{"type":"number","minimum":0,"maximum":1},"asOf":{"type":["string","null"]}},"required":["isin","name","status","coveredWeight","asOf"],"additionalProperties":false}}},"required":["method","fundCount","pairs","funds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"look-through":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"positions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"isin":{"type":["string","null"]},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"value":{"type":["number","null"],"minimum":0},"sector":{"type":["string","null"]},"region":{"type":["string","null"]},"provenance":{"type":"object","properties":{"direct":{"type":"number","minimum":0,"maximum":1},"viaFunds":{"type":"array","items":{"type":"object","properties":{"fund":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"shareInFund":{"type":"number","minimum":0,"maximum":1}},"required":["fund","weight","shareInFund"],"additionalProperties":false}}},"required":["direct","viaFunds"],"additionalProperties":false}},"required":["id","isin","name","weight","value","sector","region","provenance"],"additionalProperties":false}},"positionCount":{"type":"integer","minimum":0},"unresolvedFundWeight":{"type":"number","minimum":0,"maximum":1,"description":"Whole-portfolio share in undissolved equity fund remainders; these are not named companies."},"tailWeight":{"type":"number","minimum":0,"maximum":1},"funds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"status":{"type":"string","enum":["full","partial","none"]},"coveredWeight":{"type":"number","minimum":0,"maximum":1},"asOf":{"type":["string","null"]}},"required":["isin","name","status","coveredWeight","asOf"],"additionalProperties":false}}},"required":["scope","positions","positionCount","unresolvedFundWeight","tailWeight","funds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"concentration":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"coverage":{"type":"number","minimum":0,"maximum":1},"issuers":{"type":"array","items":{"type":"object","properties":{"issuerId":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["issuerId","name","weight"],"additionalProperties":false}},"issuerCount":{"type":["integer","null"],"minimum":0},"tailWeight":{"type":["number","null"],"minimum":0,"maximum":1},"largestIssuer":{"type":["object","null"],"properties":{"issuerId":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["issuerId","name","weight"],"additionalProperties":false},"hhi":{"type":["number","null"],"minimum":0,"maximum":1,"description":"Herfindahl index over the equity issuer book; withheld below 80% coverage."},"effectiveN":{"type":["number","null"],"minimum":0,"description":"Effective issuer count; withheld below 80% coverage."}},"required":["scope","coverage","issuers","issuerCount","tailWeight","largestIssuer","hhi","effectiveN"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"sectors":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"geography":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"countries":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false},"regions":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false}},"required":["countries","regions"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"currencies":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"equityExposure":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false},"heldCurrencies":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false},"description":"Resolved listing currencies and caller-stated cash currencies; separate from underlying exposure."},"hedgedFunds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"currency":{"type":["string","null"]},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["isin","name","currency","weight"],"additionalProperties":false}}},"required":["equityExposure","heldCurrencies","hedgedFunds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"costs":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["ongoing_fund_charges"]},"coveredPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"fundPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"unknownPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"weightedTer":{"type":["number","null"],"minimum":0,"description":"TER fraction on the covered fund portion, not on the entire portfolio. 0.002 means 0.2%."},"knownAnnualCost":{"type":["number","null"],"minimum":0,"description":"Known fund charges in baseCurrency; a subtotal when coverage is incomplete. Null for weight-only input."},"positions":{"type":"array","items":{"type":"object","properties":{"isin":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"ter":{"type":["number","null"],"minimum":0},"annualCost":{"type":["number","null"],"minimum":0}},"required":["isin","name","weight","ter","annualCost"],"additionalProperties":false}}},"required":["scope","coveredPortfolioWeight","fundPortfolioWeight","unknownPortfolioWeight","weightedTer","knownAnnualCost","positions"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false}},"required":["allocation","overlap","look-through","concentration","sectors","geography","currencies","costs"],"additionalProperties":false},"assumptions":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}},"links":{"type":"object","properties":{"documentation":{"type":"string","format":"uri"},"catalog":{"type":"string","format":"uri"}},"required":["documentation","catalog"],"additionalProperties":false}},"required":["modelVersion","computedAt","baseCurrency","basis","totalValue","resolvedPortfolioWeight","constituentsAsOf","holdings","analyses","assumptions","limitations","links"],"additionalProperties":false},"error":{"type":"null"},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"400":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"404":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"413":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"429":{"description":"Rate limited; honor Retry-After in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"500":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}}}}},"/api/v1/public/portfolio-analysis/costs":{"get":{"operationId":"describePublicPortfolioCosts","summary":"Discover: Weighted TER on covered funds, per-fund costs and known annual charges in the stated base currency.","security":[],"responses":{"200":{"description":"Catalog or descriptor with inputSchema, resultSchema and example, in data/error/meta.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":{}},"error":{"type":"null"},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"400":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"404":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"413":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"429":{"description":"Rate limited; honor Retry-After in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"500":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}}}},"post":{"operationId":"analyzePublicPortfolioCosts","summary":"Weighted TER on covered funds, per-fund costs and known annual charges in the stated base currency.","security":[],"description":"Anonymous and stateless. The base POST runs the eight snapshot analyses. Snapshot endpoints return analyses with other sections not_requested; the standalone operations return capability plus analysis. Inspect statuses, reasons, coverage and population definitions even on HTTP 200.","requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["en","de"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["weights"],"default":"weights"},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["isin","weight"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["assetClass","currency","weight"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["holdings"],"additionalProperties":false},{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["en","de"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["values"]},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["isin","value"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["assetClass","currency","value"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["basis","holdings"],"additionalProperties":false}]},"example":{"basis":"weights","baseCurrency":"EUR","holdings":[{"isin":"IE00B4L5Y983","weight":0.6},{"isin":"IE00B3XXRP09","weight":0.3},{"assetClass":"cash","currency":"EUR","weight":0.1}],"locale":"en"}}}},"responses":{"200":{"description":"Explicit status, coverage and unknowns.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"modelVersion":{"type":"string"},"computedAt":{"type":"string","format":"date-time"},"baseCurrency":{"type":"string"},"basis":{"type":"string","enum":["weights","values"]},"totalValue":{"type":["number","null"],"minimum":0},"resolvedPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"constituentsAsOf":{"type":["string","null"],"description":"Oldest known fund-constituent date; null when unavailable. Not the date of all reference data."},"holdings":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"value":{"type":["number","null"],"minimum":0},"assetClass":{"type":["string","null"]},"status":{"type":"string","enum":["resolved","unresolved"]}},"required":["isin","name","weight","value","assetClass","status"],"additionalProperties":false}},"analyses":{"type":"object","properties":{"allocation":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["whole_portfolio"]},"coverage":{"type":"number","minimum":0,"maximum":1},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","coverage","buckets"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"overlap":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"method":{"type":"string","enum":["sum_minimum_constituent_weights"]},"fundCount":{"type":"integer","minimum":0},"pairs":{"type":"array","items":{"type":"object","properties":{"fundA":{"type":"string"},"fundB":{"type":"string"},"isinA":{"type":["string","null"]},"isinB":{"type":["string","null"]},"overlap":{"type":"number","minimum":0,"maximum":1,"description":"Sum of the smaller constituent weights in the two funds, not a percentage of the portfolio."},"sharedCount":{"type":"integer","minimum":0},"sharedTail":{"type":["object","null"],"properties":{"count":{"type":"integer","minimum":0},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["count","weight"],"additionalProperties":false,"description":"Shared constituents beyond the returned list; weight uses the same overlap measure as the headline."},"sharedHoldings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"weightInA":{"type":"number","minimum":0,"maximum":1},"weightInB":{"type":"number","minimum":0,"maximum":1}},"required":["id","name","weightInA","weightInB"],"additionalProperties":false}}},"required":["fundA","fundB","isinA","isinB","overlap","sharedCount","sharedTail","sharedHoldings"],"additionalProperties":false}},"funds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"status":{"type":"string","enum":["full","partial","none"]},"coveredWeight":{"type":"number","minimum":0,"maximum":1},"asOf":{"type":["string","null"]}},"required":["isin","name","status","coveredWeight","asOf"],"additionalProperties":false}}},"required":["method","fundCount","pairs","funds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"look-through":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"positions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"isin":{"type":["string","null"]},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"value":{"type":["number","null"],"minimum":0},"sector":{"type":["string","null"]},"region":{"type":["string","null"]},"provenance":{"type":"object","properties":{"direct":{"type":"number","minimum":0,"maximum":1},"viaFunds":{"type":"array","items":{"type":"object","properties":{"fund":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"shareInFund":{"type":"number","minimum":0,"maximum":1}},"required":["fund","weight","shareInFund"],"additionalProperties":false}}},"required":["direct","viaFunds"],"additionalProperties":false}},"required":["id","isin","name","weight","value","sector","region","provenance"],"additionalProperties":false}},"positionCount":{"type":"integer","minimum":0},"unresolvedFundWeight":{"type":"number","minimum":0,"maximum":1,"description":"Whole-portfolio share in undissolved equity fund remainders; these are not named companies."},"tailWeight":{"type":"number","minimum":0,"maximum":1},"funds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"status":{"type":"string","enum":["full","partial","none"]},"coveredWeight":{"type":"number","minimum":0,"maximum":1},"asOf":{"type":["string","null"]}},"required":["isin","name","status","coveredWeight","asOf"],"additionalProperties":false}}},"required":["scope","positions","positionCount","unresolvedFundWeight","tailWeight","funds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"concentration":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"coverage":{"type":"number","minimum":0,"maximum":1},"issuers":{"type":"array","items":{"type":"object","properties":{"issuerId":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["issuerId","name","weight"],"additionalProperties":false}},"issuerCount":{"type":["integer","null"],"minimum":0},"tailWeight":{"type":["number","null"],"minimum":0,"maximum":1},"largestIssuer":{"type":["object","null"],"properties":{"issuerId":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["issuerId","name","weight"],"additionalProperties":false},"hhi":{"type":["number","null"],"minimum":0,"maximum":1,"description":"Herfindahl index over the equity issuer book; withheld below 80% coverage."},"effectiveN":{"type":["number","null"],"minimum":0,"description":"Effective issuer count; withheld below 80% coverage."}},"required":["scope","coverage","issuers","issuerCount","tailWeight","largestIssuer","hhi","effectiveN"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"sectors":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"geography":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"countries":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false},"regions":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false}},"required":["countries","regions"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"currencies":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"equityExposure":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false},"heldCurrencies":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false},"description":"Resolved listing currencies and caller-stated cash currencies; separate from underlying exposure."},"hedgedFunds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"currency":{"type":["string","null"]},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["isin","name","currency","weight"],"additionalProperties":false}}},"required":["equityExposure","heldCurrencies","hedgedFunds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"costs":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["ongoing_fund_charges"]},"coveredPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"fundPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"unknownPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"weightedTer":{"type":["number","null"],"minimum":0,"description":"TER fraction on the covered fund portion, not on the entire portfolio. 0.002 means 0.2%."},"knownAnnualCost":{"type":["number","null"],"minimum":0,"description":"Known fund charges in baseCurrency; a subtotal when coverage is incomplete. Null for weight-only input."},"positions":{"type":"array","items":{"type":"object","properties":{"isin":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"ter":{"type":["number","null"],"minimum":0},"annualCost":{"type":["number","null"],"minimum":0}},"required":["isin","name","weight","ter","annualCost"],"additionalProperties":false}}},"required":["scope","coveredPortfolioWeight","fundPortfolioWeight","unknownPortfolioWeight","weightedTer","knownAnnualCost","positions"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false}},"required":["allocation","overlap","look-through","concentration","sectors","geography","currencies","costs"],"additionalProperties":false},"assumptions":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}},"links":{"type":"object","properties":{"documentation":{"type":"string","format":"uri"},"catalog":{"type":"string","format":"uri"}},"required":["documentation","catalog"],"additionalProperties":false}},"required":["modelVersion","computedAt","baseCurrency","basis","totalValue","resolvedPortfolioWeight","constituentsAsOf","holdings","analyses","assumptions","limitations","links"],"additionalProperties":false},"error":{"type":"null"},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"400":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"404":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"413":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"429":{"description":"Rate limited; honor Retry-After in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"500":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}}}}},"/api/v1/public/portfolio-analysis/cost-drag":{"get":{"operationId":"describePublicPortfolioCostDrag","summary":"Discover: Simulate compound fee drag from explicit caller assumptions, horizons and contributions.","security":[],"responses":{"200":{"description":"Catalog or descriptor with inputSchema, resultSchema and example, in data/error/meta.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":{}},"error":{"type":"null"},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"400":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"404":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"413":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"429":{"description":"Rate limited; honor Retry-After in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"500":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}}}},"post":{"operationId":"analyzePublicPortfolioCostDrag","summary":"Simulate compound fee drag from explicit caller assumptions, horizons and contributions.","security":[],"description":"Anonymous and stateless. The base POST runs the eight snapshot analyses. Snapshot endpoints return analyses with other sections not_requested; the standalone operations return capability plus analysis. Inspect statuses, reasons, coverage and population definitions even on HTTP 200.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["en","de"],"default":"en"},"initialValue":{"type":"number","minimum":0,"maximum":100000000},"annualReturn":{"type":"number","minimum":-1,"maximum":1,"description":"Caller-assumed nominal annual return, as a fraction; not a forecast."},"annualFeeRate":{"type":"number","minimum":0,"maximum":1,"description":"Caller-assumed annual fee fraction on the entire modeled amount; zero is an explicit assumption."},"monthlyContribution":{"type":"number","minimum":0,"maximum":100000000,"default":0},"horizonYears":{"type":"array","items":{"type":"integer","minimum":1,"maximum":50},"minItems":1,"maxItems":10}},"required":["initialValue","annualReturn","annualFeeRate","horizonYears"],"additionalProperties":false},"example":{"baseCurrency":"EUR","initialValue":10000,"annualReturn":0.05,"annualFeeRate":0.002,"monthlyContribution":100,"horizonYears":[10,20]}}}},"responses":{"200":{"description":"Explicit status, coverage and unknowns.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"modelVersion":{"type":"string"},"computedAt":{"type":"string","format":"date-time"},"baseCurrency":{"type":"string"},"capability":{"type":"string","enum":["cost-drag"]},"analysis":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"model":{"type":"string","enum":["nominal_annual_rate_divided_by_12_end_of_month_contributions"]},"initialValue":{"type":"number","minimum":0},"monthlyContribution":{"type":"number","minimum":0},"annualReturn":{"type":"number"},"annualFeeRate":{"type":"number","minimum":0,"maximum":1},"horizons":{"type":"array","items":{"type":"object","properties":{"years":{"type":"integer","exclusiveMinimum":0},"valueWithCost":{"type":"number","minimum":0},"valueWithoutCost":{"type":"number","minimum":0},"totalCostDrag":{"type":"number","minimum":0},"averageAnnualCostDrag":{"type":"number","minimum":0},"costDragFraction":{"type":"number","minimum":0,"maximum":1}},"required":["years","valueWithCost","valueWithoutCost","totalCostDrag","averageAnnualCostDrag","costDragFraction"],"additionalProperties":false}}},"required":["model","initialValue","monthlyContribution","annualReturn","annualFeeRate","horizons"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"assumptions":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}},"links":{"type":"object","properties":{"documentation":{"type":"string","format":"uri"},"catalog":{"type":"string","format":"uri"}},"required":["documentation","catalog"],"additionalProperties":false}},"required":["modelVersion","computedAt","baseCurrency","capability","analysis","assumptions","limitations","links"],"additionalProperties":false},"error":{"type":"null"},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"400":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"404":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"413":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"429":{"description":"Rate limited; honor Retry-After in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"500":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}}}}},"/api/v1/public/portfolio-analysis/industries":{"get":{"operationId":"describePublicPortfolioIndustries","summary":"Discover: Underlying equity industries, maintained industry interests and versioned thematic baskets, with separate coverage.","security":[],"responses":{"200":{"description":"Catalog or descriptor with inputSchema, resultSchema and example, in data/error/meta.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":{}},"error":{"type":"null"},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"400":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"404":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"413":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"429":{"description":"Rate limited; honor Retry-After in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"500":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}}}},"post":{"operationId":"analyzePublicPortfolioIndustries","summary":"Underlying equity industries, maintained industry interests and versioned thematic baskets, with separate coverage.","security":[],"description":"Anonymous and stateless. The base POST runs the eight snapshot analyses. Snapshot endpoints return analyses with other sections not_requested; the standalone operations return capability plus analysis. Inspect statuses, reasons, coverage and population definitions even on HTTP 200.","requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["en","de"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["weights"],"default":"weights"},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["isin","weight"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["assetClass","currency","weight"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["holdings"],"additionalProperties":false},{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["en","de"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["values"]},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["isin","value"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["assetClass","currency","value"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["basis","holdings"],"additionalProperties":false}]},"example":{"basis":"weights","baseCurrency":"EUR","holdings":[{"isin":"IE00B4L5Y983","weight":0.6},{"isin":"IE00B3XXRP09","weight":0.3},{"assetClass":"cash","currency":"EUR","weight":0.1}],"locale":"en"}}}},"responses":{"200":{"description":"Explicit status, coverage and unknowns.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"modelVersion":{"type":"string"},"computedAt":{"type":"string","format":"date-time"},"baseCurrency":{"type":"string"},"capability":{"type":"string","enum":["industries"]},"analysis":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"industries":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1},"coverage":{"type":"number","minimum":0,"maximum":1},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}},"unknownWeight":{"type":"number","minimum":0,"maximum":1},"tailWeight":{"type":"number","minimum":0,"maximum":1}},"required":["scope","portfolioShare","coverage","buckets","unknownWeight","tailWeight"],"additionalProperties":false},"industryInterests":{"type":"object","properties":{"coverage":{"type":"number","minimum":0,"maximum":1},"items":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"definitionVersion":{"type":"integer","exclusiveMinimum":0},"weight":{"type":["number","null"],"minimum":0,"maximum":1}},"required":["key","definitionVersion","weight"],"additionalProperties":false}}},"required":["coverage","items"],"additionalProperties":false},"thematicBaskets":{"type":"object","properties":{"coverage":{"type":"number","minimum":0,"maximum":1},"items":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"definitionVersion":{"type":"integer","exclusiveMinimum":0},"weight":{"type":["number","null"],"minimum":0,"maximum":1}},"required":["key","definitionVersion","weight"],"additionalProperties":false}},"registryVersion":{"type":"integer","exclusiveMinimum":0}},"required":["coverage","items","registryVersion"],"additionalProperties":false},"unresolvedPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"constituentsAsOf":{"type":["string","null"]}},"required":["industries","industryInterests","thematicBaskets","unresolvedPortfolioWeight","constituentsAsOf"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"assumptions":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}},"links":{"type":"object","properties":{"documentation":{"type":"string","format":"uri"},"catalog":{"type":"string","format":"uri"}},"required":["documentation","catalog"],"additionalProperties":false}},"required":["modelVersion","computedAt","baseCurrency","capability","analysis","assumptions","limitations","links"],"additionalProperties":false},"error":{"type":"null"},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"400":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"404":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"413":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"429":{"description":"Rate limited; honor Retry-After in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"500":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}}}}},"/api/v1/public/portfolio-analysis/revenue-geography":{"get":{"operationId":"describePublicPortfolioRevenueGeography","summary":"Discover: Annual revenue regions of up to 25 underlying companies, without inflating the covered portion.","security":[],"responses":{"200":{"description":"Catalog or descriptor with inputSchema, resultSchema and example, in data/error/meta.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":{}},"error":{"type":"null"},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"400":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"404":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"413":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"429":{"description":"Rate limited; honor Retry-After in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"500":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}}}},"post":{"operationId":"analyzePublicPortfolioRevenueGeography","summary":"Annual revenue regions of up to 25 underlying companies, without inflating the covered portion.","security":[],"description":"Anonymous and stateless. The base POST runs the eight snapshot analyses. Snapshot endpoints return analyses with other sections not_requested; the standalone operations return capability plus analysis. Inspect statuses, reasons, coverage and population definitions even on HTTP 200.","requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["en","de"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["weights"],"default":"weights"},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["isin","weight"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["assetClass","currency","weight"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["holdings"],"additionalProperties":false},{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["en","de"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["values"]},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["isin","value"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["assetClass","currency","value"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["basis","holdings"],"additionalProperties":false}]},"example":{"basis":"weights","baseCurrency":"EUR","holdings":[{"isin":"IE00B4L5Y983","weight":0.6},{"isin":"IE00B3XXRP09","weight":0.3},{"assetClass":"cash","currency":"EUR","weight":0.1}],"locale":"en"}}}},"responses":{"200":{"description":"Explicit status, coverage and unknowns.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"modelVersion":{"type":"string"},"computedAt":{"type":"string","format":"date-time"},"baseCurrency":{"type":"string"},"capability":{"type":"string","enum":["revenue-geography"]},"analysis":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1},"coverage":{"type":"number","minimum":0,"maximum":1},"coveredPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"unknownWeight":{"type":"number","minimum":0,"maximum":1},"unresolvedPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}},"companyLimit":{"type":"integer","exclusiveMinimum":0},"companiesExamined":{"type":"integer","minimum":0},"companiesCovered":{"type":"integer","minimum":0},"reportAsOf":{"type":["string","null"]},"constituentsAsOf":{"type":["string","null"]},"unmappedSegments":{"type":"array","items":{"type":"string"}}},"required":["scope","portfolioShare","coverage","coveredPortfolioWeight","unknownWeight","unresolvedPortfolioWeight","buckets","companyLimit","companiesExamined","companiesCovered","reportAsOf","constituentsAsOf","unmappedSegments"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"assumptions":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}},"links":{"type":"object","properties":{"documentation":{"type":"string","format":"uri"},"catalog":{"type":"string","format":"uri"}},"required":["documentation","catalog"],"additionalProperties":false}},"required":["modelVersion","computedAt","baseCurrency","capability","analysis","assumptions","limitations","links"],"additionalProperties":false},"error":{"type":"null"},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"400":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"404":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"413":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"429":{"description":"Rate limited; honor Retry-After in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"500":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}}}}},"/api/v1/public/portfolio-analysis/compare":{"get":{"operationId":"describePublicPortfolioCompare","summary":"Discover: Analyze before/after snapshots and return after-minus-before deltas only where section coverage permits.","security":[],"responses":{"200":{"description":"Catalog or descriptor with inputSchema, resultSchema and example, in data/error/meta.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":{}},"error":{"type":"null"},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"400":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"404":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"413":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"429":{"description":"Rate limited; honor Retry-After in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"500":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}}}},"post":{"operationId":"analyzePublicPortfolioCompare","summary":"Analyze before/after snapshots and return after-minus-before deltas only where section coverage permits.","security":[],"description":"Anonymous and stateless. The base POST runs the eight snapshot analyses. Snapshot endpoints return analyses with other sections not_requested; the standalone operations return capability plus analysis. Inspect statuses, reasons, coverage and population definitions even on HTTP 200.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"before":{"anyOf":[{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["en","de"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["weights"],"default":"weights"},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["isin","weight"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["assetClass","currency","weight"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["holdings"],"additionalProperties":false},{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["en","de"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["values"]},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["isin","value"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["assetClass","currency","value"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["basis","holdings"],"additionalProperties":false}]},"after":{"anyOf":[{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["en","de"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["weights"],"default":"weights"},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["isin","weight"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["assetClass","currency","weight"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["holdings"],"additionalProperties":false},{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["en","de"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["values"]},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["isin","value"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["assetClass","currency","value"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["basis","holdings"],"additionalProperties":false}]},"locale":{"type":"string","enum":["en","de"],"default":"en"}},"required":["before","after"],"additionalProperties":false},"example":{"before":{"basis":"weights","baseCurrency":"EUR","holdings":[{"isin":"IE00B4L5Y983","weight":0.6},{"isin":"IE00B3XXRP09","weight":0.3},{"assetClass":"cash","currency":"EUR","weight":0.1}],"locale":"en"},"after":{"basis":"weights","baseCurrency":"EUR","holdings":[{"isin":"IE00B4L5Y983","weight":0.8},{"isin":"IE00B3XXRP09","weight":0.1},{"assetClass":"cash","currency":"EUR","weight":0.1}],"locale":"en"}}}}},"responses":{"200":{"description":"Explicit status, coverage and unknowns.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"modelVersion":{"type":"string"},"computedAt":{"type":"string","format":"date-time"},"baseCurrency":{"type":"string"},"capability":{"type":"string","enum":["compare"]},"analysis":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"before":{"type":"object","properties":{"modelVersion":{"type":"string"},"computedAt":{"type":"string","format":"date-time"},"baseCurrency":{"type":"string"},"basis":{"type":"string","enum":["weights","values"]},"totalValue":{"type":["number","null"],"minimum":0},"resolvedPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"constituentsAsOf":{"type":["string","null"],"description":"Oldest known fund-constituent date; null when unavailable. Not the date of all reference data."},"holdings":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"value":{"type":["number","null"],"minimum":0},"assetClass":{"type":["string","null"]},"status":{"type":"string","enum":["resolved","unresolved"]}},"required":["isin","name","weight","value","assetClass","status"],"additionalProperties":false}},"analyses":{"type":"object","properties":{"allocation":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["whole_portfolio"]},"coverage":{"type":"number","minimum":0,"maximum":1},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","coverage","buckets"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"overlap":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"method":{"type":"string","enum":["sum_minimum_constituent_weights"]},"fundCount":{"type":"integer","minimum":0},"pairs":{"type":"array","items":{"type":"object","properties":{"fundA":{"type":"string"},"fundB":{"type":"string"},"isinA":{"type":["string","null"]},"isinB":{"type":["string","null"]},"overlap":{"type":"number","minimum":0,"maximum":1,"description":"Sum of the smaller constituent weights in the two funds, not a percentage of the portfolio."},"sharedCount":{"type":"integer","minimum":0},"sharedTail":{"type":["object","null"],"properties":{"count":{"type":"integer","minimum":0},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["count","weight"],"additionalProperties":false,"description":"Shared constituents beyond the returned list; weight uses the same overlap measure as the headline."},"sharedHoldings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"weightInA":{"type":"number","minimum":0,"maximum":1},"weightInB":{"type":"number","minimum":0,"maximum":1}},"required":["id","name","weightInA","weightInB"],"additionalProperties":false}}},"required":["fundA","fundB","isinA","isinB","overlap","sharedCount","sharedTail","sharedHoldings"],"additionalProperties":false}},"funds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"status":{"type":"string","enum":["full","partial","none"]},"coveredWeight":{"type":"number","minimum":0,"maximum":1},"asOf":{"type":["string","null"]}},"required":["isin","name","status","coveredWeight","asOf"],"additionalProperties":false}}},"required":["method","fundCount","pairs","funds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"look-through":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"positions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"isin":{"type":["string","null"]},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"value":{"type":["number","null"],"minimum":0},"sector":{"type":["string","null"]},"region":{"type":["string","null"]},"provenance":{"type":"object","properties":{"direct":{"type":"number","minimum":0,"maximum":1},"viaFunds":{"type":"array","items":{"type":"object","properties":{"fund":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"shareInFund":{"type":"number","minimum":0,"maximum":1}},"required":["fund","weight","shareInFund"],"additionalProperties":false}}},"required":["direct","viaFunds"],"additionalProperties":false}},"required":["id","isin","name","weight","value","sector","region","provenance"],"additionalProperties":false}},"positionCount":{"type":"integer","minimum":0},"unresolvedFundWeight":{"type":"number","minimum":0,"maximum":1,"description":"Whole-portfolio share in undissolved equity fund remainders; these are not named companies."},"tailWeight":{"type":"number","minimum":0,"maximum":1},"funds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"status":{"type":"string","enum":["full","partial","none"]},"coveredWeight":{"type":"number","minimum":0,"maximum":1},"asOf":{"type":["string","null"]}},"required":["isin","name","status","coveredWeight","asOf"],"additionalProperties":false}}},"required":["scope","positions","positionCount","unresolvedFundWeight","tailWeight","funds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"concentration":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"coverage":{"type":"number","minimum":0,"maximum":1},"issuers":{"type":"array","items":{"type":"object","properties":{"issuerId":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["issuerId","name","weight"],"additionalProperties":false}},"issuerCount":{"type":["integer","null"],"minimum":0},"tailWeight":{"type":["number","null"],"minimum":0,"maximum":1},"largestIssuer":{"type":["object","null"],"properties":{"issuerId":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["issuerId","name","weight"],"additionalProperties":false},"hhi":{"type":["number","null"],"minimum":0,"maximum":1,"description":"Herfindahl index over the equity issuer book; withheld below 80% coverage."},"effectiveN":{"type":["number","null"],"minimum":0,"description":"Effective issuer count; withheld below 80% coverage."}},"required":["scope","coverage","issuers","issuerCount","tailWeight","largestIssuer","hhi","effectiveN"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"sectors":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"geography":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"countries":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false},"regions":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false}},"required":["countries","regions"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"currencies":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"equityExposure":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false},"heldCurrencies":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false},"description":"Resolved listing currencies and caller-stated cash currencies; separate from underlying exposure."},"hedgedFunds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"currency":{"type":["string","null"]},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["isin","name","currency","weight"],"additionalProperties":false}}},"required":["equityExposure","heldCurrencies","hedgedFunds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"costs":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["ongoing_fund_charges"]},"coveredPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"fundPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"unknownPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"weightedTer":{"type":["number","null"],"minimum":0,"description":"TER fraction on the covered fund portion, not on the entire portfolio. 0.002 means 0.2%."},"knownAnnualCost":{"type":["number","null"],"minimum":0,"description":"Known fund charges in baseCurrency; a subtotal when coverage is incomplete. Null for weight-only input."},"positions":{"type":"array","items":{"type":"object","properties":{"isin":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"ter":{"type":["number","null"],"minimum":0},"annualCost":{"type":["number","null"],"minimum":0}},"required":["isin","name","weight","ter","annualCost"],"additionalProperties":false}}},"required":["scope","coveredPortfolioWeight","fundPortfolioWeight","unknownPortfolioWeight","weightedTer","knownAnnualCost","positions"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false}},"required":["allocation","overlap","look-through","concentration","sectors","geography","currencies","costs"],"additionalProperties":false},"assumptions":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}},"links":{"type":"object","properties":{"documentation":{"type":"string","format":"uri"},"catalog":{"type":"string","format":"uri"}},"required":["documentation","catalog"],"additionalProperties":false}},"required":["modelVersion","computedAt","baseCurrency","basis","totalValue","resolvedPortfolioWeight","constituentsAsOf","holdings","analyses","assumptions","limitations","links"],"additionalProperties":false},"after":{"type":"object","properties":{"modelVersion":{"type":"string"},"computedAt":{"type":"string","format":"date-time"},"baseCurrency":{"type":"string"},"basis":{"type":"string","enum":["weights","values"]},"totalValue":{"type":["number","null"],"minimum":0},"resolvedPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"constituentsAsOf":{"type":["string","null"],"description":"Oldest known fund-constituent date; null when unavailable. Not the date of all reference data."},"holdings":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"value":{"type":["number","null"],"minimum":0},"assetClass":{"type":["string","null"]},"status":{"type":"string","enum":["resolved","unresolved"]}},"required":["isin","name","weight","value","assetClass","status"],"additionalProperties":false}},"analyses":{"type":"object","properties":{"allocation":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["whole_portfolio"]},"coverage":{"type":"number","minimum":0,"maximum":1},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","coverage","buckets"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"overlap":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"method":{"type":"string","enum":["sum_minimum_constituent_weights"]},"fundCount":{"type":"integer","minimum":0},"pairs":{"type":"array","items":{"type":"object","properties":{"fundA":{"type":"string"},"fundB":{"type":"string"},"isinA":{"type":["string","null"]},"isinB":{"type":["string","null"]},"overlap":{"type":"number","minimum":0,"maximum":1,"description":"Sum of the smaller constituent weights in the two funds, not a percentage of the portfolio."},"sharedCount":{"type":"integer","minimum":0},"sharedTail":{"type":["object","null"],"properties":{"count":{"type":"integer","minimum":0},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["count","weight"],"additionalProperties":false,"description":"Shared constituents beyond the returned list; weight uses the same overlap measure as the headline."},"sharedHoldings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"weightInA":{"type":"number","minimum":0,"maximum":1},"weightInB":{"type":"number","minimum":0,"maximum":1}},"required":["id","name","weightInA","weightInB"],"additionalProperties":false}}},"required":["fundA","fundB","isinA","isinB","overlap","sharedCount","sharedTail","sharedHoldings"],"additionalProperties":false}},"funds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"status":{"type":"string","enum":["full","partial","none"]},"coveredWeight":{"type":"number","minimum":0,"maximum":1},"asOf":{"type":["string","null"]}},"required":["isin","name","status","coveredWeight","asOf"],"additionalProperties":false}}},"required":["method","fundCount","pairs","funds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"look-through":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"positions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"isin":{"type":["string","null"]},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"value":{"type":["number","null"],"minimum":0},"sector":{"type":["string","null"]},"region":{"type":["string","null"]},"provenance":{"type":"object","properties":{"direct":{"type":"number","minimum":0,"maximum":1},"viaFunds":{"type":"array","items":{"type":"object","properties":{"fund":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"shareInFund":{"type":"number","minimum":0,"maximum":1}},"required":["fund","weight","shareInFund"],"additionalProperties":false}}},"required":["direct","viaFunds"],"additionalProperties":false}},"required":["id","isin","name","weight","value","sector","region","provenance"],"additionalProperties":false}},"positionCount":{"type":"integer","minimum":0},"unresolvedFundWeight":{"type":"number","minimum":0,"maximum":1,"description":"Whole-portfolio share in undissolved equity fund remainders; these are not named companies."},"tailWeight":{"type":"number","minimum":0,"maximum":1},"funds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"status":{"type":"string","enum":["full","partial","none"]},"coveredWeight":{"type":"number","minimum":0,"maximum":1},"asOf":{"type":["string","null"]}},"required":["isin","name","status","coveredWeight","asOf"],"additionalProperties":false}}},"required":["scope","positions","positionCount","unresolvedFundWeight","tailWeight","funds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"concentration":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"coverage":{"type":"number","minimum":0,"maximum":1},"issuers":{"type":"array","items":{"type":"object","properties":{"issuerId":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["issuerId","name","weight"],"additionalProperties":false}},"issuerCount":{"type":["integer","null"],"minimum":0},"tailWeight":{"type":["number","null"],"minimum":0,"maximum":1},"largestIssuer":{"type":["object","null"],"properties":{"issuerId":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["issuerId","name","weight"],"additionalProperties":false},"hhi":{"type":["number","null"],"minimum":0,"maximum":1,"description":"Herfindahl index over the equity issuer book; withheld below 80% coverage."},"effectiveN":{"type":["number","null"],"minimum":0,"description":"Effective issuer count; withheld below 80% coverage."}},"required":["scope","coverage","issuers","issuerCount","tailWeight","largestIssuer","hhi","effectiveN"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"sectors":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"geography":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"countries":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false},"regions":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false}},"required":["countries","regions"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"currencies":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"equityExposure":{"type":"object","properties":{"scope":{"type":"string","enum":["equities"]},"portfolioShare":{"type":"number","minimum":0,"maximum":1,"description":"Equity share of the entire submitted portfolio that this dimension evaluates."},"coverage":{"type":"number","minimum":0,"maximum":1,"description":"Classified share of this dimension's equity population."},"buckets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false}}},"required":["scope","portfolioShare","coverage","buckets"],"additionalProperties":false},"heldCurrencies":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1,"description":"Share of the entire submitted portfolio, including unresolved holdings in the denominator."},"value":{"type":["number","null"],"minimum":0,"description":"Amount in baseCurrency; null for weight-only requests."}},"required":["key","weight","value"],"additionalProperties":false},"description":"Resolved listing currencies and caller-stated cash currencies; separate from underlying exposure."},"hedgedFunds":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"]},"name":{"type":"string"},"currency":{"type":["string","null"]},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["isin","name","currency","weight"],"additionalProperties":false}}},"required":["equityExposure","heldCurrencies","hedgedFunds"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"costs":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable","not_requested"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"scope":{"type":"string","enum":["ongoing_fund_charges"]},"coveredPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"fundPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"unknownPortfolioWeight":{"type":"number","minimum":0,"maximum":1},"weightedTer":{"type":["number","null"],"minimum":0,"description":"TER fraction on the covered fund portion, not on the entire portfolio. 0.002 means 0.2%."},"knownAnnualCost":{"type":["number","null"],"minimum":0,"description":"Known fund charges in baseCurrency; a subtotal when coverage is incomplete. Null for weight-only input."},"positions":{"type":"array","items":{"type":"object","properties":{"isin":{"type":"string"},"name":{"type":"string"},"weight":{"type":"number","minimum":0,"maximum":1},"ter":{"type":["number","null"],"minimum":0},"annualCost":{"type":["number","null"],"minimum":0}},"required":["isin","name","weight","ter","annualCost"],"additionalProperties":false}}},"required":["scope","coveredPortfolioWeight","fundPortfolioWeight","unknownPortfolioWeight","weightedTer","knownAnnualCost","positions"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false}},"required":["allocation","overlap","look-through","concentration","sectors","geography","currencies","costs"],"additionalProperties":false},"assumptions":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}},"links":{"type":"object","properties":{"documentation":{"type":"string","format":"uri"},"catalog":{"type":"string","format":"uri"}},"required":["documentation","catalog"],"additionalProperties":false}},"required":["modelVersion","computedAt","baseCurrency","basis","totalValue","resolvedPortfolioWeight","constituentsAsOf","holdings","analyses","assumptions","limitations","links"],"additionalProperties":false},"deltas":{"type":"object","properties":{"allocation":{"type":["array","null"],"items":{"type":"object","properties":{"key":{"type":"string"},"before":{"type":"number","minimum":0,"maximum":1},"after":{"type":"number","minimum":0,"maximum":1},"delta":{"type":"number","minimum":-1,"maximum":1}},"required":["key","before","after","delta"],"additionalProperties":false}},"sectors":{"type":["array","null"],"items":{"type":"object","properties":{"key":{"type":"string"},"before":{"type":"number","minimum":0,"maximum":1},"after":{"type":"number","minimum":0,"maximum":1},"delta":{"type":"number","minimum":-1,"maximum":1}},"required":["key","before","after","delta"],"additionalProperties":false}},"countries":{"type":["array","null"],"items":{"type":"object","properties":{"key":{"type":"string"},"before":{"type":"number","minimum":0,"maximum":1},"after":{"type":"number","minimum":0,"maximum":1},"delta":{"type":"number","minimum":-1,"maximum":1}},"required":["key","before","after","delta"],"additionalProperties":false}},"currencyExposure":{"type":["array","null"],"items":{"type":"object","properties":{"key":{"type":"string"},"before":{"type":"number","minimum":0,"maximum":1},"after":{"type":"number","minimum":0,"maximum":1},"delta":{"type":"number","minimum":-1,"maximum":1}},"required":["key","before","after","delta"],"additionalProperties":false}},"hhi":{"type":["number","null"]},"effectiveN":{"type":["number","null"]},"weightedTer":{"type":["number","null"]},"knownAnnualCost":{"type":["number","null"]}},"required":["allocation","sectors","countries","currencyExposure","hhi","effectiveN","weightedTer","knownAnnualCost"],"additionalProperties":false}},"required":["before","after","deltas"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"assumptions":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}},"links":{"type":"object","properties":{"documentation":{"type":"string","format":"uri"},"catalog":{"type":"string","format":"uri"}},"required":["documentation","catalog"],"additionalProperties":false}},"required":["modelVersion","computedAt","baseCurrency","capability","analysis","assumptions","limitations","links"],"additionalProperties":false},"error":{"type":"null"},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"400":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"404":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"413":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"429":{"description":"Rate limited; honor Retry-After in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"500":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}}}}},"/api/v1/public/portfolio-analysis/contribution-plan":{"get":{"operationId":"describePublicPortfolioContributionPlan","summary":"Discover: Compare a value-based portfolio with caller targets and allocate one contribution across underweight asset classes.","security":[],"responses":{"200":{"description":"Catalog or descriptor with inputSchema, resultSchema and example, in data/error/meta.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":{}},"error":{"type":"null"},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"400":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"404":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"413":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"429":{"description":"Rate limited; honor Retry-After in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"500":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}}}},"post":{"operationId":"analyzePublicPortfolioContributionPlan","summary":"Compare a value-based portfolio with caller targets and allocate one contribution across underweight asset classes.","security":[],"description":"Anonymous and stateless. The base POST runs the eight snapshot analyses. Snapshot endpoints return analyses with other sections not_requested; the standalone operations return capability plus analysis. Inspect statuses, reasons, coverage and population definitions even on HTTP 200.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"portfolio":{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["en","de"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["values"]},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["isin","value"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["assetClass","currency","value"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["basis","holdings"],"additionalProperties":false},"targets":{"type":"array","items":{"type":"object","properties":{"assetClass":{"type":"string","enum":["equities","bonds","cash","gold","crypto","real_estate","commodities","alternatives"]},"weight":{"type":"number","minimum":0,"maximum":1}},"required":["assetClass","weight"],"additionalProperties":false},"minItems":1,"maxItems":8},"contribution":{"type":"number","minimum":0,"maximum":100000000,"description":"One new contribution, in the portfolio's baseCurrency, in whole cents."},"minimumAllocation":{"type":"number","minimum":0,"maximum":100000000,"default":0}},"required":["portfolio","targets","contribution"],"additionalProperties":false},"example":{"portfolio":{"basis":"values","baseCurrency":"EUR","holdings":[{"isin":"IE00B4L5Y983","value":6000},{"assetClass":"cash","currency":"EUR","value":4000}]},"targets":[{"assetClass":"equities","weight":0.8},{"assetClass":"cash","weight":0.2}],"contribution":1000,"minimumAllocation":0}}}},"responses":{"200":{"description":"Explicit status, coverage and unknowns.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"modelVersion":{"type":"string"},"computedAt":{"type":"string","format":"date-time"},"baseCurrency":{"type":"string"},"capability":{"type":"string","enum":["contribution-plan"]},"analysis":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"method":{"type":"string","enum":["proportional_underweight_gaps"]},"contribution":{"type":"number","minimum":0},"allocatedAmount":{"type":"number","minimum":0},"unallocatedAmount":{"type":"number","minimum":0},"before":{"type":"array","items":{"type":"object","properties":{"assetClass":{"type":"string","enum":["equities","bonds","cash","gold","crypto","real_estate","commodities","alternatives"]},"currentWeight":{"type":"number","minimum":0,"maximum":1},"targetWeight":{"type":"number","minimum":0,"maximum":1},"deviation":{"type":"number","minimum":-1,"maximum":1},"value":{"type":"number","minimum":0}},"required":["assetClass","currentWeight","targetWeight","deviation","value"],"additionalProperties":false}},"after":{"type":"array","items":{"type":"object","properties":{"assetClass":{"type":"string","enum":["equities","bonds","cash","gold","crypto","real_estate","commodities","alternatives"]},"currentWeight":{"type":"number","minimum":0,"maximum":1},"targetWeight":{"type":"number","minimum":0,"maximum":1},"deviation":{"type":"number","minimum":-1,"maximum":1},"value":{"type":"number","minimum":0}},"required":["assetClass","currentWeight","targetWeight","deviation","value"],"additionalProperties":false}},"allocations":{"type":"array","items":{"type":"object","properties":{"assetClass":{"type":"string","enum":["equities","bonds","cash","gold","crypto","real_estate","commodities","alternatives"]},"amount":{"type":"number","minimum":0}},"required":["assetClass","amount"],"additionalProperties":false}}},"required":["method","contribution","allocatedAmount","unallocatedAmount","before","after","allocations"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"assumptions":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}},"links":{"type":"object","properties":{"documentation":{"type":"string","format":"uri"},"catalog":{"type":"string","format":"uri"}},"required":["documentation","catalog"],"additionalProperties":false}},"required":["modelVersion","computedAt","baseCurrency","capability","analysis","assumptions","limitations","links"],"additionalProperties":false},"error":{"type":"null"},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"400":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"404":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"413":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"429":{"description":"Rate limited; honor Retry-After in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"500":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}}}}},"/api/v1/public/portfolio-analysis/etf-alternatives":{"get":{"operationId":"describePublicPortfolioEtfAlternatives","summary":"Discover: Compare at most ten explicit or shared-catalog equity ETF candidates using covered holdings, sector/country similarity and ongoing fees.","security":[],"responses":{"200":{"description":"Catalog or descriptor with inputSchema, resultSchema and example, in data/error/meta.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":{}},"error":{"type":"null"},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"400":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"404":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"413":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"429":{"description":"Rate limited; honor Retry-After in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"500":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}}}},"post":{"operationId":"analyzePublicPortfolioEtfAlternatives","summary":"Compare at most ten explicit or shared-catalog equity ETF candidates using covered holdings, sector/country similarity and ongoing fees.","security":[],"description":"Anonymous and stateless. The base POST runs the eight snapshot analyses. Snapshot endpoints return analyses with other sections not_requested; the standalone operations return capability plus analysis. Inspect statuses, reasons, coverage and population definitions even on HTTP 200.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"candidateIsins":{"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"minItems":1,"maxItems":10,"description":"Explicit candidate universe. When omitted, a bounded shared DACH alternatives catalog is read; it may have no entries for this listing."},"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["en","de"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":10,"default":5}},"required":["isin"],"additionalProperties":false},"example":{"isin":"IE00B4L5Y983","candidateIsins":["IE00BK5BQT80"],"baseCurrency":"EUR","limit":5}}}},"responses":{"200":{"description":"Explicit status, coverage and unknowns.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"modelVersion":{"type":"string"},"computedAt":{"type":"string","format":"date-time"},"baseCurrency":{"type":"string"},"capability":{"type":"string","enum":["etf-alternatives"]},"analysis":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"model":{"type":"string","enum":["half_holdings_quarter_sector_quarter_country"]},"candidateSource":{"type":"string","enum":["caller","shared_catalog"]},"catalogAsOf":{"type":["string","null"],"format":"date-time"},"source":{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"name":{"type":"string"},"ter":{"type":["number","null"],"minimum":0,"maximum":1},"constituentsAsOf":{"type":["string","null"]},"holdingsCoverage":{"type":"number","minimum":0,"maximum":1},"sectorCoverage":{"type":"number","minimum":0,"maximum":1},"countryCoverage":{"type":"number","minimum":0,"maximum":1}},"required":["isin","name","ter","constituentsAsOf","holdingsCoverage","sectorCoverage","countryCoverage"],"additionalProperties":false},"candidates":{"type":"array","items":{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"name":{"type":"string"},"ter":{"type":["number","null"],"minimum":0,"maximum":1},"constituentsAsOf":{"type":["string","null"]},"holdingsCoverage":{"type":"number","minimum":0,"maximum":1},"sectorCoverage":{"type":"number","minimum":0,"maximum":1},"countryCoverage":{"type":"number","minimum":0,"maximum":1},"status":{"type":"string","enum":["ok","unavailable"]},"reason":{"type":["string","null"],"enum":["unresolved","not_equity_fund","missing_cost","incomplete_holdings","incomplete_vectors","provider_unavailable"]},"holdingOverlap":{"type":["number","null"],"minimum":0,"maximum":1},"sectorCosine":{"type":["number","null"],"minimum":0,"maximum":1},"countryCosine":{"type":["number","null"],"minimum":0,"maximum":1},"similarityScore":{"type":["number","null"],"minimum":0,"maximum":1},"terSaving":{"type":["number","null"]},"qualifies":{"type":"boolean"}},"required":["isin","name","ter","constituentsAsOf","holdingsCoverage","sectorCoverage","countryCoverage","status","reason","holdingOverlap","sectorCosine","countryCosine","similarityScore","terSaving","qualifies"],"additionalProperties":false},"maxItems":10},"matches":{"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"}},"omittedMatches":{"type":"integer","minimum":0},"failure":{"type":["string","null"],"enum":["catalog_empty","catalog_unavailable","source_unavailable"]}},"required":["model","candidateSource","catalogAsOf","source","candidates","matches","omittedMatches","failure"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"assumptions":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}},"links":{"type":"object","properties":{"documentation":{"type":"string","format":"uri"},"catalog":{"type":"string","format":"uri"}},"required":["documentation","catalog"],"additionalProperties":false}},"required":["modelVersion","computedAt","baseCurrency","capability","analysis","assumptions","limitations","links"],"additionalProperties":false},"error":{"type":"null"},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"400":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"404":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"413":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"429":{"description":"Rate limited; honor Retry-After in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"500":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}}}}},"/api/v1/public/portfolio-analysis/stress-scenarios":{"get":{"operationId":"describePublicPortfolioStressScenarios","summary":"Discover: Apply sourced approximate crisis shocks to a submitted portfolio, with explicit proxy methods and currency coverage.","security":[],"responses":{"200":{"description":"Catalog or descriptor with inputSchema, resultSchema and example, in data/error/meta.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":{}},"error":{"type":"null"},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"400":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"404":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"413":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"429":{"description":"Rate limited; honor Retry-After in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"500":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}}}},"post":{"operationId":"analyzePublicPortfolioStressScenarios","summary":"Apply sourced approximate crisis shocks to a submitted portfolio, with explicit proxy methods and currency coverage.","security":[],"description":"Anonymous and stateless. The base POST runs the eight snapshot analyses. Snapshot endpoints return analyses with other sections not_requested; the standalone operations return capability plus analysis. Inspect statuses, reasons, coverage and population definitions even on HTTP 200.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"portfolio":{"anyOf":[{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["en","de"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["weights"],"default":"weights"},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["isin","weight"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["assetClass","currency","weight"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["holdings"],"additionalProperties":false},{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["en","de"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["values"]},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["isin","value"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["assetClass","currency","value"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["basis","holdings"],"additionalProperties":false}]},"scenarioKeys":{"type":"array","items":{"type":"string","enum":["gfc_2008","covid_2020","rate_hike_2022","euro_crisis_2011","dotcom_2000"]},"minItems":1,"maxItems":5}},"required":["portfolio","scenarioKeys"],"additionalProperties":false},"example":{"portfolio":{"basis":"weights","baseCurrency":"EUR","holdings":[{"isin":"IE00B4L5Y983","weight":0.6},{"isin":"IE00B3XXRP09","weight":0.3},{"assetClass":"cash","currency":"EUR","weight":0.1}],"locale":"en"},"scenarioKeys":["gfc_2008","covid_2020","rate_hike_2022"]}}}},"responses":{"200":{"description":"Explicit status, coverage and unknowns.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"modelVersion":{"type":"string"},"computedAt":{"type":"string","format":"date-time"},"baseCurrency":{"type":"string"},"capability":{"type":"string","enum":["stress-scenarios"]},"analysis":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"model":{"type":"string","enum":["approximate_sector_asset_class_and_listing_currency_shocks"]},"scenarios":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["gfc_2008","covid_2020","rate_hike_2022","euro_crisis_2011","dotcom_2000"]},"name":{"type":"string"},"dateFrom":{"type":"string","format":"date"},"dateTo":{"type":"string","format":"date"},"status":{"type":"string","enum":["ok","unavailable"]},"failure":{"type":["string","null"],"enum":["unresolved_holdings","unsupported_base_currency","missing_currency","missing_scenario_coverage"]},"returnFraction":{"type":["number","null"]},"preValue":{"type":["number","null"],"minimum":0},"postValue":{"type":["number","null"],"minimum":0},"change":{"type":["number","null"]},"approximate":{"type":"boolean","enum":[true]},"methodology":{"type":"string"},"sources":{"type":"array","items":{"type":"string"},"description":"Source descriptions including URLs, preserved from the maintained scenario registry."},"reviewedAt":{"type":["string","null"],"format":"date"},"positions":{"type":"array","items":{"type":"object","properties":{"isin":{"type":["string","null"],"pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"cashCurrency":{"type":["string","null"]},"weight":{"type":"number","minimum":0,"maximum":1},"assetClass":{"type":"string"},"returnFraction":{"type":"number"},"fxShockApplied":{"type":"number"},"method":{"type":"string","enum":["sector_proxy","asset_class_proxy"]},"preValue":{"type":["number","null"],"minimum":0},"postValue":{"type":["number","null"],"minimum":0},"change":{"type":["number","null"]}},"required":["isin","cashCurrency","weight","assetClass","returnFraction","fxShockApplied","method","preValue","postValue","change"],"additionalProperties":false}}},"required":["key","name","dateFrom","dateTo","status","failure","returnFraction","preValue","postValue","change","approximate","methodology","sources","reviewedAt","positions"],"additionalProperties":false}}},"required":["model","scenarios"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"assumptions":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}},"links":{"type":"object","properties":{"documentation":{"type":"string","format":"uri"},"catalog":{"type":"string","format":"uri"}},"required":["documentation","catalog"],"additionalProperties":false}},"required":["modelVersion","computedAt","baseCurrency","capability","analysis","assumptions","limitations","links"],"additionalProperties":false},"error":{"type":"null"},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"400":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"404":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"413":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"429":{"description":"Rate limited; honor Retry-After in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"500":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}}}}},"/api/v1/public/portfolio-analysis/historical-replay":{"get":{"operationId":"describePublicPortfolioHistoricalReplay","summary":"Discover: Replay the current mix with explicit hypothetical investments, dated prices and FX; withhold results when any holding lacks history.","security":[],"responses":{"200":{"description":"Catalog or descriptor with inputSchema, resultSchema and example, in data/error/meta.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":{}},"error":{"type":"null"},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"400":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"404":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"413":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"429":{"description":"Rate limited; honor Retry-After in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"500":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}}}},"post":{"operationId":"analyzePublicPortfolioHistoricalReplay","summary":"Replay the current mix with explicit hypothetical investments, dated prices and FX; withhold results when any holding lacks history.","security":[],"description":"Anonymous and stateless. The base POST runs the eight snapshot analyses. Snapshot endpoints return analyses with other sections not_requested; the standalone operations return capability plus analysis. Inspect statuses, reasons, coverage and population definitions even on HTTP 200.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"portfolio":{"anyOf":[{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["en","de"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["weights"],"default":"weights"},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["isin","weight"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"weight":{"type":"number","minimum":0,"maximum":1,"exclusiveMinimum":0,"description":"Share of the entire submitted portfolio: 0.6 means 60%."}},"required":["assetClass","currency","weight"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["holdings"],"additionalProperties":false},{"type":"object","properties":{"baseCurrency":{"type":"string","pattern":"^[A-Za-z]{3}$","default":"EUR"},"locale":{"type":"string","enum":["en","de"],"default":"en"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum returned companies and underlying positions; tails retain omitted weight."},"basis":{"type":"string","enum":["values"]},"holdings":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["isin","value"],"additionalProperties":false},{"type":"object","properties":{"assetClass":{"type":"string","enum":["cash"]},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"value":{"type":"number","exclusiveMinimum":0,"maximum":100000000,"description":"Market value already converted to baseCurrency. Never a native-currency amount."}},"required":["assetClass","currency","value"],"additionalProperties":false}]},"minItems":1,"maxItems":25}},"required":["basis","holdings"],"additionalProperties":false}]},"startDate":{"type":"string","format":"date"},"endDate":{"type":"string","format":"date"},"initialValue":{"type":"number","minimum":0,"exclusiveMinimum":0,"maximum":100000000,"description":"Explicit hypothetical initial investment in baseCurrency, independent of current portfolio values."},"monthlyContribution":{"type":"number","minimum":0,"maximum":100000000,"default":0,"description":"Invested on day zero and monthly anniversaries, at the first available trading day at or after each anniversary."},"rebalancing":{"type":"string","enum":["none","annual","quarterly"],"default":"none"}},"required":["portfolio","startDate","endDate","initialValue"],"additionalProperties":false},"example":{"portfolio":{"basis":"weights","baseCurrency":"EUR","holdings":[{"isin":"IE00B4L5Y983","weight":0.6},{"isin":"IE00B3XXRP09","weight":0.3},{"assetClass":"cash","currency":"EUR","weight":0.1}],"locale":"en"},"startDate":"2021-01-04","endDate":"2025-12-31","initialValue":10000,"monthlyContribution":100,"rebalancing":"annual"}}}},"responses":{"200":{"description":"Explicit status, coverage and unknowns.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"modelVersion":{"type":"string"},"computedAt":{"type":"string","format":"date-time"},"baseCurrency":{"type":"string"},"capability":{"type":"string","enum":["historical-replay"]},"analysis":{"type":"object","properties":{"status":{"type":"string","enum":["ok","partial","unavailable"]},"reasons":{"type":"array","items":{"type":"string","enum":["unresolved_holdings","provider_unavailable","incomplete_coverage","no_equities","fewer_than_two_funds"]}},"data":{"type":["object","null"],"properties":{"model":{"type":"string","enum":["historical_current_mix_with_hypothetical_contributions"]},"requestedStart":{"type":"string","format":"date"},"requestedEnd":{"type":"string","format":"date"},"coverage":{"type":"number","minimum":0,"maximum":1},"failure":{"type":["string","null"],"enum":["future_window","incomplete_portfolio","insufficient_history"]},"legs":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"isin":{"type":["string","null"],"pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$"},"weight":{"type":"number","minimum":0,"maximum":1},"status":{"type":"string","enum":["included","unavailable"]},"reason":{"type":["string","null"],"enum":["unresolved","missing_currency","missing_history","missing_fx","insufficient_history","stale_history","invalid_history","provider_unavailable"]},"basis":{"type":["string","null"],"enum":["total","price","nominal_cash"]},"quoteCurrency":{"type":["string","null"]},"firstDate":{"type":["string","null"],"format":"date"},"lastDate":{"type":["string","null"],"format":"date"}},"required":["key","isin","weight","status","reason","basis","quoteCurrency","firstDate","lastDate"],"additionalProperties":false}},"replay":{"type":["object","null"],"properties":{"startDate":{"type":"string","format":"date"},"endDate":{"type":"string","format":"date"},"mixTotalReturn":{"type":"number"},"mixCagr":{"type":["number","null"]},"maxDrawdown":{"type":"number"},"peakDate":{"type":"string","format":"date"},"maxDrawdownDate":{"type":"string","format":"date"},"recoveryDate":{"type":["string","null"],"format":"date"},"totalContributed":{"type":"number","minimum":0},"endingValue":{"type":"number","minimum":0},"contributionTotalReturn":{"type":"number"},"annualizedReturn":{"type":["number","null"]},"resetCount":{"type":"integer","minimum":0},"series":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","format":"date"},"value":{"type":"number","minimum":0}},"required":["date","value"],"additionalProperties":false},"maxItems":3700},"attribution":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"startWeight":{"type":"number","minimum":0,"maximum":1},"endWeight":{"type":"number","minimum":0,"maximum":1},"legReturn":{"type":"number"},"contributionToReturn":{"type":"number"}},"required":["key","startWeight","endWeight","legReturn","contributionToReturn"],"additionalProperties":false}}},"required":["startDate","endDate","mixTotalReturn","mixCagr","maxDrawdown","peakDate","maxDrawdownDate","recoveryDate","totalContributed","endingValue","contributionTotalReturn","annualizedReturn","resetCount","series","attribution"],"additionalProperties":false}},"required":["model","requestedStart","requestedEnd","coverage","failure","legs","replay"],"additionalProperties":false}},"required":["status","reasons","data"],"additionalProperties":false},"assumptions":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}},"links":{"type":"object","properties":{"documentation":{"type":"string","format":"uri"},"catalog":{"type":"string","format":"uri"}},"required":["documentation","catalog"],"additionalProperties":false}},"required":["modelVersion","computedAt","baseCurrency","capability","analysis","assumptions","limitations","links"],"additionalProperties":false},"error":{"type":"null"},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"400":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"404":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"413":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"429":{"description":"Rate limited; honor Retry-After in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"500":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}}}}},"/api/v1/public/portfolio-analysis/guide":{"get":{"operationId":"readPublicPortfolioGuide","summary":"Agent guide for public portfolio analysis","security":[],"responses":{"200":{"description":"Markdown guide.","content":{"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"404":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"413":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"429":{"description":"Rate limited; honor Retry-After in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"500":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}}}}},"/api/v1/public/portfolio-analysis/methodology":{"get":{"operationId":"readPublicApiMethodology","summary":"Methodology, formulas, sources, limitations and glossary links","security":[],"parameters":[{"schema":{"type":"string","enum":["en","de"],"default":"en"},"required":false,"name":"locale","in":"query"}],"responses":{"200":{"description":"English or German Markdown methodology; locale defaults to en.","content":{"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"404":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"413":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"429":{"description":"Rate limited; honor Retry-After in seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}},"500":{"description":"Invalid request or service error.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"meta":{"type":"object","additionalProperties":{}}},"required":["data","error","meta"]}}}}}}}},"webhooks":{}}