{"openapi":"3.1.0","info":{"title":"Ordien Institutional development API","version":"0.1.0","description":"Persistent operational records with explicit provenance. Official NAV, live allocation, global eligibility, complete exchange backfill and financial-standard certification are not enabled. No production base URL is advertised."},"paths":{"/api/v1/institutional/organizations":{"get":{"operationId":"institutionalOrganizations","security":[{"BrowserSession":[]},{"NexusKey":[]}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}},"post":{"operationId":"institutionalCreateOrganization","security":[{"BrowserSession":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"name":{"type":"string","maxLength":120},"jurisdiction":{"type":"string","minLength":2,"maxLength":80},"base_currency":{"const":"USD"}},"required":["idempotency_key","name","jurisdiction","base_currency"]}}}},"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"201":{"description":"Organization and owner membership created, or the identical creation replayed."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/overview":{"get":{"operationId":"institutionalOverview","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/entities":{"get":{"operationId":"institutionalList_entities","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}},"post":{"operationId":"institutionalCreate_entities","security":[{"BrowserSession":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"description":"Organization role and object scope are checked server-side. See the institutional API guide for review constraints.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":1,"maxLength":120},"jurisdiction":{"type":"string","minLength":1}},"required":["idempotency_key","name","jurisdiction"]}}}},"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/funds":{"get":{"operationId":"institutionalList_funds","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}},"post":{"operationId":"institutionalCreate_funds","security":[{"BrowserSession":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"description":"Organization role and object scope are checked server-side. See the institutional API guide for review constraints.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"entity_id":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":1,"maxLength":120},"base_currency":{"type":"string","const":"USD"}},"required":["idempotency_key","entity_id","name","base_currency"]}}}},"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/portfolios":{"get":{"operationId":"institutionalList_portfolios","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}},"post":{"operationId":"institutionalCreate_portfolios","security":[{"BrowserSession":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"description":"Organization role and object scope are checked server-side. See the institutional API guide for review constraints.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"fund_id":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":1,"maxLength":120},"base_currency":{"type":"string","const":"USD"}},"required":["idempotency_key","fund_id","name","base_currency"]}}}},"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/accounts":{"get":{"operationId":"institutionalList_accounts","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}},"post":{"operationId":"institutionalCreate_accounts","security":[{"BrowserSession":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"description":"Organization role and object scope are checked server-side. See the institutional API guide for review constraints.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"portfolio_id":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":1,"maxLength":120},"venue":{"type":"string","minLength":1},"account_type":{"enum":["manual","exchange"]},"connection_id":{"type":"string","format":"uuid","description":"Required for exchange accounts; must be an owned nonrevoked connection with matching venue. Never marks it verified."}},"required":["idempotency_key","portfolio_id","name","venue","account_type"]}}}},"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/members":{"get":{"operationId":"institutionalList_members","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}},"post":{"operationId":"institutionalCreate_members","security":[{"BrowserSession":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"description":"Organization role and object scope are checked server-side. See the institutional API guide for review constraints.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"email":{"type":"string","format":"email"},"role":{"enum":["admin","finance","operations","trader","risk","read_only","auditor","allocator"]},"portfolio_ids":{"type":"array","items":{"type":"string","format":"uuid"},"maxItems":1000},"active":{"type":"boolean","default":true}},"required":["idempotency_key","email","role","portfolio_ids"]}}}},"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/transactions":{"get":{"operationId":"institutionalList_transactions","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/ledger":{"get":{"operationId":"institutionalList_ledger","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/exceptions":{"get":{"operationId":"institutionalList_exceptions","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/resolution_proposals":{"get":{"operationId":"institutionalList_resolution_proposals","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/prices":{"get":{"operationId":"institutionalList_prices","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}},"post":{"operationId":"institutionalCreate_prices","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"description":"Organization role and object scope are checked server-side. See the institutional API guide for review constraints.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"portfolio_id":{"type":"string","format":"uuid"},"asset":{"type":"string","minLength":1},"quote_currency":{"type":"string","const":"USD"},"price":{"type":"string","pattern":"^-?[0-9]+(?:\\.[0-9]{1,18})?$","description":"Exact decimal text. Unsupported precision and overflow are rejected."},"observed_at":{"type":"string","format":"date-time"},"source":{"type":"string","minLength":1},"reason":{"type":"string","minLength":1}},"required":["idempotency_key","portfolio_id","asset","quote_currency","price","observed_at","source","reason"]}}}},"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/valuation_policies":{"get":{"operationId":"institutionalList_valuation_policies","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}},"post":{"operationId":"institutionalCreate_valuation_policies","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"description":"Organization role and object scope are checked server-side. See the institutional API guide for review constraints.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"portfolio_id":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":1,"maxLength":120},"source_priority":{"type":"array","items":{"type":"string","minLength":1},"minItems":1,"maxItems":8,"uniqueItems":true},"reference_source":{"type":"string","minLength":1},"max_age_seconds":{"type":"integer","minimum":1,"maximum":86400},"max_deviation":{"type":"string","pattern":"^-?[0-9]+(?:\\.[0-9]{1,18})?$","description":"Exact fraction between zero and one."}},"required":["idempotency_key","portfolio_id","name","source_priority","reference_source","max_age_seconds","max_deviation"]}}}},"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/valuations":{"get":{"operationId":"institutionalList_valuations","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/periods":{"get":{"operationId":"institutionalList_periods","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}},"post":{"operationId":"institutionalCreate_periods","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"description":"Organization role and object scope are checked server-side. See the institutional API guide for review constraints.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"portfolio_id":{"type":"string","format":"uuid"},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"}},"required":["idempotency_key","portfolio_id","starts_at","ends_at"]}}}},"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/reports":{"get":{"operationId":"institutionalList_reports","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/evidence":{"get":{"operationId":"institutionalList_evidence","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}},"post":{"operationId":"institutionalCreate_evidence","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"description":"Organization role and object scope are checked server-side. See the institutional API guide for review constraints.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"portfolio_id":{"type":"string","format":"uuid"},"strategy_name":{"type":"string","minLength":1,"maxLength":120},"methodology":{"type":"string","minLength":1},"source_reference":{"type":"string","minLength":1}},"required":["idempotency_key","portfolio_id","strategy_name","methodology","source_reference"]}}}},"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/allocations":{"get":{"operationId":"institutionalList_allocations","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/risk_limits":{"get":{"operationId":"institutionalList_risk_limits","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}},"post":{"operationId":"institutionalCreate_risk_limits","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"description":"Organization role and object scope are checked server-side. See the institutional API guide for review constraints.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"portfolio_id":{"type":"string","format":"uuid"},"metric":{"enum":["gross_exposure","net_exposure","leverage","concentration"]},"threshold":{"type":"string","pattern":"^-?[0-9]+(?:\\.[0-9]{1,18})?$","description":"Exact decimal text. Unsupported precision and overflow are rejected."}},"required":["idempotency_key","portfolio_id","metric","threshold"]}}}},"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/risk_events":{"get":{"operationId":"institutionalList_risk_events","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/source_events":{"get":{"operationId":"institutionalList_source_events","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/snapshot_lines":{"get":{"operationId":"institutionalList_snapshot_lines","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/journal":{"get":{"operationId":"institutionalList_journal","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/capital_events":{"get":{"operationId":"institutionalList_capital_events","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/audit":{"get":{"operationId":"institutionalList_audit","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/sync_runs":{"get":{"operationId":"institutionalList_sync_runs","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/ingestion_rejections":{"get":{"operationId":"institutionalList_ingestion_rejections","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolio_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"},"description":"Last item UUID; page order is stable ID order, not event chronology."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/actions":{"post":{"operationId":"institutionalWorkflow","parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"BrowserSession":[]},{"NexusKey":[]}],"description":"Approval, transaction-rejection and period-close actions require a browser session. An API key never substitutes for a distinct human reviewer. Rejected proposals retain their source and reason, post no ledger entries and cannot later be approved. The server checks roles and scope on every action. Mutations are idempotent by key and payload; a changed payload with a reused key returns 409.","requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"type":{"const":"propose_transaction"},"account_id":{"type":"string","format":"uuid"},"external_id":{"type":"string","format":"uuid"},"kind":{"type":"string"},"asset":{"type":"string"},"quantity":{"type":"string","pattern":"^-?[0-9]+(?:\\.[0-9]{1,18})?$","description":"Exact decimal text. Unsupported precision and overflow are rejected."},"fee":{"type":"string","pattern":"^-?[0-9]+(?:\\.[0-9]{1,18})?$","description":"Exact decimal text. Unsupported precision and overflow are rejected."},"fee_asset":{"type":"string"},"occurred_at":{"type":"string","format":"date-time"},"reason":{"type":"string"},"unit_price":{"type":"string","pattern":"^-?[0-9]+(?:\\.[0-9]{1,18})?$","description":"Required for a trade; a USD asset must have unit price one."},"quote_asset":{"type":"string","const":"USD"}},"required":["idempotency_key","type","account_id","external_id","kind","asset","quantity","fee","fee_asset","occurred_at","reason"]},{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"type":{"const":"approve_transaction"},"proposal_id":{"type":"string","format":"uuid"}},"required":["idempotency_key","type","proposal_id"]},{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"type":{"const":"reject_transaction"},"proposal_id":{"type":"string","format":"uuid"},"reason":{"type":"string"}},"required":["idempotency_key","type","proposal_id","reason"]},{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"type":{"const":"reconcile"},"account_id":{"type":"string","format":"uuid"},"asset":{"type":"string"},"observed_quantity":{"type":"string","pattern":"^-?[0-9]+(?:\\.[0-9]{1,18})?$","description":"Exact decimal text. Unsupported precision and overflow are rejected."},"observed_at":{"type":"string","format":"date-time"},"reason":{"type":"string"}},"required":["idempotency_key","type","account_id","asset","observed_quantity","observed_at","reason"]},{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"type":{"const":"propose_resolution"},"exception_id":{"type":"string","format":"uuid"},"reason":{"type":"string"}},"required":["idempotency_key","type","exception_id","reason"]},{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"type":{"const":"approve_resolution"},"proposal_id":{"type":"string","format":"uuid"}},"required":["idempotency_key","type","proposal_id"]},{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"type":{"const":"value_portfolio"},"portfolio_id":{"type":"string","format":"uuid"}},"required":["idempotency_key","type","portfolio_id"]},{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"type":{"const":"approve_policy"},"policy_id":{"type":"string","format":"uuid"},"reason":{"type":"string"}},"required":["idempotency_key","type","policy_id","reason"]},{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"type":{"const":"stress_test"},"portfolio_id":{"type":"string","format":"uuid"},"shock_fraction":{"type":"string","pattern":"^-?[0-9]+(?:\\.[0-9]{1,18})?$","description":"Exact decimal text. Unsupported precision and overflow are rejected."}},"required":["idempotency_key","type","portfolio_id","shock_fraction"]},{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"type":{"const":"close_period"},"period_id":{"type":"string","format":"uuid"}},"required":["idempotency_key","type","period_id"]},{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"type":{"const":"generate_report"},"portfolio_id":{"type":"string","format":"uuid"},"report_type":{"type":"string"},"format":{"type":"string"}},"required":["idempotency_key","type","portfolio_id","report_type","format"]},{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"type":{"const":"approve_evidence"},"evidence_id":{"type":"string","format":"uuid"},"reason":{"type":"string"}},"required":["idempotency_key","type","evidence_id","reason"]},{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"type":{"const":"allocate"},"portfolio_id":{"type":"string","format":"uuid"},"evidence_id":{"type":"string","format":"uuid"},"amount":{"type":"string","pattern":"^-?[0-9]+(?:\\.[0-9]{1,18})?$","description":"Exact decimal text. Unsupported precision and overflow are rejected."},"mode":{"const":"paper","default":"paper"}},"required":["idempotency_key","type","portfolio_id","evidence_id","amount"]}]}}}},"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/sync":{"post":{"operationId":"institutionalSyncAccount","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"description":"Bounded spot read through the existing private gateway. Requires institutional:write and accounts:read for a key, plus an owned verified connection and organization operations permission. One page never certifies full history. Unsupported records are quarantined; source evidence is adapter-normalized, not original venue payloads. No money-moving call is made.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"idempotency_key":{"type":"string","format":"uuid"},"account_id":{"type":"string","format":"uuid"},"operation":{"type":"string","enum":["balances","ledger"]},"since_ms":{"type":"integer","minimum":0},"currency":{"type":"string","pattern":"^[A-Z0-9]{1,16}$"},"allow_emulated":{"type":"boolean","default":false}},"required":["idempotency_key","account_id","operation"]}}}},"responses":{"200":{"description":"Authorized records or persisted workflow result. Monetary values are decimal strings; NAV and reports remain provisional."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}},"/api/v1/institutional/organizations/{org}/reports/{report}/download":{"get":{"operationId":"institutionalDownloadReport","security":[{"BrowserSession":[]},{"NexusKey":[]}],"parameters":[{"name":"org","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"report","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Retained provisional CSV or JSON snapshot. Download is audited and permission is rechecked."},"400":{"description":"Invalid fields, precision, date boundary or query."},"401":{"description":"Authentication absent, expired or revoked."},"403":{"description":"Insufficient scope/role, wrong Origin, self-approval, or unverified connection."},"404":{"description":"Unknown or unauthorized tenant/resource."},"409":{"description":"Replay conflict, unresolved break or locked accounting period."},"413":{"description":"Request exceeds 16 KiB."},"422":{"description":"Financial calculation, source or precision is unsupported."},"423":{"description":"Live allocation or execution remains locked."},"502":{"description":"Upstream source or response is invalid or exceeds the bounded response limit."},"503":{"description":"Storage or account service unavailable. Do not blindly retry mutations."}}}}},"components":{"securitySchemes":{"BrowserSession":{"type":"apiKey","in":"cookie","name":"nexus_session","description":"Approved OIDC session; mutations require exact Origin and application/json."},"NexusKey":{"type":"http","scheme":"bearer","description":"Explicit institutional:read/write scopes plus active organization membership and applicable portfolio grants. Administration and approvals reject bearer credentials."}},"schemas":{"Decimal":{"type":"string","pattern":"^-?[0-9]+(?:\\.[0-9]{1,18})?$","description":"Exact decimal text. Unsupported precision and overflow are rejected."}}}}