{"openapi":"3.1.0","info":{"title":"Nyuro.ai API","description":"Unified intelligent model router — OpenAI-compatible gateway, routing, and governance.","version":"2.4.0"},"paths":{"/":{"get":{"tags":["meta"],"summary":"Root","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Root  Get"}}}}}}},"/health":{"get":{"tags":["meta"],"summary":"Health","description":"Liveness — is the process up? Cheap, no dependency checks.","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Health Health Get"}}}}}}},"/health/ready":{"get":{"tags":["meta"],"summary":"Health Ready","description":"Readiness — can this node serve traffic? Probes Postgres, Redis, and (on\ndeployed tiers) LiteLLM.\n\nReturns 503 when any critical dependency is down so an orchestrator stops\nrouting traffic here until it recovers.","operationId":"health_ready_health_ready_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/providers":{"get":{"tags":["providers"],"summary":"List Providers","operationId":"list_providers_api_v1_providers_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ModelProviderRead"},"title":"Response List Providers Api V1 Providers Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["providers"],"summary":"Create Provider","operationId":"create_provider_api_v1_providers_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelProviderCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelProviderRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/providers/status":{"get":{"tags":["providers"],"summary":"Provider Status","description":"Lists all *registered* providers (i.e., actually wired up in this process).","operationId":"provider_status_api_v1_providers_status_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ProviderStatus"},"title":"Response Provider Status Api V1 Providers Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/providers/health":{"get":{"tags":["providers"],"summary":"Provider Health","operationId":"provider_health_api_v1_providers_health_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ProviderHealthRead"},"title":"Response Provider Health Api V1 Providers Health Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/routes":{"get":{"tags":["routing"],"summary":"List Routes","operationId":"list_routes_api_v1_routes_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ModelRouteRead"},"title":"Response List Routes Api V1 Routes Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["routing"],"summary":"Create Route","operationId":"create_route_api_v1_routes_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelRouteCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelRouteRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/routes/{route_id}":{"get":{"tags":["routing"],"summary":"Get Route","operationId":"get_route_api_v1_routes__route_id__get","parameters":[{"name":"route_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Route Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelRouteRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["routing"],"summary":"Update Route","operationId":"update_route_api_v1_routes__route_id__patch","parameters":[{"name":"route_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Route Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelRouteUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelRouteRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["routing"],"summary":"Delete Route","operationId":"delete_route_api_v1_routes__route_id__delete","parameters":[{"name":"route_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Route Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs":{"get":{"tags":["observability"],"summary":"List Logs","operationId":"list_logs_api_v1_logs_get","parameters":[{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Agent Id"}},{"name":"api_key_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Api Key Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},{"name":"start","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start"}},{"name":"end","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestLogPage"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/{log_id}":{"get":{"tags":["observability"],"summary":"Get Log","operationId":"get_log_api_v1_logs__log_id__get","parameters":[{"name":"log_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Log Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestLogDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/{log_id}/outcome":{"post":{"tags":["observability"],"summary":"Record Log Outcome","description":"Record a routing outcome sample for eval-driven `auto` routing (RT-H07).","operationId":"record_log_outcome_api_v1_logs__log_id__outcome_post","parameters":[{"name":"log_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Log Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogOutcomeIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Record Log Outcome Api V1 Logs  Log Id  Outcome Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/metrics/dashboard":{"get":{"tags":["observability"],"summary":"Dashboard","operationId":"dashboard_api_v1_metrics_dashboard_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardMetrics"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/metrics/analytics":{"get":{"tags":["observability"],"summary":"Analytics","operationId":"analytics_api_v1_metrics_analytics_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"scope","in":"query","required":false,"schema":{"type":"string","pattern":"^(user|org|key)$","default":"user","title":"Scope"}},{"name":"api_key_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Api Key Id"}},{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyticsReport"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/metrics/usage":{"get":{"tags":["observability"],"summary":"Usage","description":"Flexible group-by usage rollup over a chosen scope (the query layer).\n\n``source=rollup`` reads the pre-aggregated daily table; ``live`` (default)\nscans RequestLog.","operationId":"usage_api_v1_metrics_usage_get","parameters":[{"name":"group_by","in":"query","required":false,"schema":{"type":"string","pattern":"^(model|provider|api_key|day)$","default":"model","title":"Group By"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"scope","in":"query","required":false,"schema":{"type":"string","pattern":"^(user|org|key)$","default":"user","title":"Scope"}},{"name":"source","in":"query","required":false,"schema":{"type":"string","pattern":"^(live|rollup)$","default":"live","title":"Source"}},{"name":"api_key_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Api Key Id"}},{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupedUsageReport"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/metrics/usage.csv":{"get":{"tags":["observability"],"summary":"Usage Csv","description":"CSV export of the grouped-usage report — same scope/filters as /usage.\n\nStreams a downloadable text/csv attachment so a customer can pull their own\nusage into a spreadsheet (Requesty-parity export). Authorization is identical\nto /usage, so a caller can only export data they're allowed to see.","operationId":"usage_csv_api_v1_metrics_usage_csv_get","parameters":[{"name":"group_by","in":"query","required":false,"schema":{"type":"string","pattern":"^(model|provider|api_key|day)$","default":"model","title":"Group By"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"scope","in":"query","required":false,"schema":{"type":"string","pattern":"^(user|org|key)$","default":"user","title":"Scope"}},{"name":"source","in":"query","required":false,"schema":{"type":"string","pattern":"^(live|rollup)$","default":"live","title":"Source"}},{"name":"api_key_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Api Key Id"}},{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/metrics/rollups/rebuild":{"post":{"tags":["observability"],"summary":"Rebuild Rollups","description":"Rebuild the trailing ``days`` of usage rollups from the raw log.\n\nService-to-service (guarded by X-Internal-Token), not user-scoped — it\nrecomputes platform-wide aggregates. Intended to be driven by a daily\nscheduled job; idempotent, so re-running is safe.","operationId":"rebuild_rollups_api_v1_metrics_rollups_rebuild_post","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":366,"minimum":1,"default":7,"title":"Days"}},{"name":"X-Internal-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Rebuild Rollups Api V1 Metrics Rollups Rebuild Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/catalog/models":{"get":{"tags":["catalog"],"summary":"List Gateway Models","description":"Searchable catalog of gateway model aliases.\n\nReturns all models the router can dispatch to. Useful for building\nmodel-picker UIs and for verifying that an alias is supported before\nsending a request. When catalog sync is enabled this reflects the live\nLiteLLM deployment (cached); otherwise it serves the curated catalog.\n\nEach row carries `avg_latency_ms`, the global average upstream latency\nmeasured from routed traffic (cache hits and failures excluded), or null\nwhen the model has no measured traffic yet. Pass `sort=latency` to rank by it.","operationId":"list_gateway_models_api_v1_catalog_models_get","parameters":[{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Case-insensitive search across id/name/provider/description","title":"Search"},"description":"Case-insensitive search across id/name/provider/description"},{"name":"capability","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by capability (chat/code/reasoning/vision/tools/long_context)","title":"Capability"},"description":"Filter by capability (chat/code/reasoning/vision/tools/long_context)"},{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by provider name (case-insensitive)","title":"Provider"},"description":"Filter by provider name (case-insensitive)"},{"name":"routable","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Only models dispatchable today (true) or browse-only (false)","title":"Routable"},"description":"Only models dispatchable today (true) or browse-only (false)"},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by ingestion source (curated/litellm/huggingface)","title":"Source"},"description":"Filter by ingestion source (curated/litellm/huggingface)"},{"name":"pricing","in":"query","required":false,"schema":{"anyOf":[{"enum":["free","paid"],"type":"string"},{"type":"null"}],"description":"Filter by list-price facet: free (0/unknown input+output) vs paid","title":"Pricing"},"description":"Filter by list-price facet: free (0/unknown input+output) vs paid"},{"name":"sort","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Ordering: 'latency' (fastest measured upstream model first; unmeasured models last)","title":"Sort"},"description":"Ordering: 'latency' (fastest measured upstream model first; unmeasured models last)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GatewayModelOut"},"title":"Response List Gateway Models Api V1 Catalog Models Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/catalog/refresh":{"post":{"tags":["catalog"],"summary":"Refresh Gateway Catalog","description":"Rebuild the merged discovery catalog now and recache it.\n\nManual counterpart to the background scheduler — use it after wiring a new\nmodel into LiteLLM, or via external cron in multi-worker deploys. Guarded by\nthe internal service token (falls open when none is configured).","operationId":"refresh_gateway_catalog_api_v1_catalog_refresh_post","parameters":[{"name":"force_sources","in":"query","required":false,"schema":{"type":"boolean","description":"Bypass per-source Redis TTLs and re-fetch the cost-map / HuggingFace feeds immediately (otherwise sources honour their cadence).","default":false,"title":"Force Sources"},"description":"Bypass per-source Redis TTLs and re-fetch the cost-map / HuggingFace feeds immediately (otherwise sources honour their cadence)."},{"name":"X-Internal-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/catalog/providers":{"get":{"tags":["catalog"],"summary":"List Provider Catalog","description":"Live service-provider catalog: real upstream vendors the router can\ndispatch to, grouped from the LiteLLM-synced model catalog.\n\nEvery provider is fronted by the gateway, so health is a single LiteLLM\nliveness probe applied across the board rather than a per-vendor poll.","operationId":"list_provider_catalog_api_v1_catalog_providers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ProviderCatalogOut"},"type":"array","title":"Response List Provider Catalog Api V1 Catalog Providers Get"}}}}}}},"/api/v1/catalog/open-weight":{"get":{"tags":["catalog"],"summary":"List Open Weight","operationId":"list_open_weight_api_v1_catalog_open_weight_get","parameters":[{"name":"tier","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"mobile | laptop | vps | gpu","title":"Tier"},"description":"mobile | laptop | vps | gpu"},{"name":"capability","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Capability"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OpenWeightModelOut"},"title":"Response List Open Weight Api V1 Catalog Open Weight Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/api-keys":{"get":{"tags":["api-keys"],"summary":"List Keys","operationId":"list_keys_api_v1_api_keys_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/APIKeyOut"},"title":"Response List Keys Api V1 Api Keys Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["api-keys"],"summary":"Create","operationId":"create_api_v1_api_keys_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKeyCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKeyCreateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/api-keys/bootstrap":{"post":{"tags":["api-keys"],"summary":"Bootstrap","description":"Idempotent first-key issuance for post-signup flows.\n\nReturns the plaintext of a freshly-minted \"Default\" key the first\ntime it's called for a user. On subsequent calls — when the user\nalready has at least one (non-revoked) key — returns 409 so the\nonboarding UI knows not to surface a plaintext it can't recover.","operationId":"bootstrap_api_v1_api_keys_bootstrap_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKeyCreateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/api-keys/{key_id}":{"patch":{"tags":["api-keys"],"summary":"Update","description":"Update mutable per-key controls (name, enabled, budget, alert threshold).","operationId":"update_api_v1_api_keys__key_id__patch","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Key Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKeyUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKeyOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["api-keys"],"summary":"Revoke","operationId":"revoke_api_v1_api_keys__key_id__delete","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Key Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/api-keys/budgets":{"get":{"tags":["api-keys"],"summary":"Budgets Batch","description":"Period-to-date budget usage for ALL of the caller's keys in one call.\n\nM10: the dashboard previously issued one `/{key_id}/budget` request per key\n(an N+1). This batches them into a single round-trip; spend is still summed\nper key from RequestLog, but the HTTP/auth overhead is paid once.","operationId":"budgets_batch_api_v1_api_keys_budgets_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/APIKeyBudgetStatus"},"title":"Response Budgets Batch Api V1 Api Keys Budgets Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/api-keys/{key_id}/budget":{"get":{"tags":["api-keys"],"summary":"Budget Status","description":"Month-to-date spend vs. this key's budget (for dashboards/alerts).","operationId":"budget_status_api_v1_api_keys__key_id__budget_get","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Key Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKeyBudgetStatus"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/organization/budget":{"get":{"tags":["organization"],"summary":"Get Budget","description":"Read the caller's org budget config + period-to-date spend.","operationId":"get_budget_api_v1_organization_budget_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgBudgetOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["organization"],"summary":"Put Budget","description":"Create or update the caller's org budget (upsert on clerk_org_id).","operationId":"put_budget_api_v1_organization_budget_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgBudgetUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgBudgetOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/platform/analytics":{"get":{"tags":["product-observability"],"summary":"Platform Analytics","description":"Platform-wide leaderboard + daily series across every tenant.","operationId":"platform_analytics_api_v1_platform_analytics_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyticsReport"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/platform/usage":{"get":{"tags":["product-observability"],"summary":"Platform Usage","description":"Platform-wide grouped usage (model/provider/api_key/day) across all tenants.","operationId":"platform_usage_api_v1_platform_usage_get","parameters":[{"name":"group_by","in":"query","required":false,"schema":{"type":"string","pattern":"^(model|provider|api_key|day)$","default":"model","title":"Group By"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupedUsageReport"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/credits":{"get":{"tags":["credits"],"summary":"Get Credits","operationId":"get_credits_api_v1_credits_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/credits/account":{"post":{"tags":["credits"],"summary":"Ensure Account","description":"Opt the user into the credit economy (idempotent). Called by onboarding.","operationId":"ensure_account_api_v1_credits_account_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/credits/usage":{"get":{"tags":["credits"],"summary":"Usage","description":"Per-model credit consumption — answers 'which model spent my credits'.\n\nSourced from RequestLog (cost_usd == credits at 1:1), grouped by model\nover the trailing `days` window and scoped to the current user.","operationId":"usage_api_v1_credits_usage_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":30,"title":"Days"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageReport"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/crypto/checkout":{"post":{"tags":["billing"],"summary":"Create Checkout","operationId":"create_checkout_api_v1_crypto_checkout_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-End-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-End-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CryptoCheckoutIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CryptoCheckoutOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/crypto/webhook":{"post":{"tags":["billing"],"summary":"Payram Webhook","operationId":"payram_webhook_api_v1_crypto_webhook_post","parameters":[{"name":"X-Internal-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayRamWebhookIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Payram Webhook Api V1 Crypto Webhook Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/stripe/events":{"post":{"tags":["billing"],"summary":"Record Event","operationId":"record_event_api_v1_stripe_events_post","parameters":[{"name":"X-Internal-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StripeEventIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Record Event Api V1 Stripe Events Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/orchestration/graph":{"get":{"tags":["orchestration"],"summary":"Get Graph","operationId":"get_graph_api_v1_orchestration_graph_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Graph Api V1 Orchestration Graph Get"}}}}}}},"/api/v1/orchestration/flowise":{"get":{"tags":["orchestration"],"summary":"Get Flowise","operationId":"get_flowise_api_v1_orchestration_flowise_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Flowise Api V1 Orchestration Flowise Get"}}}}}}},"/api/v1/governance/rules":{"get":{"tags":["governance"],"summary":"Get Rules","operationId":"get_rules_api_v1_governance_rules_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GovernanceRules"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/governance/spend-rules":{"post":{"tags":["governance"],"summary":"Create Spend Rule","description":"Persist a workspace or per-key spend cap.\n\nWorkspace scope updates ``users.monthly_spend_cap_usd`` (gateway-enforced).\nKey scope sets ``NeuroAPIKey.monthly_budget_usd`` on a key matched by name.","operationId":"create_spend_rule_api_v1_governance_spend_rules_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpendRuleCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpendRule"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/governance/audit":{"get":{"tags":["governance"],"summary":"Get Audit","description":"Audit/enforcement trail derived from RequestLog (REAL).\n\nErrors and fallback events are genuine governance-relevant signals: a\nfailed request, a spend-cap 402, or a fallback that fired all surface\nhere so an operator sees enforcement as it happens.","operationId":"get_audit_api_v1_governance_audit_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":20,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AuditEvent"},"title":"Response Get Audit Api V1 Governance Audit Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/audit":{"get":{"tags":["audit"],"summary":"List Audit Events","description":"Return the current user's audit events, newest first.","operationId":"list_audit_events_api_v1_audit_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-End-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-End-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AuditEventRead"},"title":"Response List Audit Events Api V1 Audit Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/plans":{"get":{"tags":["billing"],"summary":"Get Plans","operationId":"get_plans_api_v1_billing_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlansResponse"}}}}}}},"/api/v1/byok/providers":{"get":{"tags":["byok"],"summary":"List Providers","description":"Supported BYOK providers (for the credential UI's dropdown).","operationId":"list_providers_api_v1_byok_providers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ProviderInfo"},"type":"array","title":"Response List Providers Api V1 Byok Providers Get"}}}}}}},"/api/v1/byok/credentials":{"get":{"tags":["byok"],"summary":"List Credentials","operationId":"list_credentials_api_v1_byok_credentials_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-End-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-End-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CredentialRead"},"title":"Response List Credentials Api V1 Byok Credentials Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/byok/credentials/{provider}":{"put":{"tags":["byok"],"summary":"Upsert Credential","operationId":"upsert_credential_api_v1_byok_credentials__provider__put","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-End-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-End-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialUpsert"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["byok"],"summary":"Delete Credential","operationId":"delete_credential_api_v1_byok_credentials__provider__delete","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-End-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-End-User-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/byok/credentials/{provider}/role":{"patch":{"tags":["byok"],"summary":"Set Credential Role","operationId":"set_credential_role_api_v1_byok_credentials__provider__role_patch","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-End-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-End-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialRoleUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/overview":{"get":{"tags":["admin"],"summary":"Overview","operationId":"overview_api_v1_admin_overview_get","parameters":[{"name":"X-Internal-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OverviewResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/providers":{"get":{"tags":["admin"],"summary":"Providers","operationId":"providers_api_v1_admin_providers_get","parameters":[{"name":"X-Internal-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ProviderRollup"},"title":"Response Providers Api V1 Admin Providers Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/heartbeat":{"post":{"tags":["admin"],"summary":"Ingest Heartbeat","operationId":"ingest_heartbeat_api_v1_admin_heartbeat_post","parameters":[{"name":"X-Internal-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HeartbeatIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NodeHealth"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/infrastructure":{"get":{"tags":["admin"],"summary":"Infrastructure","operationId":"infrastructure_api_v1_admin_infrastructure_get","parameters":[{"name":"X-Internal-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InfrastructureResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/security":{"get":{"tags":["admin"],"summary":"Security","operationId":"security_api_v1_admin_security_get","parameters":[{"name":"X-Internal-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecurityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/support/chat":{"post":{"tags":["support"],"summary":"Chat","operationId":"chat_api_v1_support_chat_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportChatRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportChatResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/feedback":{"post":{"tags":["feedback"],"summary":"Create Feedback","operationId":"create_feedback_api_v1_feedback_post","parameters":[{"name":"User-Agent","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User-Agent"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["feedback"],"summary":"List Feedback","operationId":"list_feedback_api_v1_feedback_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FeedbackRead"},"title":"Response List Feedback Api V1 Feedback Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/media/models":{"get":{"tags":["media"],"summary":"Media Models","description":"Curated media catalogue. Upstream endpoint ids are never included.","operationId":"media_models_api_v1_media_models_get","parameters":[{"name":"operation","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Operation"}},{"name":"input_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Input Type"}},{"name":"output_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Type"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Media Models Api V1 Media Models Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/media/capabilities":{"get":{"tags":["media"],"summary":"Media Capabilities","operationId":"media_capabilities_api_v1_media_capabilities_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Media Capabilities Api V1 Media Capabilities Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/media/jobs":{"post":{"tags":["media"],"summary":"Create Media Job","description":"Submit a generation job. Returns 202 with a non-terminal job.\n\n202, not 200: the work has been accepted, not completed. A caller that\ntreats this as a finished result would read an empty asset list.","operationId":"create_media_job_api_v1_media_jobs_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Create Media Job Api V1 Media Jobs Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["media"],"summary":"List Media Jobs","operationId":"list_media_jobs_api_v1_media_jobs_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response List Media Jobs Api V1 Media Jobs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/media/jobs/{job_id}":{"get":{"tags":["media"],"summary":"Get Media Job","description":"Poll a job. Refreshes from the provider while non-terminal.\n\nBilling happens here rather than at submit: only a completed job has a real\ncost, and only the transition into `completed` debits — guarded so repeated\npolling cannot charge twice.","operationId":"get_media_job_api_v1_media_jobs__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Media Job Api V1 Media Jobs  Job Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["media"],"summary":"Cancel Media Job","description":"Best-effort cancellation. Terminal jobs are returned unchanged.","operationId":"cancel_media_job_api_v1_media_jobs__job_id__delete","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Cancel Media Job Api V1 Media Jobs  Job Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/media/assets/{asset_id}":{"get":{"tags":["media"],"summary":"Get Media Asset","description":"Authorize, then redirect to a freshly minted short-lived signed URL.\n\nThis exists so a signed URL is never PERSISTED. A stored one expires — so a\nrow would go stale while `stored: true` claims durability — and, worse, it\nis a bearer token for customer content that escapes the `tenant_isolation`\nRLS policy and keeps working after the API key that produced it is revoked.\nMinting per read keeps every fetch inside the tenant boundary, short-lived,\nand revocable here.\n\n302 rather than streaming the bytes: proxying a 40 MB video through Cloud\nRun bills CPU and memory for the whole transfer and holds a request slot on\na single-event-loop service, which is a self-inflicted DoS. The redirect is\ntiny; the bytes go browser ↔ GCS.\n\nThe redirect target is still a bearer URL — but one minted per read, valid\nfor minutes, and logged. That is strictly better than one frozen into a row.","operationId":"get_media_asset_api_v1_media_assets__asset_id__get","parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Asset Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/contact":{"post":{"tags":["contact"],"summary":"Create Contact","operationId":"create_contact_api_v1_contact_post","parameters":[{"name":"User-Agent","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User-Agent"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/testing/seed-usage":{"post":{"tags":["testing"],"summary":"Seed Usage","description":"Seed deterministic RequestLog rows for the CURRENT authenticated user.\n\nSeeding the caller (resolved exactly like the dashboards) avoids the\nemail-guessing trap — the Clerk login identifier need not equal the email\nclaim, and duplicate-email rows would be ambiguous.","operationId":"seed_usage_api_v1_testing_seed_usage_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SeedUsageRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SeedUsageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/me":{"get":{"tags":["users"],"summary":"Me","operationId":"me_api_v1_me_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["users"],"summary":"Update Me","operationId":"update_me_api_v1_me_patch","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/platform/users":{"get":{"tags":["users"],"summary":"List Platform Users","operationId":"list_platform_users_api_v1_platform_users_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformUsersResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/platform/users/{user_id}/role":{"patch":{"tags":["users"],"summary":"Assign Role","operationId":"assign_role_api_v1_platform_users__user_id__role_patch","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignRoleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformUserRow"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/chat/session":{"post":{"tags":["chat-session"],"summary":"Chat Session","operationId":"chat_session_api_v1_chat_session_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Chat Session Api V1 Chat Session Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/chat/completions":{"post":{"tags":["gateway"],"summary":"Chat Completions","operationId":"chat_completions_api_v1_chat_completions_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Chat Completions Api V1 Chat Completions Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/models":{"get":{"tags":["gateway"],"summary":"List Models","description":"OpenAI-compatible model listing.","operationId":"list_models_api_v1_models_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response List Models Api V1 Models Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/industries":{"get":{"tags":["gateway"],"summary":"List Industries","description":"Industries the gateway can route on. Non-OpenAI extension.","operationId":"list_industries_api_v1_industries_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response List Industries Api V1 Industries Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/router/preview":{"post":{"tags":["gateway"],"summary":"Preview Route","description":"Show how `auto` (or any directive) would route — WITHOUT making a call.\n\nThis is the transparency surface that sets Nyuro apart: developers (and the\ndashboard) can see the classified task, the chosen model, the human reason,\nand the full fallback chain before spending a single credit.\n\nBody: `{ \"model\": \"auto\", \"prompt\": \"...\", \"messages\": [...], \"metadata\": {\"industry\": \"...\"} }`\nEither `prompt` or `messages` may be supplied.","operationId":"preview_route_api_v1_router_preview_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Preview Route Api V1 Router Preview Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/embeddings":{"post":{"tags":["gateway"],"summary":"Create Embeddings","operationId":"create_embeddings_api_v1_embeddings_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Create Embeddings Api V1 Embeddings Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/collections/{collection}/documents/{source_id}":{"put":{"tags":["collections"],"summary":"Ingest Document","description":"Chunk, embed and store a document under `source_id`.","operationId":"ingest_document_api_v1_collections__collection__documents__source_id__put","parameters":[{"name":"collection","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9._\\-]+$","title":"Collection"}},{"name":"source_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":256,"title":"Source Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/collections/{collection}/search":{"post":{"tags":["collections"],"summary":"Search Collection","description":"Semantic search. The query is embedded with Qwen3's instruct prefix;\ndocuments were embedded bare. That asymmetry is what the model is trained\nfor, and getting it backwards degrades results with no error.","operationId":"search_collection_api_v1_collections__collection__search_post","parameters":[{"name":"collection","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9._\\-]+$","title":"Collection"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/collections/{collection}":{"get":{"tags":["collections"],"summary":"Collection Stats","description":"Chunk and document counts, per vector space.\n\nGrouped by model on purpose: two models in one collection means a\nmigration is in flight, and which rows are in which space is exactly what\nan operator needs to see.","operationId":"collection_stats_api_v1_collections__collection__get","parameters":[{"name":"collection","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9._\\-]+$","title":"Collection"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Collection Stats Api V1 Collections  Collection  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["collections"],"summary":"Delete Collection","description":"Delete a collection, or only one model's vectors within it.\n\nThe `model` filter is what makes a model migration reversible: embed into\nthe new space alongside the old, cut reads over, then delete only the old.","operationId":"delete_collection_api_v1_collections__collection__delete","parameters":[{"name":"collection","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9._\\-]+$","title":"Collection"}},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Delete Collection Api V1 Collections  Collection  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/chat/completions":{"post":{"tags":["gateway"],"summary":"Chat Completions","operationId":"chat_completions_v1_chat_completions_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Chat Completions V1 Chat Completions Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/models":{"get":{"tags":["gateway"],"summary":"List Models","description":"OpenAI-compatible model listing.","operationId":"list_models_v1_models_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response List Models V1 Models Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/industries":{"get":{"tags":["gateway"],"summary":"List Industries","description":"Industries the gateway can route on. Non-OpenAI extension.","operationId":"list_industries_v1_industries_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response List Industries V1 Industries Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/router/preview":{"post":{"tags":["gateway"],"summary":"Preview Route","description":"Show how `auto` (or any directive) would route — WITHOUT making a call.\n\nThis is the transparency surface that sets Nyuro apart: developers (and the\ndashboard) can see the classified task, the chosen model, the human reason,\nand the full fallback chain before spending a single credit.\n\nBody: `{ \"model\": \"auto\", \"prompt\": \"...\", \"messages\": [...], \"metadata\": {\"industry\": \"...\"} }`\nEither `prompt` or `messages` may be supplied.","operationId":"preview_route_v1_router_preview_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Preview Route V1 Router Preview Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/embeddings":{"post":{"tags":["gateway"],"summary":"Create Embeddings","operationId":"create_embeddings_v1_embeddings_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Create Embeddings V1 Embeddings Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"APIKeyBudgetStatus":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"monthly_budget_usd":{"type":"number","title":"Monthly Budget Usd"},"spent_usd":{"type":"number","title":"Spent Usd"},"remaining_usd":{"type":"number","title":"Remaining Usd"},"pct_used":{"type":"number","title":"Pct Used"},"budget_alert_threshold_pct":{"type":"integer","title":"Budget Alert Threshold Pct"},"budget_period":{"type":"string","title":"Budget Period"},"over_budget":{"type":"boolean","title":"Over Budget"}},"type":"object","required":["id","monthly_budget_usd","spent_usd","remaining_usd","pct_used","budget_alert_threshold_pct","budget_period","over_budget"],"title":"APIKeyBudgetStatus","description":"Period-to-date budget usage for one key."},"APIKeyCreateRequest":{"properties":{"name":{"type":"string","title":"Name"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"is_app_key":{"type":"boolean","title":"Is App Key","default":false},"app_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"App Name"},"monthly_budget_usd":{"type":"number","minimum":0.0,"title":"Monthly Budget Usd","default":0.0},"budget_alert_threshold_pct":{"type":"integer","maximum":100.0,"minimum":0.0,"title":"Budget Alert Threshold Pct","default":0},"budget_period":{"type":"string","enum":["none","daily","weekly","monthly"],"title":"Budget Period","default":"monthly"},"allowed_tools":{"items":{"type":"string"},"type":"array","title":"Allowed Tools","default":[]},"allowed_models":{"items":{"type":"string"},"type":"array","title":"Allowed Models","default":[]},"denied_models":{"items":{"type":"string"},"type":"array","title":"Denied Models","default":[]},"privacy_policy":{"type":"string","enum":["standard","redact","zero_retention"],"title":"Privacy Policy","default":"standard"}},"type":"object","required":["name"],"title":"APIKeyCreateRequest"},"APIKeyCreateResponse":{"properties":{"key":{"$ref":"#/components/schemas/APIKeyOut"},"plaintext":{"type":"string","title":"Plaintext"}},"type":"object","required":["key","plaintext"],"title":"APIKeyCreateResponse"},"APIKeyOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"key_prefix":{"type":"string","title":"Key Prefix"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"enabled":{"type":"boolean","title":"Enabled"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revoked At"},"is_app_key":{"type":"boolean","title":"Is App Key","default":false},"app_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"App Name"},"monthly_budget_usd":{"type":"number","title":"Monthly Budget Usd","default":0.0},"budget_alert_threshold_pct":{"type":"integer","title":"Budget Alert Threshold Pct","default":0},"budget_period":{"type":"string","title":"Budget Period","default":"monthly"},"allowed_tools":{"items":{"type":"string"},"type":"array","title":"Allowed Tools","default":[]},"allowed_models":{"items":{"type":"string"},"type":"array","title":"Allowed Models","default":[]},"denied_models":{"items":{"type":"string"},"type":"array","title":"Denied Models","default":[]},"privacy_policy":{"type":"string","title":"Privacy Policy","default":"standard"}},"type":"object","required":["id","name","key_prefix","scopes","enabled","last_used_at","created_at","revoked_at"],"title":"APIKeyOut"},"APIKeyUpdateRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"scopes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Scopes"},"monthly_budget_usd":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Monthly Budget Usd"},"budget_alert_threshold_pct":{"anyOf":[{"type":"integer","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Budget Alert Threshold Pct"},"budget_period":{"anyOf":[{"type":"string","enum":["none","daily","weekly","monthly"]},{"type":"null"}],"title":"Budget Period"},"allowed_tools":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Allowed Tools"},"allowed_models":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Allowed Models"},"denied_models":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Denied Models"},"privacy_policy":{"anyOf":[{"type":"string","enum":["standard","redact","zero_retention"]},{"type":"null"}],"title":"Privacy Policy"}},"type":"object","title":"APIKeyUpdateRequest","description":"Mutable per-key controls. All optional — only provided fields change."},"AnalyticsReport":{"properties":{"window_days":{"type":"integer","title":"Window Days"},"total_requests":{"type":"integer","title":"Total Requests"},"total_tokens":{"type":"integer","title":"Total Tokens"},"total_cost_usd":{"type":"number","title":"Total Cost Usd"},"avg_latency_ms":{"type":"number","title":"Avg Latency Ms"},"success_rate":{"type":"number","title":"Success Rate"},"fallback_rate":{"type":"number","title":"Fallback Rate"},"cached_requests":{"type":"integer","title":"Cached Requests","default":0},"cache_hit_rate":{"type":"number","title":"Cache Hit Rate","default":0.0},"models":{"items":{"$ref":"#/components/schemas/ModelRanking"},"type":"array","title":"Models"},"providers":{"items":{"$ref":"#/components/schemas/ProviderUsage"},"type":"array","title":"Providers"},"series":{"items":{"$ref":"#/components/schemas/DailyPoint"},"type":"array","title":"Series"}},"type":"object","required":["window_days","total_requests","total_tokens","total_cost_usd","avg_latency_ms","success_rate","fallback_rate"],"title":"AnalyticsReport"},"AssignRoleRequest":{"properties":{"role":{"type":"string","title":"Role"}},"type":"object","required":["role"],"title":"AssignRoleRequest"},"AuditEvent":{"properties":{"id":{"type":"string","title":"Id"},"actor":{"type":"string","title":"Actor"},"action":{"type":"string","title":"Action"},"target":{"type":"string","title":"Target"},"at":{"type":"string","format":"date-time","title":"At"}},"type":"object","required":["id","actor","action","target","at"],"title":"AuditEvent"},"AuditEventRead":{"properties":{"id":{"type":"string","title":"Id"},"user_id":{"type":"string","title":"User Id"},"actor_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor User Id"},"action":{"type":"string","title":"Action"},"resource_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resource Type"},"resource_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resource Id"},"ip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ip"},"metadata_json":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Metadata Json"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","user_id","actor_user_id","action","resource_type","resource_id","ip","metadata_json","created_at"],"title":"AuditEventRead"},"AuditRow":{"properties":{"id":{"type":"string","title":"Id"},"at":{"type":"string","title":"At"},"actor":{"type":"string","title":"Actor"},"action":{"type":"string","title":"Action"},"resource":{"type":"string","title":"Resource"}},"type":"object","required":["id","at","actor","action","resource"],"title":"AuditRow"},"ContactCreate":{"properties":{"name":{"type":"string","maxLength":200,"minLength":1,"title":"Name"},"email":{"type":"string","format":"email","title":"Email"},"company":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Company"},"message":{"type":"string","maxLength":4000,"minLength":1,"title":"Message"},"website":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Website"}},"type":"object","required":["name","email","message"],"title":"ContactCreate"},"ContactRead":{"properties":{"id":{"type":"string","title":"Id"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","created_at"],"title":"ContactRead"},"CredentialRead":{"properties":{"provider":{"type":"string","title":"Provider"},"label":{"type":"string","title":"Label"},"key_hint":{"type":"string","title":"Key Hint"},"base_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Base Url"},"enabled":{"type":"boolean","title":"Enabled"},"role":{"type":"string","title":"Role"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["provider","label","key_hint","base_url","enabled","role","created_at","updated_at"],"title":"CredentialRead"},"CredentialRoleUpdate":{"properties":{"role":{"type":"string","enum":["primary","fallback"],"title":"Role"}},"type":"object","required":["role"],"title":"CredentialRoleUpdate"},"CredentialUpsert":{"properties":{"api_key":{"type":"string","minLength":1,"title":"Api Key","description":"Plaintext provider API key (write-only)"},"base_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Base Url","description":"Optional base URL override"},"enabled":{"type":"boolean","title":"Enabled","default":true},"role":{"type":"string","enum":["primary","fallback"],"title":"Role","default":"primary"}},"type":"object","required":["api_key"],"title":"CredentialUpsert"},"CreditSummary":{"properties":{"has_account":{"type":"boolean","title":"Has Account"},"balance_credits":{"type":"number","title":"Balance Credits"},"lifetime_granted":{"type":"number","title":"Lifetime Granted"},"lifetime_spent":{"type":"number","title":"Lifetime Spent"},"stripe_customer_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stripe Customer Id"},"transactions":{"items":{"$ref":"#/components/schemas/TransactionRead"},"type":"array","title":"Transactions"}},"type":"object","required":["has_account","balance_credits","lifetime_granted","lifetime_spent","stripe_customer_id","transactions"],"title":"CreditSummary"},"CryptoCheckoutIn":{"properties":{"amount_usd":{"type":"number","exclusiveMinimum":0.0,"title":"Amount Usd"}},"type":"object","required":["amount_usd"],"title":"CryptoCheckoutIn"},"CryptoCheckoutOut":{"properties":{"reference_id":{"type":"string","title":"Reference Id"},"payment_url":{"type":"string","title":"Payment Url"}},"type":"object","required":["reference_id","payment_url"],"title":"CryptoCheckoutOut"},"DailyPoint":{"properties":{"date":{"type":"string","title":"Date"},"requests":{"type":"integer","title":"Requests"},"cost_usd":{"type":"number","title":"Cost Usd"},"tokens":{"type":"integer","title":"Tokens"}},"type":"object","required":["date","requests","cost_usd","tokens"],"title":"DailyPoint"},"DashboardMetrics":{"properties":{"total_agents":{"type":"integer","title":"Total Agents"},"total_requests":{"type":"integer","title":"Total Requests"},"total_cost_usd":{"type":"number","title":"Total Cost Usd"},"avg_latency_ms":{"type":"number","title":"Avg Latency Ms"},"success_rate":{"type":"number","title":"Success Rate"},"requests_last_24h":{"type":"integer","title":"Requests Last 24H"},"fallback_rate":{"type":"number","title":"Fallback Rate","default":0.0},"failed_requests":{"type":"integer","title":"Failed Requests","default":0},"tool_calls":{"type":"integer","title":"Tool Calls","default":0},"memory_writes":{"type":"integer","title":"Memory Writes","default":0},"providers":{"items":{"$ref":"#/components/schemas/ProviderUsage"},"type":"array","title":"Providers"},"models":{"items":{"$ref":"#/components/schemas/app__schemas__metric__ModelUsage"},"type":"array","title":"Models"},"tools":{"items":{"$ref":"#/components/schemas/ToolUsage"},"type":"array","title":"Tools"}},"type":"object","required":["total_agents","total_requests","total_cost_usd","avg_latency_ms","success_rate","requests_last_24h"],"title":"DashboardMetrics"},"FeedbackCreate":{"properties":{"body":{"type":"string","maxLength":4000,"minLength":1,"title":"Body"},"page_url":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Page Url"}},"type":"object","required":["body"],"title":"FeedbackCreate"},"FeedbackRead":{"properties":{"id":{"type":"string","title":"Id"},"body":{"type":"string","title":"Body"},"page_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Page Url"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","body","page_url","created_at"],"title":"FeedbackRead"},"GatewayModelOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"provider":{"type":"string","title":"Provider"},"description":{"type":"string","title":"Description"},"capabilities":{"items":{"type":"string"},"type":"array","title":"Capabilities"},"context_tokens":{"type":"integer","title":"Context Tokens"},"strengths":{"items":{"type":"string"},"type":"array","title":"Strengths"},"tier":{"type":"string","title":"Tier"},"input_cost_per_mtok":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Mtok"},"output_cost_per_mtok":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Mtok"},"inference_providers":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Inference Providers"},"source":{"type":"string","title":"Source","default":"curated"},"routable":{"type":"boolean","title":"Routable","default":false},"mode":{"type":"string","title":"Mode","default":"chat"},"avg_latency_ms":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Latency Ms"},"is_free":{"type":"boolean","title":"Is Free","default":false}},"type":"object","required":["id","name","provider","description","capabilities","context_tokens","strengths","tier","input_cost_per_mtok","output_cost_per_mtok"],"title":"GatewayModelOut"},"GovernanceKpis":{"properties":{"active_policies":{"type":"integer","title":"Active Policies"},"keys_under_policy":{"type":"integer","title":"Keys Under Policy"},"cap_utilization_pct":{"type":"integer","title":"Cap Utilization Pct"},"violations_24h":{"type":"integer","title":"Violations 24H"}},"type":"object","required":["active_policies","keys_under_policy","cap_utilization_pct","violations_24h"],"title":"GovernanceKpis"},"GovernanceRules":{"properties":{"spend_rules":{"items":{"$ref":"#/components/schemas/SpendRule"},"type":"array","title":"Spend Rules"},"model_policies":{"items":{"$ref":"#/components/schemas/ModelPolicy"},"type":"array","title":"Model Policies"},"privacy_rules":{"items":{"$ref":"#/components/schemas/PrivacyRule"},"type":"array","title":"Privacy Rules"},"rate_limits":{"items":{"$ref":"#/components/schemas/RateLimit"},"type":"array","title":"Rate Limits"},"kpis":{"$ref":"#/components/schemas/GovernanceKpis"}},"type":"object","required":["spend_rules","model_policies","privacy_rules","rate_limits","kpis"],"title":"GovernanceRules"},"GroupedUsageReport":{"properties":{"scope":{"type":"string","title":"Scope"},"group_by":{"type":"string","title":"Group By"},"window_days":{"type":"integer","title":"Window Days"},"total_requests":{"type":"integer","title":"Total Requests"},"total_cost_usd":{"type":"number","title":"Total Cost Usd"},"rows":{"items":{"$ref":"#/components/schemas/GroupedUsageRow"},"type":"array","title":"Rows"}},"type":"object","required":["scope","group_by","window_days","total_requests","total_cost_usd"],"title":"GroupedUsageReport"},"GroupedUsageRow":{"properties":{"key":{"type":"string","title":"Key"},"requests":{"type":"integer","title":"Requests"},"total_tokens":{"type":"integer","title":"Total Tokens"},"cost_usd":{"type":"number","title":"Cost Usd"},"avg_latency_ms":{"type":"number","title":"Avg Latency Ms"},"cached_requests":{"type":"integer","title":"Cached Requests","default":0},"cache_hit_rate":{"type":"number","title":"Cache Hit Rate","default":0.0}},"type":"object","required":["key","requests","total_tokens","cost_usd","avg_latency_ms"],"title":"GroupedUsageRow","description":"One bucket of the flexible group-by usage query (model/provider/key/day)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HeartbeatIn":{"properties":{"node_id":{"type":"string","maxLength":128,"minLength":1,"title":"Node Id"},"role":{"type":"string","title":"Role","default":"backend"},"cpu_pct":{"type":"number","title":"Cpu Pct","default":0.0},"mem_pct":{"type":"number","title":"Mem Pct","default":0.0},"gpu_util_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Gpu Util Pct"},"healthy":{"type":"boolean","title":"Healthy","default":true},"reported_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Reported At"}},"type":"object","required":["node_id"],"title":"HeartbeatIn"},"InfrastructureResponse":{"properties":{"overall":{"type":"string","title":"Overall"},"total_nodes":{"type":"integer","title":"Total Nodes"},"healthy":{"type":"integer","title":"Healthy"},"degraded":{"type":"integer","title":"Degraded"},"stale":{"type":"integer","title":"Stale"},"gpu_reporters":{"type":"integer","title":"Gpu Reporters"},"nodes":{"items":{"$ref":"#/components/schemas/NodeHealth"},"type":"array","title":"Nodes"}},"type":"object","required":["overall","total_nodes","healthy","degraded","stale","gpu_reporters","nodes"],"title":"InfrastructureResponse"},"IngestRequest":{"properties":{"text":{"type":"string","minLength":1,"title":"Text","description":"Plain text of the document."},"chunk_chars":{"anyOf":[{"type":"integer","maximum":8000.0,"minimum":100.0},{"type":"null"}],"title":"Chunk Chars"}},"type":"object","required":["text"],"title":"IngestRequest"},"IngestResponse":{"properties":{"source_id":{"type":"string","title":"Source Id"},"chunks_written":{"type":"integer","title":"Chunks Written"},"model":{"type":"string","title":"Model"},"dimensions":{"type":"integer","title":"Dimensions"}},"type":"object","required":["source_id","chunks_written","model","dimensions"],"title":"IngestResponse"},"LogOutcomeIn":{"properties":{"score":{"type":"integer","title":"Score","description":"+1 thumbs up, -1 thumbs down"}},"type":"object","required":["score"],"title":"LogOutcomeIn"},"MeResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"email":{"type":"string","title":"Email"},"name":{"type":"string","title":"Name"},"organization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization"},"platform_role":{"type":"string","title":"Platform Role"},"permissions":{"items":{"type":"string"},"type":"array","title":"Permissions"},"subscription_tier":{"type":"string","title":"Subscription Tier"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","email","name","organization","platform_role","permissions","subscription_tier","is_active","created_at"],"title":"MeResponse"},"ModelPolicy":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"allowed_models":{"items":{"type":"string"},"type":"array","title":"Allowed Models"},"blocked_models":{"items":{"type":"string"},"type":"array","title":"Blocked Models"},"allowed_providers":{"items":{"type":"string"},"type":"array","title":"Allowed Providers"},"blocked_providers":{"items":{"type":"string"},"type":"array","title":"Blocked Providers"},"applies_to_keys":{"type":"integer","title":"Applies To Keys"},"illustrative":{"type":"boolean","title":"Illustrative","default":true}},"type":"object","required":["id","name","allowed_models","blocked_models","allowed_providers","blocked_providers","applies_to_keys"],"title":"ModelPolicy"},"ModelProviderCreate":{"properties":{"name":{"type":"string","title":"Name"},"display_name":{"type":"string","title":"Display Name"},"kind":{"type":"string","title":"Kind","default":"cloud"},"base_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Base Url"},"models":{"items":{"type":"string"},"type":"array","title":"Models"},"cost_per_1k_input":{"type":"number","title":"Cost Per 1K Input","default":0.0},"cost_per_1k_output":{"type":"number","title":"Cost Per 1K Output","default":0.0},"enabled":{"type":"boolean","title":"Enabled","default":true}},"type":"object","required":["name","display_name"],"title":"ModelProviderCreate"},"ModelProviderRead":{"properties":{"name":{"type":"string","title":"Name"},"display_name":{"type":"string","title":"Display Name"},"kind":{"type":"string","title":"Kind","default":"cloud"},"base_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Base Url"},"models":{"items":{"type":"string"},"type":"array","title":"Models"},"cost_per_1k_input":{"type":"number","title":"Cost Per 1K Input","default":0.0},"cost_per_1k_output":{"type":"number","title":"Cost Per 1K Output","default":0.0},"enabled":{"type":"boolean","title":"Enabled","default":true},"id":{"type":"string","format":"uuid","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["name","display_name","id","created_at"],"title":"ModelProviderRead"},"ModelRanking":{"properties":{"model":{"type":"string","title":"Model"},"provider":{"type":"string","title":"Provider"},"requests":{"type":"integer","title":"Requests"},"input_tokens":{"type":"integer","title":"Input Tokens"},"output_tokens":{"type":"integer","title":"Output Tokens"},"total_tokens":{"type":"integer","title":"Total Tokens"},"cost_usd":{"type":"number","title":"Cost Usd"},"avg_latency_ms":{"type":"number","title":"Avg Latency Ms"},"p50_latency_ms":{"type":"number","title":"P50 Latency Ms","default":0.0},"p95_latency_ms":{"type":"number","title":"P95 Latency Ms","default":0.0},"p99_latency_ms":{"type":"number","title":"P99 Latency Ms","default":0.0},"success_rate":{"type":"number","title":"Success Rate"},"fallback_rate":{"type":"number","title":"Fallback Rate"},"cached_requests":{"type":"integer","title":"Cached Requests","default":0},"cache_hit_rate":{"type":"number","title":"Cache Hit Rate","default":0.0},"share":{"type":"number","title":"Share"}},"type":"object","required":["model","provider","requests","input_tokens","output_tokens","total_tokens","cost_usd","avg_latency_ms","success_rate","fallback_rate","share"],"title":"ModelRanking","description":"Per-model leaderboard row for the Analytics product screen."},"ModelRouteCreate":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"strategy":{"type":"string","title":"Strategy","default":"balanced"},"priority":{"type":"integer","title":"Priority","default":100},"conditions":{"additionalProperties":true,"type":"object","title":"Conditions"},"target_provider_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Target Provider Id"},"target_model":{"type":"string","title":"Target Model"},"fallback_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fallback Model"},"enabled":{"type":"boolean","title":"Enabled","default":true}},"type":"object","required":["name","target_model"],"title":"ModelRouteCreate"},"ModelRouteRead":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"strategy":{"type":"string","title":"Strategy","default":"balanced"},"priority":{"type":"integer","title":"Priority","default":100},"conditions":{"additionalProperties":true,"type":"object","title":"Conditions"},"target_provider_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Target Provider Id"},"target_model":{"type":"string","title":"Target Model"},"fallback_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fallback Model"},"enabled":{"type":"boolean","title":"Enabled","default":true},"id":{"type":"string","format":"uuid","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["name","target_model","id","created_at"],"title":"ModelRouteRead"},"ModelRouteUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"strategy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Strategy"},"priority":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Priority"},"conditions":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Conditions"},"target_provider_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Target Provider Id"},"target_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Model"},"fallback_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fallback Model"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"}},"type":"object","title":"ModelRouteUpdate","description":"Partial update — every field optional; only provided keys are applied."},"NodeHealth":{"properties":{"node_id":{"type":"string","title":"Node Id"},"role":{"type":"string","title":"Role"},"cpu_pct":{"type":"number","title":"Cpu Pct"},"mem_pct":{"type":"number","title":"Mem Pct"},"gpu_util_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Gpu Util Pct"},"state":{"type":"string","title":"State"},"healthy":{"type":"boolean","title":"Healthy"},"reported_at":{"type":"string","title":"Reported At"}},"type":"object","required":["node_id","role","cpu_pct","mem_pct","gpu_util_pct","state","healthy","reported_at"],"title":"NodeHealth"},"OpenWeightModelOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"publisher":{"type":"string","title":"Publisher"},"params_billion":{"type":"number","title":"Params Billion"},"context_tokens":{"type":"integer","title":"Context Tokens"},"license":{"type":"string","title":"License"},"capabilities":{"items":{"type":"string"},"type":"array","title":"Capabilities"},"tiers":{"items":{"type":"string"},"type":"array","title":"Tiers"},"ram_gb":{"additionalProperties":{"type":"number"},"type":"object","title":"Ram Gb"},"ollama_pull":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ollama Pull"},"mlx_repo":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mlx Repo"},"notes":{"type":"string","title":"Notes"},"why_pick":{"type":"string","title":"Why Pick"},"homepage":{"type":"string","title":"Homepage"}},"type":"object","required":["id","name","publisher","params_billion","context_tokens","license","capabilities","tiers","ram_gb","ollama_pull","mlx_repo","notes","why_pick","homepage"],"title":"OpenWeightModelOut"},"OrgBudgetOut":{"properties":{"clerk_org_id":{"type":"string","title":"Clerk Org Id"},"monthly_budget_usd":{"type":"number","title":"Monthly Budget Usd"},"budget_alert_threshold_pct":{"type":"integer","title":"Budget Alert Threshold Pct"},"budget_period":{"type":"string","title":"Budget Period"},"spent_usd":{"type":"number","title":"Spent Usd"},"remaining_usd":{"type":"number","title":"Remaining Usd"},"pct_used":{"type":"number","title":"Pct Used"},"over_budget":{"type":"boolean","title":"Over Budget"}},"type":"object","required":["clerk_org_id","monthly_budget_usd","budget_alert_threshold_pct","budget_period","spent_usd","remaining_usd","pct_used","over_budget"],"title":"OrgBudgetOut","description":"Org budget config + period-to-date usage for dashboards."},"OrgBudgetUpdateRequest":{"properties":{"monthly_budget_usd":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Monthly Budget Usd"},"budget_alert_threshold_pct":{"anyOf":[{"type":"integer","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Budget Alert Threshold Pct"},"budget_period":{"anyOf":[{"type":"string","enum":["none","daily","weekly","monthly"]},{"type":"null"}],"title":"Budget Period"}},"type":"object","title":"OrgBudgetUpdateRequest","description":"Mutable org-budget controls. All optional — only provided fields change."},"OverviewResponse":{"properties":{"total_users":{"type":"integer","title":"Total Users"},"active_users":{"type":"integer","title":"Active Users"},"active_window_days":{"type":"integer","title":"Active Window Days"},"mrr":{"type":"number","title":"Mrr"},"arr":{"type":"number","title":"Arr"},"plan_distribution":{"items":{"$ref":"#/components/schemas/PlanBucket"},"type":"array","title":"Plan Distribution"}},"type":"object","required":["total_users","active_users","active_window_days","mrr","arr","plan_distribution"],"title":"OverviewResponse"},"Passage":{"properties":{"content":{"type":"string","title":"Content"},"score":{"type":"number","title":"Score"},"source_id":{"type":"string","title":"Source Id"},"chunk_index":{"type":"integer","title":"Chunk Index"}},"type":"object","required":["content","score","source_id","chunk_index"],"title":"Passage"},"PayRamWebhookIn":{"properties":{"reference_id":{"type":"string","title":"Reference Id"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"amount_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Amount Usd"}},"type":"object","required":["reference_id"],"title":"PayRamWebhookIn","description":"Tolerant view of the PayRam settlement callback.\n\nThe exact schema isn't fully pinned, so we only rely on a reference_id, a\nsettled status/flag, and the settled USD amount — and treat everything\ndefensively."},"Plan":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"price":{"type":"string","title":"Price"},"cadence":{"type":"string","title":"Cadence"},"description":{"type":"string","title":"Description"},"features":{"items":{"type":"string"},"type":"array","title":"Features"},"stripe_price_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stripe Price Id"},"cta":{"type":"string","title":"Cta"},"highlight":{"type":"boolean","title":"Highlight"},"monthly_credits":{"type":"number","title":"Monthly Credits"}},"type":"object","required":["id","name","price","cadence","description","features","stripe_price_id","cta","highlight","monthly_credits"],"title":"Plan"},"PlanBucket":{"properties":{"plan":{"type":"string","title":"Plan"},"users":{"type":"integer","title":"Users"}},"type":"object","required":["plan","users"],"title":"PlanBucket"},"PlansResponse":{"properties":{"plans":{"items":{"$ref":"#/components/schemas/Plan"},"type":"array","title":"Plans"}},"type":"object","required":["plans"],"title":"PlansResponse"},"PlatformUserRow":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"email":{"type":"string","title":"Email"},"name":{"type":"string","title":"Name"},"platform_role":{"type":"string","title":"Platform Role"},"subscription_tier":{"type":"string","title":"Subscription Tier"},"is_active":{"type":"boolean","title":"Is Active"},"clerk_linked":{"type":"boolean","title":"Clerk Linked"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","email","name","platform_role","subscription_tier","is_active","clerk_linked","created_at"],"title":"PlatformUserRow"},"PlatformUsersResponse":{"properties":{"users":{"items":{"$ref":"#/components/schemas/PlatformUserRow"},"type":"array","title":"Users"},"total":{"type":"integer","title":"Total"},"assignable_roles":{"items":{"$ref":"#/components/schemas/RoleOption"},"type":"array","title":"Assignable Roles"}},"type":"object","required":["users","total","assignable_roles"],"title":"PlatformUsersResponse"},"PrivacyRule":{"properties":{"id":{"type":"string","title":"Id"},"label":{"type":"string","title":"Label"},"description":{"type":"string","title":"Description"},"enabled":{"type":"boolean","title":"Enabled"},"illustrative":{"type":"boolean","title":"Illustrative","default":true}},"type":"object","required":["id","label","description","enabled"],"title":"PrivacyRule"},"ProviderCatalogOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"display_name":{"type":"string","title":"Display Name"},"kind":{"type":"string","title":"Kind"},"base_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Base Url"},"models":{"items":{"type":"string"},"type":"array","title":"Models"},"cost_per_1k_input":{"type":"number","title":"Cost Per 1K Input"},"cost_per_1k_output":{"type":"number","title":"Cost Per 1K Output"},"enabled":{"type":"boolean","title":"Enabled"},"ok":{"type":"boolean","title":"Ok"},"latency_ms":{"type":"integer","title":"Latency Ms"}},"type":"object","required":["id","name","display_name","kind","base_url","models","cost_per_1k_input","cost_per_1k_output","enabled","ok","latency_ms"],"title":"ProviderCatalogOut","description":"User-facing service-provider card, aggregated from the live catalog."},"ProviderHealthRead":{"properties":{"name":{"type":"string","title":"Name"},"ok":{"type":"boolean","title":"Ok"},"detail":{"type":"string","title":"Detail","default":""},"latency_ms":{"type":"integer","title":"Latency Ms","default":0}},"type":"object","required":["name","ok"],"title":"ProviderHealthRead"},"ProviderInfo":{"properties":{"slug":{"type":"string","title":"Slug"},"label":{"type":"string","title":"Label"}},"type":"object","required":["slug","label"],"title":"ProviderInfo"},"ProviderRollup":{"properties":{"provider":{"type":"string","title":"Provider"},"model":{"type":"string","title":"Model"},"request_count":{"type":"integer","title":"Request Count"},"total_cost":{"type":"number","title":"Total Cost"},"avg_latency_ms":{"type":"number","title":"Avg Latency Ms"},"error_rate":{"type":"number","title":"Error Rate"}},"type":"object","required":["provider","model","request_count","total_cost","avg_latency_ms","error_rate"],"title":"ProviderRollup"},"ProviderStatus":{"properties":{"name":{"type":"string","title":"Name"},"kind":{"type":"string","title":"Kind"},"base_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Base Url"},"models":{"items":{"type":"string"},"type":"array","title":"Models"},"streaming":{"type":"boolean","title":"Streaming","default":true},"tool_calling":{"type":"boolean","title":"Tool Calling","default":false},"reasoning":{"type":"boolean","title":"Reasoning","default":false},"local":{"type":"boolean","title":"Local","default":false}},"type":"object","required":["name","kind"],"title":"ProviderStatus"},"ProviderUsage":{"properties":{"provider":{"type":"string","title":"Provider"},"requests":{"type":"integer","title":"Requests"},"cost_usd":{"type":"number","title":"Cost Usd"}},"type":"object","required":["provider","requests","cost_usd"],"title":"ProviderUsage"},"RateLimit":{"properties":{"id":{"type":"string","title":"Id"},"key_name":{"type":"string","title":"Key Name"},"req_per_min":{"type":"integer","title":"Req Per Min"},"tokens_per_min":{"type":"integer","title":"Tokens Per Min"}},"type":"object","required":["id","key_name","req_per_min","tokens_per_min"],"title":"RateLimit"},"RefreshResult":{"properties":{"refreshed":{"type":"boolean","title":"Refreshed"},"total":{"type":"integer","title":"Total"},"routable":{"type":"integer","title":"Routable"},"by_source":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Source"}},"type":"object","required":["refreshed","total","routable","by_source"],"title":"RefreshResult"},"RequestLogDetail":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"agent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Agent Id"},"provider":{"type":"string","title":"Provider"},"model":{"type":"string","title":"Model"},"status":{"type":"string","title":"Status"},"latency_ms":{"type":"integer","title":"Latency Ms"},"input_tokens":{"type":"integer","title":"Input Tokens"},"output_tokens":{"type":"integer","title":"Output Tokens"},"cost_usd":{"type":"number","title":"Cost Usd"},"fallback_used":{"type":"boolean","title":"Fallback Used","default":false},"cached":{"type":"boolean","title":"Cached","default":false},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"meta":{"additionalProperties":true,"type":"object","title":"Meta"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"prompt":{"type":"string","title":"Prompt","default":""},"response":{"type":"string","title":"Response","default":""},"content_captured":{"type":"boolean","title":"Content Captured","default":true}},"type":"object","required":["id","agent_id","provider","model","status","latency_ms","input_tokens","output_tokens","cost_usd","created_at"],"title":"RequestLogDetail","description":"Single-request drill-down. Includes captured prompt/response content.\n\nContent is only present when the tenant has request-content capture enabled\n(``settings.log_capture_content``); ``content_captured`` tells the UI whether\nthe empty strings mean \"no content\" vs \"capture disabled\". The row is always\nscoped to the caller, so returning their own prompt/response is safe."},"RequestLogPage":{"properties":{"rows":{"items":{"$ref":"#/components/schemas/RequestLogRead"},"type":"array","title":"Rows"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"}},"type":"object","required":["total","limit","offset"],"title":"RequestLogPage","description":"Paginated envelope for the request-logs viewer.\n\n``total`` is the count matching the active filters (not just this page), so\nthe UI can render \"showing N of M\" and page controls."},"RequestLogRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"agent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Agent Id"},"provider":{"type":"string","title":"Provider"},"model":{"type":"string","title":"Model"},"status":{"type":"string","title":"Status"},"latency_ms":{"type":"integer","title":"Latency Ms"},"input_tokens":{"type":"integer","title":"Input Tokens"},"output_tokens":{"type":"integer","title":"Output Tokens"},"cost_usd":{"type":"number","title":"Cost Usd"},"fallback_used":{"type":"boolean","title":"Fallback Used","default":false},"cached":{"type":"boolean","title":"Cached","default":false},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"meta":{"additionalProperties":true,"type":"object","title":"Meta"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","agent_id","provider","model","status","latency_ms","input_tokens","output_tokens","cost_usd","created_at"],"title":"RequestLogRead"},"RoleOption":{"properties":{"role":{"type":"string","title":"Role"},"permissions":{"items":{"type":"string"},"type":"array","title":"Permissions"}},"type":"object","required":["role","permissions"],"title":"RoleOption"},"SearchRequest":{"properties":{"query":{"type":"string","minLength":1,"title":"Query"},"limit":{"type":"integer","maximum":50.0,"minimum":1.0,"title":"Limit","default":5},"instruction":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instruction"}},"type":"object","required":["query"],"title":"SearchRequest"},"SearchResponse":{"properties":{"query":{"type":"string","title":"Query"},"model":{"type":"string","title":"Model"},"passages":{"items":{"$ref":"#/components/schemas/Passage"},"type":"array","title":"Passages"}},"type":"object","required":["query","model","passages"],"title":"SearchResponse"},"SecurityResponse":{"properties":{"api_keys_active":{"type":"integer","title":"Api Keys Active"},"api_keys_total":{"type":"integer","title":"Api Keys Total"},"audit_events_total":{"type":"integer","title":"Audit Events Total"},"failed_requests_24h":{"type":"integer","title":"Failed Requests 24H"},"rate_limited_24h":{"type":"integer","title":"Rate Limited 24H"},"window_hours":{"type":"integer","title":"Window Hours"},"audit_log":{"items":{"$ref":"#/components/schemas/AuditRow"},"type":"array","title":"Audit Log"}},"type":"object","required":["api_keys_active","api_keys_total","audit_events_total","failed_requests_24h","rate_limited_24h","window_hours","audit_log"],"title":"SecurityResponse"},"SeedUsageRequest":{"properties":{"reset":{"type":"boolean","title":"Reset","default":true},"count":{"type":"integer","title":"Count","default":60}},"type":"object","title":"SeedUsageRequest"},"SeedUsageResponse":{"properties":{"user_id":{"type":"string","title":"User Id"},"inserted":{"type":"integer","title":"Inserted"}},"type":"object","required":["user_id","inserted"],"title":"SeedUsageResponse"},"SpendRule":{"properties":{"id":{"type":"string","title":"Id"},"scope":{"type":"string","title":"Scope"},"name":{"type":"string","title":"Name"},"cap_usd":{"type":"number","title":"Cap Usd"},"spent_usd":{"type":"number","title":"Spent Usd"},"period":{"type":"string","title":"Period","default":"monthly"},"status":{"type":"string","title":"Status"}},"type":"object","required":["id","scope","name","cap_usd","spent_usd","status"],"title":"SpendRule"},"SpendRuleCreateRequest":{"properties":{"scope":{"type":"string","enum":["workspace","key"],"title":"Scope"},"name":{"type":"string","title":"Name"},"cap_usd":{"type":"number","title":"Cap Usd"}},"type":"object","required":["scope","name","cap_usd"],"title":"SpendRuleCreateRequest"},"StripeEventIn":{"properties":{"event_id":{"type":"string","title":"Event Id"},"event_type":{"type":"string","title":"Event Type"},"livemode":{"type":"boolean","title":"Livemode","default":false},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"clerk_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk User Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"stripe_customer_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stripe Customer Id"},"kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kind"},"amount_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Amount Usd"},"plan":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan"}},"type":"object","required":["event_id","event_type"],"title":"StripeEventIn"},"SupportChatRequest":{"properties":{"question":{"type":"string","title":"Question"},"history":{"items":{"$ref":"#/components/schemas/SupportMessage"},"type":"array","title":"History"}},"type":"object","required":["question"],"title":"SupportChatRequest"},"SupportChatResponse":{"properties":{"answer":{"type":"string","title":"Answer"},"sources":{"items":{"$ref":"#/components/schemas/SupportSource"},"type":"array","title":"Sources"},"model":{"type":"string","title":"Model"},"grounded":{"type":"boolean","title":"Grounded"}},"type":"object","required":["answer","sources","model","grounded"],"title":"SupportChatResponse"},"SupportMessage":{"properties":{"role":{"type":"string","title":"Role"},"content":{"type":"string","title":"Content"}},"type":"object","required":["role","content"],"title":"SupportMessage"},"SupportSource":{"properties":{"title":{"type":"string","title":"Title"},"snippet":{"type":"string","title":"Snippet"}},"type":"object","required":["title","snippet"],"title":"SupportSource"},"ToolUsage":{"properties":{"tool_name":{"type":"string","title":"Tool Name"},"calls":{"type":"integer","title":"Calls"}},"type":"object","required":["tool_name","calls"],"title":"ToolUsage"},"TransactionRead":{"properties":{"id":{"type":"string","title":"Id"},"kind":{"type":"string","title":"Kind"},"credits":{"type":"number","title":"Credits"},"usd":{"type":"number","title":"Usd"},"balance_after":{"type":"number","title":"Balance After"},"description":{"type":"string","title":"Description"},"stripe_event_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stripe Event Id"},"request_log_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Log Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","kind","credits","usd","balance_after","description","stripe_event_id","request_log_id","created_at"],"title":"TransactionRead"},"UpdateMeRequest":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"}},"type":"object","required":["name"],"title":"UpdateMeRequest"},"UsageReport":{"properties":{"window_days":{"type":"integer","title":"Window Days"},"total_credits_spent":{"type":"number","title":"Total Credits Spent"},"total_requests":{"type":"integer","title":"Total Requests"},"by_model":{"items":{"$ref":"#/components/schemas/app__api__v1__credits__ModelUsage"},"type":"array","title":"By Model"}},"type":"object","required":["window_days","total_credits_spent","total_requests","by_model"],"title":"UsageReport"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"app__api__v1__credits__ModelUsage":{"properties":{"model":{"type":"string","title":"Model"},"requests":{"type":"integer","title":"Requests"},"credits_spent":{"type":"number","title":"Credits Spent"},"input_tokens":{"type":"integer","title":"Input Tokens"},"output_tokens":{"type":"integer","title":"Output Tokens"}},"type":"object","required":["model","requests","credits_spent","input_tokens","output_tokens"],"title":"ModelUsage"},"app__schemas__metric__ModelUsage":{"properties":{"model":{"type":"string","title":"Model"},"requests":{"type":"integer","title":"Requests"}},"type":"object","required":["model","requests"],"title":"ModelUsage"}}}}