{"openapi":"3.1.0","info":{"title":"Creo Factor Exposure API","description":"Send positions with your own daily prices; get named factor exposures, risk contribution, methodology version, timestamps, coverage and quality flags. Creo sells compute, not market data. Errors share one body: {\"detail\": {\"code\", \"message\", \"errors\"?: [{\"path\", \"msg\"}]}}. Numbers may be JSON numbers or numeric strings. Agent guide: /llms-full.txt.","version":"0.1.0"},"paths":{"/v1/keys":{"post":{"tags":["public api"],"summary":"Mint a free API key","description":"Returns a new key once; Creo stores only its hash. No auth needed. Limited to 5 keys per IP per UTC day, so reuse your key (for example from a CREO_KEY environment variable) instead of minting per run.","operationId":"mint_key_v1_keys_post","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/KeyMintRequest"},{"type":"null"}],"title":"Payload"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssuedKey"}}}},"422":{"description":"INVALID_REQUEST, or a typed failure such as PRICES_REQUIRED or POSITION_LIMIT. Not charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"400":{"description":"KEY_IN_QUERY: send the key in a header, not the URL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"RATE_LIMITED: 5 new keys per IP per day","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds until the limit resets (00:00 UTC).","schema":{"type":"integer"}}}}},"security":[]}},"/v1/plans":{"get":{"tags":["public api"],"summary":"Plans","operationId":"plans_v1_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanCatalog"}}}},"400":{"description":"KEY_IN_QUERY: send the key in a header, not the URL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[]}},"/v1/status":{"get":{"tags":["public api"],"summary":"Service status, methodology version and data sources","description":"Keyless and free. Reads process state only; never touches the database.","operationId":"service_status_v1_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceStatus"}}}},"400":{"description":"KEY_IN_QUERY: send the key in a header, not the URL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[]}},"/v1/account":{"get":{"tags":["public api"],"summary":"Account","operationId":"account_v1_account_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountStatus"}}}},"400":{"description":"KEY_IN_QUERY: send the key in a header, not the URL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"AUTHENTICATION_REQUIRED: missing or invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"ApiKeyHeader":[]},{"BearerKey":[]}]}},"/v1/account/checkout":{"post":{"tags":["public api"],"summary":"Account Checkout","operationId":"account_checkout_v1_account_checkout_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingRedirect"}}}},"422":{"description":"INVALID_REQUEST, or a typed failure such as PRICES_REQUIRED or POSITION_LIMIT. Not charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"400":{"description":"KEY_IN_QUERY: send the key in a header, not the URL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"AUTHENTICATION_REQUIRED: missing or invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"ApiKeyHeader":[]},{"BearerKey":[]}]}},"/v1/account/portal":{"post":{"tags":["public api"],"summary":"Account Portal","operationId":"account_portal_v1_account_portal_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingRedirect"}}}},"400":{"description":"KEY_IN_QUERY: send the key in a header, not the URL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"AUTHENTICATION_REQUIRED: missing or invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"ApiKeyHeader":[]},{"BearerKey":[]}]}},"/v1/demo/exposures":{"get":{"tags":["public api"],"summary":"Score the five SYNTH.* demo tickers","description":"Works without a key (20 calls a day per IP) or with one (1 credit).","operationId":"demo_exposures_v1_demo_exposures_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicExposureResponse"}}}},"400":{"description":"KEY_IN_QUERY: send the key in a header, not the URL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"INVALID_REQUEST, or a typed failure such as PRICES_REQUIRED or POSITION_LIMIT. Not charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"AUTHENTICATION_REQUIRED: missing or invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"RATE_LIMITED: daily credits used up","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds until the limit resets (00:00 UTC).","schema":{"type":"integer"}}}}},"security":[{"ApiKeyHeader":[]},{"BearerKey":[]},{}]}},"/v1/portfolio/exposures":{"post":{"tags":["public api"],"summary":"Score a portfolio for named factor exposures and risk contribution","description":"Send positions with your own daily closes; Creo returns each factor's portfolio exposure (weights x per-position characteristic), the long and short book contributions, 63-session risk contribution, coverage, quality flags and timestamps. Missing data is null with a reason, never zero. SYNTH.* tickers without history work keyless. 1 successful call = 1 credit; typed 422s are free.","operationId":"public_portfolio_exposures_v1_portfolio_exposures_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicExposureRequest"},"examples":{"long_short_demo":{"summary":"Long/short demo book, keyless","value":{"positions":[{"ticker":"SYNTH.MOM","quantity":"-10"},{"ticker":"SYNTH.DEF","quantity":"10"}],"cash":"5000"}},"your_prices":{"summary":"Your prices (needs a key; 253+ closes for beta and momentum)","value":{"positions":[{"ticker":"AAPL","quantity":100,"market_cap":"3400000000000","history":[{"date":"2026-11-04","close":"225.40","volume":"51200000"},{"date":"2026-11-05","close":"227.10","volume":"48100000"}]}],"benchmark":{"ticker":"SPY","history":[{"date":"2026-11-04","close":"598.10"},{"date":"2026-11-05","close":"601.24"}]}}}}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicExposureResponse"}}}},"422":{"description":"INVALID_REQUEST, or a typed failure such as PRICES_REQUIRED or POSITION_LIMIT. Not charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"400":{"description":"KEY_IN_QUERY: send the key in a header, not the URL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"AUTHENTICATION_REQUIRED: missing or invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"RATE_LIMITED: daily credits used up","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds until the limit resets (00:00 UTC).","schema":{"type":"integer"}}}}},"security":[{"ApiKeyHeader":[]},{"BearerKey":[]},{}]}},"/health/live":{"get":{"tags":["health"],"summary":"Live","operationId":"live_health_live_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Live Health Live Get"}}}}},"security":[]}},"/health/ready":{"get":{"tags":["health"],"summary":"Ready","operationId":"ready_health_ready_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Ready Health Ready Get"}}}}},"security":[]}},"/health/data":{"get":{"tags":["health"],"summary":"Data Health","operationId":"data_health_health_data_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Data Health Health Data Get"}}}}},"security":[]}}},"components":{"schemas":{"AccountStatus":{"properties":{"key_prefix":{"type":"string","title":"Key Prefix"},"plan":{"$ref":"#/components/schemas/Plan"},"subscription_plan":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subscription Plan"},"subscription_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subscription Status"},"current_period_end":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Current Period End"},"cancel_at_period_end":{"type":"boolean","title":"Cancel At Period End"},"can_manage_billing":{"type":"boolean","title":"Can Manage Billing"},"calls_used_today":{"type":"integer","title":"Calls Used Today"},"reset_at":{"type":"string","format":"date-time","title":"Reset At"}},"type":"object","required":["key_prefix","plan","subscription_plan","subscription_status","current_period_end","cancel_at_period_end","can_manage_billing","calls_used_today","reset_at"],"title":"AccountStatus"},"AssetClass":{"type":"string","enum":["equity","crypto"],"title":"AssetClass"},"BillingRedirect":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"BillingRedirect"},"CheckoutRequest":{"properties":{"plan":{"type":"string","enum":["builder","pro"],"title":"Plan"}},"additionalProperties":false,"type":"object","required":["plan"],"title":"CheckoutRequest"},"Contribution":{"properties":{"instrument":{},"base_value":{"title":"Base Value"},"weight":{"title":"Weight"},"instrument_exposure":{"title":"Instrument Exposure"},"contribution":{"title":"Contribution"}},"additionalProperties":false,"type":"object","required":["instrument","base_value","weight","instrument_exposure","contribution"],"title":"Contribution"},"Coverage":{"properties":{"nav_pct":{"title":"Nav Pct"},"gross_pct":{"title":"Gross Pct"},"positions_pct":{"title":"Positions Pct"}},"additionalProperties":false,"type":"object","required":["nav_pct","gross_pct","positions_pct"],"title":"Coverage"},"DataSource":{"properties":{"id":{"title":"Id"},"used_for":{"title":"Used For"},"terms":{"title":"Terms"}},"additionalProperties":false,"type":"object","required":["id","used_for","terms"],"title":"DataSource"},"DemoData":{"properties":{"as_of":{"title":"As Of"},"tickers":{"title":"Tickers"},"synthetic":{"title":"Synthetic"}},"additionalProperties":false,"type":"object","required":["as_of","tickers"],"title":"DemoData"},"Denominator":{"type":"string","enum":["computed_nav","reported_nav","gross_notional"],"title":"Denominator"},"FactorRisk":{"properties":{"factor_id":{"title":"Factor Id","description":"market or residual."},"portfolio_beta":{"title":"Portfolio Beta","description":"Ordinary least-squares beta of the whole portfolio's daily return on the benchmark over the risk window (63 sessions). It differs from the market_beta exposure, which is a weighted sum of each position's EWMA beta over up to 252 sessions."},"variance_share":{"title":"Variance Share","description":"Share of portfolio variance, 0 to 1."}},"additionalProperties":false,"type":"object","required":["factor_id","portfolio_beta","variance_share"],"title":"FactorRisk"},"InstrumentRef":{"properties":{"instrument_id":{"title":"Instrument Id"},"scope":{}},"additionalProperties":false,"type":"object","required":["instrument_id","scope"],"title":"InstrumentRef"},"IssuedKey":{"properties":{"key":{"type":"string","title":"Key"},"key_prefix":{"type":"string","title":"Key Prefix"},"plan":{"type":"string","title":"Plan"},"daily_call_limit":{"type":"integer","title":"Daily Call Limit"},"max_positions":{"type":"integer","title":"Max Positions"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["key","key_prefix","plan","daily_call_limit","max_positions","created_at"],"title":"IssuedKey"},"KeyMintRequest":{"properties":{"email":{"anyOf":[{"type":"string","maxLength":254},{"type":"null"}],"title":"Email"}},"additionalProperties":false,"type":"object","title":"KeyMintRequest"},"Money":{"properties":{"amount":{"title":"Amount"},"currency":{"title":"Currency"}},"additionalProperties":false,"type":"object","required":["amount","currency"],"title":"Money"},"NotAggregated":{"properties":{"reason":{"title":"Reason"},"scopes":{"title":"Scopes"}},"additionalProperties":false,"type":"object","required":["reason","scopes"],"title":"NotAggregated"},"Plan":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"monthly_usd":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Monthly Usd"},"daily_call_limit":{"type":"integer","title":"Daily Call Limit"},"max_positions":{"type":"integer","title":"Max Positions"},"summary":{"type":"string","title":"Summary"}},"type":"object","required":["id","name","monthly_usd","daily_call_limit","max_positions","summary"],"title":"Plan"},"PlanCatalog":{"properties":{"plans":{"items":{"$ref":"#/components/schemas/Plan"},"type":"array","title":"Plans"},"checkout_open":{"type":"boolean","title":"Checkout Open"}},"type":"object","required":["plans","checkout_open"],"title":"PlanCatalog"},"PositionRisk":{"properties":{"ticker":{"title":"Ticker"},"asset_class":{},"weight":{"title":"Weight"},"risk_contribution_pct":{"title":"Risk Contribution Pct"}},"additionalProperties":false,"type":"object","required":["ticker","asset_class","weight","risk_contribution_pct"],"title":"PositionRisk"},"Provenance":{"properties":{"model":{"title":"Model"},"release":{"title":"Release"},"factor_releases":{"title":"Factor Releases"},"factor_models":{"title":"Factor Models"},"factor_universes":{"title":"Factor Universes"},"factor_definitions":{"title":"Factor Definitions"},"prices":{"title":"Prices"},"fx":{"title":"Fx"}},"additionalProperties":false,"type":"object","required":["model","release","factor_releases","factor_models","factor_universes","factor_definitions","prices","fx"],"title":"Provenance"},"PublicBar":{"properties":{"date":{"type":"string","format":"date","title":"Date","description":"Session date (YYYY-MM-DD).","examples":["2026-11-05"]},"close":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Close","description":"Close price in USD.","examples":["227.10"]},"volume":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Volume","description":"Shares (or coins) traded. Needed for the liquidity factors.","examples":["48100000"]}},"additionalProperties":false,"type":"object","required":["date","close"],"title":"PublicBar","description":"One daily session. Numbers may be JSON numbers or strings; strings stay exact."},"PublicBenchmark":{"properties":{"ticker":{"type":"string","title":"Ticker","description":"Label only.","default":"BENCHMARK","examples":["SPY"]},"history":{"items":{"$ref":"#/components/schemas/PublicBar"},"type":"array","maxItems":2000,"minItems":2,"title":"History","description":"Daily benchmark closes on the same dates as the positions' history."}},"additionalProperties":false,"type":"object","required":["history"],"title":"PublicBenchmark","description":"Market series for beta, e.g. SPY closes for US equities or BTC for crypto."},"PublicExposureRequest":{"properties":{"positions":{"items":{"$ref":"#/components/schemas/PublicPosition"},"type":"array","maxItems":200,"minItems":1,"title":"Positions","description":"Long (quantity > 0) and short (quantity < 0) positions. The plan caps the count: Free 5, Builder 50, Pro 200."},"cash":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Cash","description":"Cash in USD, added to net asset value (NAV). For long/short books, send the account's cash so weights are fractions of real NAV.","default":"0","examples":["250000"]},"factors":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Factors","description":"Factor ids to compute. Default: every factor for the asset classes in the book. GET /llms.txt lists the ids.","examples":[["equity.momentum.total_return.12_1","equity.market_beta.ewma.252"]]},"valid_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Valid At","description":"Point-in-time cutoff in UTC (ends with Z). Bars after this date are ignored. Default: the close of the latest supplied session.","examples":["2026-11-05T21:00:00Z"]},"benchmark":{"anyOf":[{"$ref":"#/components/schemas/PublicBenchmark"},{"type":"null"}],"description":"Required for market beta and the market/residual risk split. Without it beta is null with MISSING_BENCHMARK."},"universe":{"anyOf":[{"type":"string","enum":["client_supplied","demo_synthetic"]},{"type":"null"}],"title":"Universe","description":"Label echoed as each exposure's reference_universe. v1 returns raw characteristics, not cross-sectional z-scores, so this does not change values."}},"additionalProperties":false,"type":"object","required":["positions"],"title":"PublicExposureRequest","description":"A book of positions plus the prices to score it with. Creo never fetches prices."},"PublicExposureResponse":{"properties":{"result_id":{"title":"Result Id"},"methodology_version":{"title":"Methodology Version"},"data_policy":{"title":"Data Policy","description":"synthetic_demo when every position is a SYNTH.* demo series, otherwise customer_supplied_prices. Creo sells compute, not market data."},"valuation_summary":{},"instruments":{"title":"Instruments"},"exposures":{"title":"Exposures"},"risk":{},"not_aggregated":{"title":"Not Aggregated"},"coverage":{},"quality":{"title":"Quality"},"warnings":{"title":"Warnings"},"provenance":{},"valid_at":{"title":"Valid At"},"source_known_at":{"title":"Source Known At"},"system_known_at":{"title":"System Known At"},"computed_at":{"title":"Computed At"},"credits":{"title":"Credits"},"sec_sources":{"title":"Sec Sources","description":"SEC EDGAR facts behind each *.sec factor value, with accession numbers."}},"additionalProperties":false,"type":"object","required":["result_id","methodology_version","data_policy","valuation_summary","instruments","exposures","risk","not_aggregated","coverage","quality","warnings","provenance","valid_at","source_known_at","system_known_at","computed_at","credits"],"title":"PublicExposureResponse"},"PublicInstrument":{"properties":{"instrument_id":{"title":"Instrument Id"},"ticker":{"title":"Ticker"},"asset_class":{}},"additionalProperties":false,"type":"object","required":["instrument_id","ticker","asset_class"],"title":"PublicInstrument"},"PublicPosition":{"properties":{"ticker":{"type":"string","maxLength":32,"minLength":1,"title":"Ticker","description":"Your identifier for the instrument (A-Z, 0-9, '.', '-'). Creo does not look it up; SYNTH.* tickers use built-in synthetic demo series.","examples":["AAPL","SYNTH.MOM"]},"quantity":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Quantity","description":"Signed units held. Positive is long, negative is short. Non-zero.","examples":["100",-50]},"asset_class":{"$ref":"#/components/schemas/AssetClass","description":"equity or crypto. Each class is scored in its own sleeve with its own factors; the two are never added together.","default":"equity"},"close":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Close","description":"Valuation close in USD. Defaults to the last close in history.","examples":["227.10"]},"market_cap":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Market Cap","description":"Market capitalization in USD. Needed for the size factor.","examples":["3400000000000"]},"history":{"items":{"$ref":"#/components/schemas/PublicBar"},"type":"array","maxItems":2000,"title":"History","description":"Daily closes, any order. Required for every non-SYNTH ticker. /llms-full.txt lists how many closes each factor needs (up to 253)."}},"additionalProperties":false,"type":"object","required":["ticker","quantity"],"title":"PublicPosition"},"PublicRisk":{"properties":{"method":{"title":"Method"},"window_sessions":{"title":"Window Sessions"},"annualization_days":{"title":"Annualization Days"},"portfolio_volatility":{"title":"Portfolio Volatility"},"positions":{"title":"Positions"},"factors":{"title":"Factors"},"unavailable_reason":{"title":"Unavailable Reason"}},"additionalProperties":false,"type":"object","required":["method","window_sessions","annualization_days","portfolio_volatility","positions","factors","unavailable_reason"],"title":"PublicRisk","description":"Ex-ante risk from the last 63 common daily returns of every position."},"PublicWarning":{"properties":{"code":{"title":"Code"},"message":{"title":"Message"}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"PublicWarning"},"SecFact":{"properties":{"ticker":{"title":"Ticker"},"factor_id":{"title":"Factor Id"},"cik":{"title":"Cik","description":"10-digit SEC Central Index Key of the issuer."},"concept":{"title":"Concept","description":"US-GAAP XBRL concept as filed."},"value":{"title":"Value"},"period_start":{"title":"Period Start"},"period_end":{"title":"Period End"},"form":{"title":"Form","description":"Filing form, e.g. 10-K."},"accession":{"title":"Accession","description":"EDGAR accession number of the filing."},"filed":{"title":"Filed","description":"Date the filing was made; always on or before valid_at."}},"additionalProperties":false,"type":"object","required":["ticker","factor_id","cik","concept","value","period_start","period_end","form","accession","filed"],"title":"SecFact","description":"One SEC filing fact behind a filing-based factor value."},"ServiceStatus":{"properties":{"status":{"title":"Status","description":"degraded when any component is degraded."},"checked_at":{"title":"Checked At"},"started_at":{"title":"Started At"},"version":{"title":"Version"},"commit":{"title":"Commit","description":"Short git commit of the running deploy."},"methodology_version":{"title":"Methodology Version"},"factors":{"title":"Factors"},"demo":{},"components":{"title":"Components"},"data_sources":{"title":"Data Sources"},"attestation":{"title":"Attestation"}},"additionalProperties":false,"type":"object","required":["status","checked_at","started_at","version","commit","methodology_version","factors","demo","components","data_sources","attestation"],"title":"ServiceStatus"},"SleeveExposure":{"properties":{"scope":{},"factor_id":{"title":"Factor Id"},"measure":{"title":"Measure"},"unit":{"title":"Unit"},"orientation":{"title":"Orientation"},"reference_universe":{"title":"Reference Universe"},"value":{"title":"Value","description":"Portfolio exposure: sum over positions of weight x instrument exposure. Null when coverage is incomplete; never a stand-in zero."},"net":{"title":"Net","description":"Same as value: long + short."},"gross":{"title":"Gross","description":"Sum of absolute contributions."},"long":{"title":"Long","description":"Contribution of the long book (positions with quantity > 0). Can be negative when longs carry a negative exposure."},"short":{"title":"Short","description":"Contribution of the short book (positions with quantity < 0). Can be positive when shorts carry a negative exposure."},"coverage":{},"contributors":{"title":"Contributors"},"unavailable_reason":{"title":"Unavailable Reason"}},"additionalProperties":false,"type":"object","required":["scope","factor_id","measure","unit","orientation","reference_universe","value","net","gross","long","short","coverage","contributors"],"title":"SleeveExposure"},"StatusComponent":{"properties":{"name":{"title":"Name"},"status":{"title":"Status"},"detail":{"title":"Detail"},"last_success_at":{"title":"Last Success At"},"last_failure_at":{"title":"Last Failure At"}},"additionalProperties":false,"type":"object","required":["name","status","detail"],"title":"StatusComponent"},"ValuationProvenance":{"properties":{"kind":{"title":"Kind"},"instrument_id":{"title":"Instrument Id"},"currency":{"title":"Currency"},"base_currency":{"title":"Base Currency"},"at":{"title":"At"},"source":{"title":"Source"}},"additionalProperties":false,"type":"object","required":["kind","currency","at","source"],"title":"ValuationProvenance"},"ValuationSummary":{"properties":{"computed_nav":{},"reported_nav":{},"unexplained_residual":{},"selected_denominator":{},"gross_notional":{}},"additionalProperties":false,"type":"object","required":["computed_nav","reported_nav","unexplained_residual","selected_denominator","gross_notional"],"title":"ValuationSummary"},"ErrorItem":{"type":"object","properties":{"path":{"type":"string","example":"positions[0].quantity"},"msg":{"type":"string","example":"holding quantity must be non-zero"}},"required":["path","msg"]},"Error":{"type":"object","properties":{"detail":{"type":"object","properties":{"code":{"type":"string","example":"PRICES_REQUIRED"},"message":{"type":"string"},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ErrorItem"}}},"required":["code","message"]}},"required":["detail"]}},"securitySchemes":{"ApiKeyHeader":{"type":"apiKey","in":"header","name":"x-api-key","description":"A creo_ key from POST /v1/keys."},"BearerKey":{"type":"http","scheme":"bearer","description":"The same creo_ key as Authorization: Bearer."}}},"servers":[{"url":"https://itscreo.com","description":"Creo"}]}