Knownwell API

Read-only REST API for accessing Knownwell client data and Knownwell scores. Resource-oriented URLs, JSON responses, and API key authentication via the X-API-Key header. Endpoints cover clients (list, search, detail, history, priorities, notes, key people, CSV export, risk-level and trending filters), portfolio health and statistics, portfolios, streams, and topics, plus API key management. All data endpoints are GET only; no write, update, or delete operations are permitted with an API key.

OpenAPI Specification

knownwell-ci-openapi-original.json Raw ↑
{"openapi":"3.1.0","info":{"title":"Knownwell API","description":"API for accessing Knownwell client data and Knownwell scores","version":"v1"},"paths":{"/v1/clients":{"get":{"tags":["clients"],"summary":"List Clients","operationId":"list_clients_v1_clients_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"include_archived","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Archived"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/clients/portfolio-health":{"get":{"tags":["clients"],"summary":"Get Portfolio Health","operationId":"get_portfolio_health_v1_clients_portfolio_health_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"include_archived","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Archived"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortfolioHealthResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/clients/trending":{"get":{"tags":["clients"],"summary":"Get Trending Clients","operationId":"get_trending_clients_v1_clients_trending_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"direction","in":"query","required":false,"schema":{"$ref":"#/components/schemas/TrendDirection","default":"declining"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"include_archived","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Archived"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/clients/search":{"get":{"tags":["clients"],"summary":"Search Clients","operationId":"search_clients_v1_clients_search_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Query"}},{"name":"fields","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"default":["name","industry","accountOwner"],"title":"Fields"}},{"name":"include_archived","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Archived"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/clients/statistics/overview":{"get":{"tags":["clients"],"summary":"Get Statistics","operationId":"get_statistics_v1_clients_statistics_overview_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"include_archived","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Archived"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/clients/export/csv":{"get":{"tags":["clients"],"summary":"Export Clients Csv","operationId":"export_clients_csv_v1_clients_export_csv_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"include_archived","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Archived"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/clients/by-risk/{risk_level}":{"get":{"tags":["clients"],"summary":"Get Clients By Risk","operationId":"get_clients_by_risk_v1_clients_by_risk__risk_level__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"risk_level","in":"path","required":true,"schema":{"$ref":"#/components/schemas/RiskLevel"}},{"name":"include_archived","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Archived"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/clients/{client_id}":{"get":{"tags":["clients"],"summary":"Get Client","operationId":"get_client_v1_clients__client_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"string","title":"Client Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/clients/{client_id}/history":{"get":{"tags":["clients"],"summary":"Get Client History","operationId":"get_client_history_v1_clients__client_id__history_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"string","title":"Client Id"}},{"name":"months","in":"query","required":false,"schema":{"type":"integer","maximum":24,"minimum":1,"default":12,"title":"Months"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/clients/{client_id}/priorities":{"get":{"tags":["clients"],"summary":"Get Client Priorities","operationId":"get_client_priorities_v1_clients__client_id__priorities_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"string","title":"Client Id"}},{"name":"status_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Filter"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/clients/{client_id}/notes":{"get":{"tags":["clients"],"summary":"Get Client Notes","operationId":"get_client_notes_v1_clients__client_id__notes_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"string","title":"Client Id"}},{"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"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/clients/{client_id}/key-people":{"get":{"tags":["clients"],"summary":"Get Client Key People","operationId":"get_client_key_people_v1_clients__client_id__key_people_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"string","title":"Client Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/clients/{client_id}/streams":{"get":{"tags":["clients"],"summary":"List Client Streams","operationId":"list_client_streams_v1_clients__client_id__streams_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"string","title":"Client Id"}},{"name":"include_inactive","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Inactive"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StreamListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/clients/{client_id}/streams/{stream_id}":{"get":{"tags":["clients"],"summary":"Get Stream","operationId":"get_stream_v1_clients__client_id__streams__stream_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"string","title":"Client Id"}},{"name":"stream_id","in":"path","required":true,"schema":{"type":"string","title":"Stream Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StreamDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/portfolios":{"get":{"tags":["portfolios"],"summary":"List Portfolios","operationId":"list_portfolios_v1_portfolios_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"include_system","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include System"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortfolioListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/portfolios/{portfolio_id}":{"get":{"tags":["portfolios"],"summary":"Get Portfolio","operationId":"get_portfolio_v1_portfolios__portfolio_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"portfolio_id","in":"path","required":true,"schema":{"type":"string","title":"Portfolio Id"}},{"name":"include_clients","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Clients"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortfolioDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/api-keys":{"post":{"tags":["api-keys"],"summary":"Create Api Key","description":"Create a new API key.","operationId":"create_api_key_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/APIKeyCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["api-keys"],"summary":"List Api Keys","description":"List all API keys.","operationId":"list_api_keys_v1_api_keys_get","parameters":[{"name":"customer_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Id"}},{"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/APIKeyResponse"},"title":"Response List Api Keys V1 Api Keys Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/api-keys/{key_id}":{"delete":{"tags":["api-keys"],"summary":"Revoke Api Key","description":"Revoke an API key.","operationId":"revoke_api_key_v1_api_keys__key_id__delete","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","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"}}}}}}},"/v1/topics":{"get":{"tags":["topics"],"summary":"List Topics","operationId":"list_topics_v1_topics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/streams":{"get":{"tags":["streams"],"summary":"List All Streams","operationId":"list_all_streams_v1_streams_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"include_inactive","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Inactive"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AllStreamsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health":{"get":{"tags":["health"],"summary":"Health Check","description":"Health check endpoint.","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/":{"get":{"tags":["root"],"summary":"Root","description":"Root endpoint - redirects to documentation","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/docs":{"get":{"tags":["documentation"],"summary":"Documentation","description":"Serve custom API documentation.","operationId":"documentation_docs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/status":{"get":{"tags":["status"],"summary":"Status Page","description":"Redirect to external status page.","operationId":"status_page_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"APIKeyCreate":{"properties":{"customer_id":{"type":"string","title":"Customer Id","description":"Customer ID the key is scoped to"},"name":{"type":"string","title":"Name","description":"Friendly name for the API key"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Optional description"},"scope":{"$ref":"#/components/schemas/APIKeyScope","description":"Access scope","default":"read_only"},"expires_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires Days","description":"Number of days until expiration (None = no expiration)"}},"type":"object","required":["customer_id","name"],"title":"APIKeyCreate","description":"Request model for creating an API key."},"APIKeyResponse":{"properties":{"id":{"type":"string","title":"Id"},"customer_id":{"type":"string","title":"Customer Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"scope":{"type":"string","title":"Scope"},"status":{"type":"string","title":"Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"},"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},"type":"object","required":["id","customer_id","name","description","scope","status","created_at","expires_at","last_used_at"],"title":"APIKeyResponse","description":"Response model for API key."},"APIKeyScope":{"type":"string","enum":["read_only"],"title":"APIKeyScope","description":"API key access scope - ALL KEYS ARE READ-ONLY"},"AllStreamsListResponse":{"properties":{"streams":{"items":{"$ref":"#/components/schemas/StreamResponse"},"type":"array","title":"Streams"},"total":{"type":"integer","title":"Total"},"customerId":{"type":"string","title":"Customerid"}},"type":"object","required":["streams","total","customerId"],"title":"AllStreamsListResponse","description":"Response model for listing all streams across all clients."},"ClientDetailResponse":{"properties":{"id":{"type":"string","title":"Id"},"customerId":{"type":"string","title":"Customerid"},"name":{"type":"string","title":"Name"},"score":{"type":"integer","title":"Score"},"scoreSource":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scoresource","description":"Score data source: chr1 or chr2"},"scoreChanges":{"anyOf":[{"$ref":"#/components/schemas/ScoreChanges"},{"type":"null"}],"description":"Score changes over time"},"lastContactDate":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Lastcontactdate"},"lastUpdatedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Lastupdatedat"},"hasInsufficientData":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Hasinsufficientdata"},"metadata":{"anyOf":[{"$ref":"#/components/schemas/ClientMetadata"},{"type":"null"}]},"extraColumns":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Extracolumns","description":"Custom column values"},"historicalData":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Historicaldata"},"archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Archived"},"spotlightSummary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Spotlightsummary","description":"AI-generated markdown summary of client status for the current week"},"topics":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Topics","description":"Topic and category scores organized by category"}},"type":"object","required":["id","customerId","name","score"],"title":"ClientDetailResponse","description":"Detailed client response with additional data."},"ClientListResponse":{"properties":{"clients":{"items":{"$ref":"#/components/schemas/ClientResponse"},"type":"array","title":"Clients"},"total":{"type":"integer","title":"Total"},"customerId":{"type":"string","title":"Customerid"}},"type":"object","required":["clients","total","customerId"],"title":"ClientListResponse","description":"Response model for list of clients."},"ClientMetadata":{"properties":{"accountOwner":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Accountowner"},"annualRevenue":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Annualrevenue"},"industry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location"},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Active"},"accountStatus":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Accountstatus"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"},"clientType":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clienttype"},"revenueTTM":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Revenuettm"},"revenueF12M":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Revenuef12M"}},"type":"object","title":"ClientMetadata","description":"Client metadata."},"ClientResponse":{"properties":{"id":{"type":"string","title":"Id"},"customerId":{"type":"string","title":"Customerid"},"name":{"type":"string","title":"Name"},"score":{"type":"integer","title":"Score"},"scoreSource":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scoresource","description":"Score data source: chr1 or chr2"},"scoreChanges":{"anyOf":[{"$ref":"#/components/schemas/ScoreChanges"},{"type":"null"}],"description":"Score changes over time"},"lastContactDate":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Lastcontactdate"},"lastUpdatedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Lastupdatedat"},"hasInsufficientData":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Hasinsufficientdata"},"metadata":{"anyOf":[{"$ref":"#/components/schemas/ClientMetadata"},{"type":"null"}]},"extraColumns":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Extracolumns","description":"Custom column values"},"historicalData":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Historicaldata"},"archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Archived"}},"type":"object","required":["id","customerId","name","score"],"title":"ClientResponse","description":"Response model for client data."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"PortfolioDetailResponse":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"customerId":{"type":"string","title":"Customerid"},"clientCount":{"type":"integer","title":"Clientcount","description":"Number of clients in portfolio"},"userIds":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Userids","description":"User IDs with access"},"isSystem":{"type":"boolean","title":"Issystem","description":"Whether this is a system portfolio","default":false},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Createdat"},"updatedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updatedat"},"clients":{"items":{"$ref":"#/components/schemas/ClientResponse"},"type":"array","title":"Clients"},"users":{"anyOf":[{"items":{"$ref":"#/components/schemas/PortfolioUser"},"type":"array"},{"type":"null"}],"title":"Users"},"health":{"anyOf":[{"$ref":"#/components/schemas/PortfolioHealthResponse"},{"type":"null"}]}},"type":"object","required":["id","name","customerId","clientCount","clients"],"title":"PortfolioDetailResponse","description":"Detailed portfolio response with clients and health metrics."},"PortfolioHealthResponse":{"properties":{"score":{"type":"integer","title":"Score"},"breakdown":{"additionalProperties":{"type":"integer"},"type":"object","title":"Breakdown"},"distribution":{"additionalProperties":{"type":"integer"},"type":"object","title":"Distribution"},"customerId":{"type":"string","title":"Customerid"},"chr2CutoverDate":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chr2Cutoverdate","description":"CHR 2.0 cutover date if enabled"}},"type":"object","required":["score","breakdown","distribution","customerId"],"title":"PortfolioHealthResponse","description":"Portfolio health metrics."},"PortfolioListResponse":{"properties":{"portfolios":{"items":{"$ref":"#/components/schemas/PortfolioResponse"},"type":"array","title":"Portfolios"},"total":{"type":"integer","title":"Total"},"customerId":{"type":"string","title":"Customerid"}},"type":"object","required":["portfolios","total","customerId"],"title":"PortfolioListResponse","description":"Response model for list of portfolios."},"PortfolioResponse":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"customerId":{"type":"string","title":"Customerid"},"clientCount":{"type":"integer","title":"Clientcount","description":"Number of clients in portfolio"},"userIds":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Userids","description":"User IDs with access"},"isSystem":{"type":"boolean","title":"Issystem","description":"Whether this is a system portfolio","default":false},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Createdat"},"updatedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updatedat"}},"type":"object","required":["id","name","customerId","clientCount"],"title":"PortfolioResponse","description":"Response model for portfolio list."},"PortfolioUser":{"properties":{"id":{"type":"string","title":"Id"},"displayName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Displayname"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"}},"type":"object","required":["id"],"title":"PortfolioUser","description":"User information for portfolio access."},"RiskLevel":{"type":"string","enum":["high_risk","medium_risk","low_risk","on_track"],"title":"RiskLevel"},"ScoreChange":{"properties":{"change":{"type":"number","title":"Change","description":"Absolute change in score"},"percentage":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Percentage","description":"Percentage change"},"previousScore":{"type":"number","title":"Previousscore","description":"Score at start of period"}},"type":"object","required":["change","previousScore"],"title":"ScoreChange","description":"Score change over a time period."},"ScoreChanges":{"properties":{"7day":{"anyOf":[{"$ref":"#/components/schemas/ScoreChange"},{"type":"null"}],"description":"7-day change"},"30day":{"anyOf":[{"$ref":"#/components/schemas/ScoreChange"},{"type":"null"}],"description":"30-day change"}},"type":"object","title":"ScoreChanges","description":"Score changes over different time periods."},"StreamDetailResponse":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"customerId":{"type":"string","title":"Customerid"},"parentClientId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parentclientid"},"parentClientName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parentclientname"},"score":{"type":"number","title":"Score"},"streamState":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Streamstate","description":"Stream status: pending, active, or inactive"},"goals":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Goals","description":"Stream goals/objectives"},"hasInsufficientData":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Hasinsufficientdata"},"historicalData":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Historicaldata"},"scoreChanges":{"anyOf":[{"$ref":"#/components/schemas/ScoreChanges"},{"type":"null"}],"description":"Score changes over time"},"spotlight":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Spotlight","description":"Executive summary from Cortex stream insights"},"insights":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Insights","description":"Weekly insights"},"contextualClues":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Contextualclues","description":"Active fires, budget issues, growth opportunities, etc."},"growthRecommendations":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Growthrecommendations","description":"Growth strategy recommendations"}},"type":"object","required":["id","name","customerId","score"],"title":"StreamDetailResponse","description":"Detailed stream response with insights from Cortex analytics."},"StreamListResponse":{"properties":{"streams":{"items":{"$ref":"#/components/schemas/StreamResponse"},"type":"array","title":"Streams"},"total":{"type":"integer","title":"Total"},"parentClientId":{"type":"string","title":"Parentclientid"},"customerId":{"type":"string","title":"Customerid"}},"type":"object","required":["streams","total","parentClientId","customerId"],"title":"StreamListResponse","description":"Response model for list of streams."},"StreamResponse":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"customerId":{"type":"string","title":"Customerid"},"parentClientId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parentclientid"},"parentClientName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parentclientname"},"score":{"type":"number","title":"Score"},"streamState":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Streamstate","description":"Stream status: pending, active, or inactive"},"goals":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Goals","description":"Stream goals/objectives"},"hasInsufficientData":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Hasinsufficientdata"},"historicalData":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Historicaldata"},"scoreChanges":{"anyOf":[{"$ref":"#/components/schemas/ScoreChanges"},{"type":"null"}],"description":"Score changes over time"}},"type":"object","required":["id","name","customerId","score"],"title":"StreamResponse","description":"Response model for a stream (sub-project within a client)"},"TrendDirection":{"type":"string","enum":["improving","declining","stable"],"title":"TrendDirection"},"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"}},"securitySchemes":{"APIKeyHeader":{"type":"apiKey","in":"header","name":"X-API-Key"}}}}