{"openapi":"3.1.0","info":{"title":"Kolega Comply Public API","description":"Public REST API for Kolega Comply, authenticated via organization API keys.","version":"v1"},"paths":{"/api/v1/applications":{"get":{"tags":["public-api","public-api"],"summary":"List Applications","description":"List applications for the calling organization.","operationId":"list_applications_api_v1_applications_get","parameters":[{"name":"include_archived","in":"query","required":false,"schema":{"type":"boolean","description":"Include archived applications","default":false,"title":"Include Archived"},"description":"Include archived applications"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Skip"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPaginatedResponse_PublicApplicationResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/applications/{application_id}":{"get":{"tags":["public-api","public-api"],"summary":"Get Application","description":"Get a single application by id.","operationId":"get_application_api_v1_applications__application_id__get","parameters":[{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApplicationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/applications/{application_id}/scans":{"post":{"tags":["public-api","public-api"],"summary":"Create Scan","description":"Trigger a security scan across all repositories in the application.","operationId":"create_scan_api_v1_applications__application_id__scans_post","parameters":[{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicScanCreateRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicScanBatchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["public-api","public-api"],"summary":"List Scans","description":"List scan batches for the application.","operationId":"list_scans_api_v1_applications__application_id__scans_get","parameters":[{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}},{"name":"scan_type","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ScanType"},{"type":"null"}],"description":"Filter by scan type","title":"Scan Type"},"description":"Filter by scan type"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by status","title":"Status"},"description":"Filter by status"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":20,"title":"Limit"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Skip"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPaginatedResponse_PublicScanBatchResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/applications/{application_id}/scans/{scan_id}":{"get":{"tags":["public-api","public-api"],"summary":"Get Scan","description":"Get the scan batch you created. ``scan_id`` is the batch id.","operationId":"get_scan_api_v1_applications__application_id__scans__scan_id__get","parameters":[{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}},{"name":"scan_id","in":"path","required":true,"schema":{"type":"string","title":"Scan Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicScanBatchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/applications/{application_id}/scans/{scan_id}/progress":{"get":{"tags":["public-api","public-api"],"summary":"Get Scan Progress","description":"Fine-grained progress for a scan batch.\n\nReturns the batch's aggregate counters plus a per-repository breakdown\n(including placeholder entries for repos that haven't been materialized\nas scans yet when the batch is still QUEUED/CREATING_SCANS). A CLI can\npoll this and render a progress bar from ``percent_complete``.","operationId":"get_scan_progress_api_v1_applications__application_id__scans__scan_id__progress_get","parameters":[{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}},{"name":"scan_id","in":"path","required":true,"schema":{"type":"string","title":"Scan Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicScanProgressResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/applications/{application_id}/scans/{scan_id}/results":{"get":{"tags":["public-api","public-api"],"summary":"Get Scan Results","description":"Aggregate findings from every repository in the batch.\n\n``scan_id`` is the batch id from ``POST /scans``. Returns every finding\nattributed to this batch across all repositories. For per-repository\nslicing, use ``/progress`` to see the breakdown and then filter\nfindings by ``scan_batch_id`` if needed.","operationId":"get_scan_results_api_v1_applications__application_id__scans__scan_id__results_get","parameters":[{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}},{"name":"scan_id","in":"path","required":true,"schema":{"type":"string","title":"Scan Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicScanResultsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/applications/{application_id}/findings":{"get":{"tags":["public-api","public-api"],"summary":"List Findings","description":"List findings for the application.","operationId":"list_findings_api_v1_applications__application_id__findings_get","parameters":[{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}},{"name":"scan_batch_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by scan batch id","title":"Scan Batch Id"},"description":"Filter by scan batch id"},{"name":"severity","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by severity","title":"Severity"},"description":"Filter by severity"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by status","title":"Status"},"description":"Filter by status"},{"name":"scan_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by scan type","title":"Scan Type"},"description":"Filter by scan type"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Skip"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPaginatedResponse_PublicFindingResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/applications/{application_id}/findings/{finding_id}":{"get":{"tags":["public-api","public-api"],"summary":"Get Finding","description":"Get a single finding by id.","operationId":"get_finding_api_v1_applications__application_id__findings__finding_id__get","parameters":[{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}},{"name":"finding_id","in":"path","required":true,"schema":{"type":"string","title":"Finding Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicFindingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["public-api","public-api"],"summary":"Update Finding Status","description":"Update the status of a finding (open / resolved / ignored / etc).","operationId":"update_finding_status_api_v1_applications__application_id__findings__finding_id__patch","parameters":[{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}},{"name":"finding_id","in":"path","required":true,"schema":{"type":"string","title":"Finding Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicFindingStatusUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicFindingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/applications/{application_id}/fixes":{"post":{"tags":["public-api","public-api"],"summary":"Create Fix","description":"Trigger an autofix run for one or more findings in this application.","operationId":"create_fix_api_v1_applications__application_id__fixes_post","parameters":[{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicFixCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicFixResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["public-api","public-api"],"summary":"List Fixes","description":"List fixes for the application.","operationId":"list_fixes_api_v1_applications__application_id__fixes_get","parameters":[{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}},{"name":"finding_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by finding id","title":"Finding Id"},"description":"Filter by finding id"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Skip"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPaginatedResponse_PublicFixResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/applications/{application_id}/fixes/{fix_id}":{"get":{"tags":["public-api","public-api"],"summary":"Get Fix","description":"Get a single fix by id.","operationId":"get_fix_api_v1_applications__application_id__fixes__fix_id__get","parameters":[{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}},{"name":"fix_id","in":"path","required":true,"schema":{"type":"string","title":"Fix Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicFixResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/applications/{application_id}/fixes/{fix_id}/diff":{"get":{"tags":["public-api","public-api"],"summary":"Get Fix Diff","description":"Get the diff for a fix. Returns ``diff=null`` while the fix is still\nrunning — clients should poll until ``status`` is ``completed``.","operationId":"get_fix_diff_api_v1_applications__application_id__fixes__fix_id__diff_get","parameters":[{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}},{"name":"fix_id","in":"path","required":true,"schema":{"type":"string","title":"Fix Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicFixDiffResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/applications/{application_id}/fixes/{fix_id}/progress":{"get":{"tags":["public-api","public-api"],"summary":"Get Fix Progress","description":"Minimal heartbeat for a running fix.\n\nReturns status, timings, agent step count, and a last-activity\ntimestamp so a CLI can show something like ``\"Running... (42s, 12\nsteps, last update 3s ago)\"``. Deliberately does not expose message\ncontent or tool-call details.","operationId":"get_fix_progress_api_v1_applications__application_id__fixes__fix_id__progress_get","parameters":[{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}},{"name":"fix_id","in":"path","required":true,"schema":{"type":"string","title":"Fix Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicFixProgressResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/applications/{application_id}/fixes/{fix_id}/pull-requests":{"post":{"tags":["public-api","public-api"],"summary":"Create Pull Requests","description":"Open pull requests for a completed fix.","operationId":"create_pull_requests_api_v1_applications__application_id__fixes__fix_id__pull_requests_post","parameters":[{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}},{"name":"fix_id","in":"path","required":true,"schema":{"type":"string","title":"Fix Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCreatePRRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPullRequestsCreatedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/quotas/balance":{"get":{"tags":["public-api","public-api"],"summary":"Get Quota Balance","description":"Return the current-period quota balance for the calling organization.\n\nCheck this before triggering a scan or fix — if a counter's\n``remaining`` is zero, the POST will 403 ``OPERATION_FAILED`` with\nthe offending ``quota_type`` in the detail.","operationId":"get_quota_balance_api_v1_quotas_balance_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicQuotaBalanceResponse"}}}}}}}},"components":{"schemas":{"AdminResetPasswordRequest":{"properties":{"identifier":{"type":"string","title":"Identifier"}},"type":"object","required":["identifier"],"title":"AdminResetPasswordRequest","description":"Request model for admin-initiated password reset."},"AdminResetPasswordResponse":{"properties":{"reset_url":{"type":"string","title":"Reset Url"},"token":{"type":"string","title":"Token"},"expires_in_minutes":{"type":"integer","title":"Expires In Minutes"}},"type":"object","required":["reset_url","token","expires_in_minutes"],"title":"AdminResetPasswordResponse","description":"Response model containing the generated reset link."},"AdminRoleMutationResponse":{"properties":{"user":{"$ref":"#/components/schemas/AdminUserSummary"},"message":{"type":"string","title":"Message"}},"type":"object","required":["user","message"],"title":"AdminRoleMutationResponse","description":"Response for grant/revoke admin operations."},"AdminRoleTargetRequest":{"properties":{"identifier":{"type":"string","title":"Identifier","description":"User ID or email address"}},"type":"object","required":["identifier"],"title":"AdminRoleTargetRequest","description":"Request payload for grant/revoke admin role operations."},"AdminUserListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AdminUserSummary"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"AdminUserListResponse","description":"List response for current platform admins."},"AdminUserSummary":{"properties":{"user_id":{"type":"string","title":"User Id"},"email":{"type":"string","title":"Email"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"is_admin":{"type":"boolean","title":"Is Admin"},"auth_provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auth Provider"},"is_federated":{"type":"boolean","title":"Is Federated","default":false},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["user_id","email","is_admin"],"title":"AdminUserSummary","description":"Compact admin user representation used by admin management APIs."},"AggregatedMetrics":{"properties":{"open_findings":{"type":"integer","title":"Open Findings"},"resolved_in_window":{"type":"integer","title":"Resolved In Window"},"mttr_days":{"type":"number","title":"Mttr Days"},"sla_adherence_pct":{"type":"integer","title":"Sla Adherence Pct"}},"type":"object","required":["open_findings","resolved_in_window","mttr_days","sla_adherence_pct"],"title":"AggregatedMetrics","description":"Top-level aggregated metrics for the compliance overview."},"ApplicationAdherence":{"properties":{"application_id":{"type":"string","title":"Application Id"},"application_name":{"type":"string","title":"Application Name"},"sla_adherence_pct":{"type":"integer","title":"Sla Adherence Pct"},"open_findings":{"type":"integer","title":"Open Findings"}},"type":"object","required":["application_id","application_name","sla_adherence_pct","open_findings"],"title":"ApplicationAdherence","description":"SLA adherence data for a single application."},"ApplicationCreate":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name","description":"Application display name"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description","description":"Application description"},"repositories":{"items":{"$ref":"#/components/schemas/ApplicationRepository"},"type":"array","title":"Repositories","description":"Repositories to add"}},"type":"object","required":["name"],"title":"ApplicationCreate","description":"Request model for creating an application."},"ApplicationListResponse":{"properties":{"applications":{"items":{"$ref":"#/components/schemas/ApplicationResponse"},"type":"array","title":"Applications"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["applications","total"],"title":"ApplicationListResponse","description":"Response model for listing applications."},"ApplicationProfile":{"properties":{"application_type":{"$ref":"#/components/schemas/ApplicationType","description":"Type of application (web_app, api_server, cli_tool, etc.)"},"deployment_exposure":{"$ref":"#/components/schemas/DeploymentExposure","description":"How the application is exposed (public_facing, internal, local_only)"},"input_sources":{"items":{"$ref":"#/components/schemas/InputSource"},"type":"array","title":"Input Sources","description":"Sources of input the application processes"},"authentication_model":{"$ref":"#/components/schemas/AuthenticationModel","description":"Authentication mechanism used"},"data_sensitivity":{"$ref":"#/components/schemas/DataSensitivity","description":"Sensitivity level of data handled"},"detected_frameworks":{"items":{"type":"string"},"type":"array","title":"Detected Frameworks","description":"Frameworks detected in the codebase"},"context_notes":{"type":"string","title":"Context Notes","description":"User or agent notes about security context","default":""},"confidence":{"$ref":"#/components/schemas/ProfileConfidence","description":"AI confidence in this profile","default":"medium"},"is_user_modified":{"type":"boolean","title":"Is User Modified","description":"True if user has edited the profile","default":false},"derived_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Derived At","description":"When AI derived this profile"},"modified_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Modified At","description":"When user last modified the profile"}},"type":"object","required":["application_type","deployment_exposure","authentication_model","data_sensitivity"],"title":"ApplicationProfile","description":"Security context profile for an application, used to calibrate scan findings."},"ApplicationProfileUpdate":{"properties":{"application_type":{"anyOf":[{"$ref":"#/components/schemas/ApplicationType"},{"type":"null"}]},"deployment_exposure":{"anyOf":[{"$ref":"#/components/schemas/DeploymentExposure"},{"type":"null"}]},"input_sources":{"anyOf":[{"items":{"$ref":"#/components/schemas/InputSource"},"type":"array"},{"type":"null"}],"title":"Input Sources"},"authentication_model":{"anyOf":[{"$ref":"#/components/schemas/AuthenticationModel"},{"type":"null"}]},"data_sensitivity":{"anyOf":[{"$ref":"#/components/schemas/DataSensitivity"},{"type":"null"}]},"context_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context Notes"}},"type":"object","title":"ApplicationProfileUpdate","description":"Request model for updating an application profile."},"ApplicationRepository":{"properties":{"full_name":{"type":"string","title":"Full Name","description":"Full repository name (owner/repo)"},"default_branch":{"type":"string","title":"Default Branch","description":"Default branch name","default":"main"},"html_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Html Url","description":"Repository URL"},"provider":{"type":"string","enum":["github","gitlab","azure_devops"],"title":"Provider","description":"Git provider (github, gitlab, or azure_devops)","default":"github"},"provider_repository_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Repository Id","description":"Provider-native repository identifier (e.g. GitHub repository id, GitLab project id)"},"gitlab_instance_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gitlab Instance Url","description":"GitLab instance URL for self-hosted repositories (defaults to gitlab.com when omitted)"},"pr_scan_enabled":{"type":"boolean","title":"Pr Scan Enabled","description":"Whether PR/MR-triggered scanning is enabled for this repository","default":true},"pr_scan_mode":{"$ref":"#/components/schemas/PrScanMode","description":"PR/MR scan mode (partial scans changed + related files, full scans whole repo)","default":"partial"},"pr_scan_engines":{"items":{"$ref":"#/components/schemas/PrScanEngine"},"type":"array","title":"Pr Scan Engines","description":"Enabled PR/MR scan engines for this repository"}},"type":"object","required":["full_name"],"title":"ApplicationRepository","description":"A Git repository associated with an application."},"ApplicationResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Unique identifier"},"organization_id":{"type":"string","title":"Organization Id","description":"Organization this application belongs to"},"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name","description":"Application display name"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description","description":"Application description"},"repositories":{"items":{"$ref":"#/components/schemas/ApplicationRepository"},"type":"array","title":"Repositories","description":"Associated repositories"},"profile":{"anyOf":[{"$ref":"#/components/schemas/ApplicationProfile"},{"type":"null"}],"description":"Security context profile for calibrating scan findings"},"created_by":{"type":"string","title":"Created By","description":"User ID of the creator"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"archived":{"type":"boolean","title":"Archived","description":"Whether the application is archived","default":false},"repository_count":{"type":"integer","title":"Repository Count","description":"Number of repositories in the application","default":0}},"type":"object","required":["organization_id","name","created_by"],"title":"ApplicationResponse","description":"Response model for application with additional metadata."},"ApplicationType":{"type":"string","enum":["web_app","api_server","cli_tool","library","background_worker","mobile_backend"],"title":"ApplicationType","description":"Type of application being scanned."},"ApplicationUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Name","description":"Application display name"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description","description":"Application description"},"repositories":{"anyOf":[{"items":{"$ref":"#/components/schemas/ApplicationRepository"},"type":"array"},{"type":"null"}],"title":"Repositories","description":"Updated repository list"},"archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Archived","description":"Whether the application is archived"}},"type":"object","title":"ApplicationUpdate","description":"Request model for updating an application."},"AssessmentCostSummary":{"properties":{"finding_id":{"type":"string","title":"Finding Id"},"finding_check_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Finding Check Id"},"finding_file_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Finding File Path"},"total_cost_usd":{"type":"number","title":"Total Cost Usd"},"total_tokens":{"type":"integer","title":"Total Tokens"},"request_count":{"type":"integer","title":"Request Count"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["finding_id","total_cost_usd","total_tokens","request_count"],"title":"AssessmentCostSummary","description":"Summary of LLM costs for a single assessment."},"AssessmentCostsResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AssessmentCostSummary"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"total_cost_usd":{"type":"number","title":"Total Cost Usd"}},"type":"object","required":["items","total","total_cost_usd"],"title":"AssessmentCostsResponse","description":"Response for assessment costs endpoint."},"AssessmentStatus":{"type":"string","enum":["pending","in_progress","completed","failed"],"title":"AssessmentStatus","description":"Status of vulnerability assessment."},"AssessmentTriggerResponse":{"properties":{"finding_id":{"type":"string","title":"Finding Id","description":"ID of the finding being assessed"},"task_id":{"type":"string","title":"Task Id","description":"Celery task ID for tracking"},"status":{"type":"string","title":"Status","description":"Assessment status","default":"queued"}},"type":"object","required":["finding_id","task_id"],"title":"AssessmentTriggerResponse","description":"Response when triggering an assessment."},"AuthenticationModel":{"type":"string","enum":["none","basic","session","token","oauth","service_to_service","api_key"],"title":"AuthenticationModel","description":"Authentication mechanism used by the application."},"AzureDevOpsBranchItem":{"properties":{"name":{"type":"string","title":"Name"},"commit_sha":{"type":"string","title":"Commit Sha"}},"type":"object","required":["name","commit_sha"],"title":"AzureDevOpsBranchItem"},"AzureDevOpsConnectRequest":{"properties":{"ado_organization_url":{"type":"string","title":"Ado Organization Url","description":"Azure DevOps organization URL (e.g. https://dev.azure.com/myorg)"},"pat":{"type":"string","minLength":1,"title":"Pat","description":"Personal Access Token with vso.project and vso.code scopes"},"pat_expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Pat Expires At","description":"When the PAT expires (optional, user-provided)"}},"type":"object","required":["ado_organization_url","pat"],"title":"AzureDevOpsConnectRequest"},"AzureDevOpsConnectResponse":{"properties":{"connected":{"type":"boolean","title":"Connected"},"ado_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ado Username"},"ado_organization_url":{"type":"string","title":"Ado Organization Url"},"connected_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Connected At"}},"type":"object","required":["connected","ado_organization_url"],"title":"AzureDevOpsConnectResponse"},"AzureDevOpsRepoItem":{"properties":{"full_name":{"type":"string","title":"Full Name"},"private":{"type":"boolean","title":"Private"},"default_branch":{"type":"string","title":"Default Branch"},"html_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Html Url"}},"type":"object","required":["full_name","private","default_branch"],"title":"AzureDevOpsRepoItem"},"AzureDevOpsStatusResponse":{"properties":{"connected":{"type":"boolean","title":"Connected","default":false},"ado_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ado Username"},"ado_organization_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ado Organization Url"},"connected_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Connected At"},"connected_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Connected By"},"token_expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Token Expires At"},"pat_invalid":{"type":"boolean","title":"Pat Invalid","default":false}},"type":"object","title":"AzureDevOpsStatusResponse"},"BatchAssessmentResponse":{"properties":{"id":{"type":"string","title":"Id"},"scan_id":{"type":"string","title":"Scan Id"},"status":{"$ref":"#/components/schemas/BatchAssessmentStatus"},"total_findings":{"type":"integer","title":"Total Findings"},"assessed_count":{"type":"integer","title":"Assessed Count"},"failed_count":{"type":"integer","title":"Failed Count"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"}},"type":"object","required":["id","scan_id","status","total_findings","assessed_count","failed_count","created_at"],"title":"BatchAssessmentResponse","description":"Response model for batch assessment status."},"BatchAssessmentStatus":{"type":"string","enum":["queued","running","completed","failed"],"title":"BatchAssessmentStatus","description":"Status of a batch assessment job."},"BatchAssessmentTriggerResponse":{"properties":{"scan_id":{"type":"string","title":"Scan Id"},"assessment_id":{"type":"string","title":"Assessment Id"},"task_id":{"type":"string","title":"Task Id"},"status":{"type":"string","title":"Status","default":"queued"},"findings_count":{"type":"integer","title":"Findings Count"}},"type":"object","required":["scan_id","assessment_id","task_id","findings_count"],"title":"BatchAssessmentTriggerResponse","description":"Response when triggering batch assessment."},"BillingInfoRequest":{"properties":{"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name","description":"Company name"},"tax_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tax Id","description":"Tax ID"},"billing_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Billing Address","description":"Billing address"}},"type":"object","title":"BillingInfoRequest"},"BillingInfoResponse":{"properties":{"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name"},"tax_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tax Id"},"billing_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Billing Address"}},"type":"object","required":["company_name","tax_id","billing_address"],"title":"BillingInfoResponse"},"BillingPeriodOption":{"properties":{"period_start":{"type":"string","format":"date-time","title":"Period Start"},"period_end":{"type":"string","format":"date-time","title":"Period End"},"label":{"type":"string","title":"Label"}},"type":"object","required":["period_start","period_end","label"],"title":"BillingPeriodOption","description":"A selectable billing period for the period selector."},"BundleTopupRequest":{"properties":{"save_payment_method":{"type":"boolean","title":"Save Payment Method","description":"Save card for future use","default":true}},"type":"object","title":"BundleTopupRequest"},"BundleTopupResponse":{"properties":{"payment_url":{"type":"string","title":"Payment Url"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"amount":{"type":"string","title":"Amount"},"bundle_contents":{"additionalProperties":{"type":"integer"},"type":"object","title":"Bundle Contents"}},"type":"object","required":["payment_url","expires_at","amount","bundle_contents"],"title":"BundleTopupResponse"},"BusinessCalendar":{"properties":{"id":{"type":"string","title":"Id"},"organization_id":{"type":"string","title":"Organization Id","description":"Organization ID"},"timezone":{"type":"string","title":"Timezone","description":"IANA timezone name","default":"UTC"},"working_days":{"items":{"type":"integer"},"type":"array","title":"Working Days","description":"Working days (0=Mon ... 6=Sun)"},"calendar_type":{"$ref":"#/components/schemas/BusinessCalendarType","description":"Calendar type for holidays","default":"manual"},"region_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region Code","description":"Regional calendar code (e.g., US, US-CA) when calendar_type=regional"},"added_holidays":{"items":{"type":"string","format":"date"},"type":"array","title":"Added Holidays","description":"Extra holidays"},"removed_holidays":{"items":{"type":"string","format":"date"},"type":"array","title":"Removed Holidays","description":"Removed holidays"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By","description":"User ID who last updated"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["organization_id"],"title":"BusinessCalendar","description":"Business calendar definition for an organization."},"BusinessCalendarType":{"type":"string","enum":["manual","regional"],"title":"BusinessCalendarType","description":"Supported calendar types."},"BusinessCalendarUpdateRequest":{"properties":{"timezone":{"type":"string","title":"Timezone","default":"UTC"},"working_days":{"items":{"type":"integer"},"type":"array","title":"Working Days"},"calendar_type":{"$ref":"#/components/schemas/BusinessCalendarType","default":"manual"},"region_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region Code"},"added_holidays":{"items":{"type":"string","format":"date"},"type":"array","title":"Added Holidays"},"removed_holidays":{"items":{"type":"string","format":"date"},"type":"array","title":"Removed Holidays"}},"type":"object","title":"BusinessCalendarUpdateRequest","description":"Request model for updating business calendar settings."},"CommitFilesRequest":{"properties":{"repo_full_name":{"type":"string","title":"Repo Full Name"},"branch":{"type":"string","title":"Branch"},"files":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Files"},"commit_message":{"type":"string","title":"Commit Message"}},"type":"object","required":["repo_full_name","branch","files","commit_message"],"title":"CommitFilesRequest"},"ComplianceOverviewResponseV2":{"properties":{"organization_id":{"type":"string","title":"Organization Id"},"window":{"$ref":"#/components/schemas/WindowInfo"},"scope":{"$ref":"#/components/schemas/ScopeInfo"},"aggregated":{"$ref":"#/components/schemas/AggregatedMetrics"},"by_scan_type":{"additionalProperties":{"$ref":"#/components/schemas/ScanTypeBreakdown"},"type":"object","title":"By Scan Type"},"by_severity":{"additionalProperties":{"$ref":"#/components/schemas/SeverityBreakdown"},"type":"object","title":"By Severity"},"by_application":{"items":{"$ref":"#/components/schemas/ApplicationAdherence"},"type":"array","title":"By Application","description":"Per-application SLA adherence, sorted by adherence percentage descending"},"platform_health":{"$ref":"#/components/schemas/PlatformHealthSummary"},"trend":{"items":{"$ref":"#/components/schemas/TrendPoint"},"type":"array","title":"Trend"},"computedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Computedat"}},"type":"object","required":["organization_id","window","scope","aggregated","by_scan_type","by_severity","platform_health","trend"],"title":"ComplianceOverviewResponseV2","description":"Aggregated compliance overview response for dashboard display."},"ComplianceRefreshResponse":{"properties":{"status":{"type":"string","title":"Status"},"message":{"type":"string","title":"Message"}},"type":"object","required":["status","message"],"title":"ComplianceRefreshResponse","description":"Response model for compliance refresh."},"ComplianceRequirementsResponse":{"properties":{"organizationId":{"type":"string","title":"Organizationid"},"window":{"$ref":"#/components/schemas/WindowInfo"},"scope":{"$ref":"#/components/schemas/ScopeInfo"},"frameworks":{"items":{"$ref":"#/components/schemas/FrameworkData"},"type":"array","title":"Frameworks"},"computedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Computedat"}},"type":"object","required":["organizationId","window","scope","frameworks"],"title":"ComplianceRequirementsResponse","description":"Response model for compliance requirements endpoint."},"ConversationMessage":{"properties":{"role":{"type":"string","enum":["user","assistant","system"],"title":"Role","description":"Message role"},"content":{"type":"string","title":"Content","description":"Message content"}},"type":"object","required":["role","content"],"title":"ConversationMessage","description":"Message in a conversation for suggestion generation."},"CreateBranchRequest":{"properties":{"repo_full_name":{"type":"string","title":"Repo Full Name","description":"owner/repo"},"branch_name":{"type":"string","title":"Branch Name"},"from_branch":{"type":"string","title":"From Branch","default":"main"}},"type":"object","required":["repo_full_name","branch_name"],"title":"CreateBranchRequest"},"CreateMemoryRequest":{"properties":{"memory_type":{"type":"string","enum":["fact","preference","event","action"],"title":"Memory Type","description":"Type of memory"},"content":{"type":"string","maxLength":1000,"minLength":1,"title":"Content","description":"Memory content"}},"type":"object","required":["memory_type","content"],"title":"CreateMemoryRequest","description":"Request to create a new memory."},"CreateMemoryResponse":{"properties":{"status":{"type":"string","const":"accepted","title":"Status","description":"Request status","default":"accepted"},"task_id":{"type":"string","title":"Task Id","description":"Celery task ID for tracking"}},"type":"object","required":["task_id"],"title":"CreateMemoryResponse","description":"Response for async memory creation."},"CreatePRResponse":{"properties":{"pull_requests":{"items":{"$ref":"#/components/schemas/FixPullRequest"},"type":"array","title":"Pull Requests"},"errors":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Errors","description":"Errors for repos that failed"}},"type":"object","required":["pull_requests"],"title":"CreatePRResponse","description":"Response model for PR creation."},"CreateRejectedMemoryRequest":{"properties":{"memory_type":{"type":"string","enum":["fact","preference","event","action"],"title":"Memory Type","description":"Type of memory"},"content":{"type":"string","maxLength":1000,"minLength":1,"title":"Content","description":"Memory content"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason","description":"Reason for rejection"}},"type":"object","required":["memory_type","content"],"title":"CreateRejectedMemoryRequest","description":"Request to create a rejected memory."},"CreateRejectedMemoryResponse":{"properties":{"status":{"type":"string","const":"accepted","title":"Status","description":"Request status","default":"accepted"},"task_id":{"type":"string","title":"Task Id","description":"Celery task ID for tracking"}},"type":"object","required":["task_id"],"title":"CreateRejectedMemoryResponse","description":"Response for async rejected memory creation."},"DataSensitivity":{"type":"string","enum":["public","internal","confidential","pii","financial","healthcare"],"title":"DataSensitivity","description":"Sensitivity level of data handled by the application."},"DeleteResponse":{"properties":{"success":{"type":"boolean","title":"Success"}},"type":"object","required":["success"],"title":"DeleteResponse"},"DeploymentExposure":{"type":"string","enum":["public_facing","internal","local_only"],"title":"DeploymentExposure","description":"How the application is exposed to users/networks."},"DeviceApprovalRequest":{"properties":{"organization_id":{"type":"string","minLength":1,"title":"Organization Id"},"device_label":{"type":"string","maxLength":80,"minLength":1,"title":"Device Label","default":"CLI device"}},"type":"object","required":["organization_id"],"title":"DeviceApprovalRequest","description":"Request body for ``POST /device-authorizations/{user_code}/approve``."},"DeviceApprovalResponse":{"properties":{"status":{"type":"string","enum":["pending","approved","consumed","denied"],"title":"Status"}},"type":"object","required":["status"],"title":"DeviceApprovalResponse","description":"Response from approve/deny endpoints."},"DeviceAuthorizationView":{"properties":{"user_code":{"type":"string","title":"User Code"},"client_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Name"},"status":{"type":"string","enum":["pending","approved","consumed","denied"],"title":"Status"},"requested_at":{"type":"string","format":"date-time","title":"Requested At"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"}},"type":"object","required":["user_code","status","requested_at","expires_at"],"title":"DeviceAuthorizationView","description":"Minimal view returned by the frontend GET endpoint.\n\nDeliberately omits ``device_code`` and the API key — the approval page\nonly needs enough info to render the panel."},"DeviceCodeRequest":{"properties":{"client_name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Client Name"}},"type":"object","title":"DeviceCodeRequest","description":"Request body for ``POST /oauth/device/code``."},"DeviceCodeResponse":{"properties":{"device_code":{"type":"string","title":"Device Code"},"user_code":{"type":"string","title":"User Code"},"verification_uri":{"type":"string","title":"Verification Uri"},"verification_uri_complete":{"type":"string","title":"Verification Uri Complete"},"expires_in":{"type":"integer","title":"Expires In"},"interval":{"type":"integer","title":"Interval"}},"type":"object","required":["device_code","user_code","verification_uri","verification_uri_complete","expires_in","interval"],"title":"DeviceCodeResponse","description":"RFC 8628 §3.2 device authorization response."},"DiffResponse":{"properties":{"diff":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Diff"}},"type":"object","required":["diff"],"title":"DiffResponse","description":"Response model for fix diff."},"DismissedBy":{"type":"string","enum":["ai","manual"],"title":"DismissedBy","description":"Source of finding dismissal (ignored/false_positive)."},"EffectiveFeaturesResponse":{"properties":{"tier":{"type":"string","title":"Tier","description":"Resolved effective tier for the user"},"features":{"items":{"type":"string"},"type":"array","title":"Features","description":"Enabled feature keys for the user"}},"type":"object","required":["tier"],"title":"EffectiveFeaturesResponse"},"EvidenceData":{"properties":{"volume":{"anyOf":[{"$ref":"#/components/schemas/VolumeEvidence"},{"type":"null"}]},"operations":{"anyOf":[{"$ref":"#/components/schemas/OperationsEvidence"},{"type":"null"}]}},"type":"object","title":"EvidenceData","description":"Evidence data for a control/criteria."},"FeatureFlagResponse":{"properties":{"key":{"type":"string","title":"Key"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"enabled":{"type":"boolean","title":"Enabled"},"allowed_tiers":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Allowed Tiers"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["key","enabled"],"title":"FeatureFlagResponse"},"FeatureFlagUpsertRequest":{"properties":{"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Human-readable description"},"enabled":{"type":"boolean","title":"Enabled","description":"Whether the feature is globally enabled"},"allowed_tiers":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Allowed Tiers","description":"If provided, only these tiers get the feature"}},"type":"object","required":["enabled"],"title":"FeatureFlagUpsertRequest"},"Finding":{"properties":{"id":{"type":"string","title":"Id","description":"Unique identifier"},"fingerprint":{"type":"string","title":"Fingerprint","description":"Hash for deduplication (check_id + file_path + app_id)"},"application_id":{"type":"string","title":"Application Id","description":"Application this finding belongs to"},"organization_id":{"type":"string","title":"Organization Id","description":"Organization for access control"},"check_id":{"type":"string","title":"Check Id","description":"Rule/check identifier (e.g., semgrep rule ID)"},"file_path":{"type":"string","title":"File Path","description":"Path to the file containing the finding"},"severity":{"$ref":"#/components/schemas/FindingSeverity","description":"Severity level"},"original_severity":{"anyOf":[{"$ref":"#/components/schemas/FindingSeverity"},{"type":"null"}],"description":"Severity assigned by the initial scan, before any reclassification"},"assessed_severity":{"anyOf":[{"$ref":"#/components/schemas/FindingSeverity"},{"type":"null"}],"description":"Severity the AI assessment determined, or None if dismissed (false_positive/ignored)"},"reclassified_by":{"anyOf":[{"$ref":"#/components/schemas/DismissedBy"},{"type":"null"}],"description":"Source of severity reclassification (ai or manual), None if no change"},"message":{"type":"string","title":"Message","description":"Description of the finding"},"category":{"type":"string","title":"Category","description":"Category (e.g., security)","default":"security"},"vulnerability_class":{"items":{"type":"string"},"type":"array","title":"Vulnerability Class","description":"Vulnerability classifications"},"cwe":{"items":{"type":"string"},"type":"array","title":"Cwe","description":"CWE identifiers"},"owasp":{"items":{"type":"string"},"type":"array","title":"Owasp","description":"OWASP identifiers"},"status":{"$ref":"#/components/schemas/FindingStatus","description":"Current status","default":"open"},"dismissed_by":{"anyOf":[{"$ref":"#/components/schemas/DismissedBy"},{"type":"null"}],"description":"Source of dismissal if status is ignored/false_positive (ai or manual)"},"first_detected_at":{"type":"string","format":"date-time","title":"First Detected At"},"last_detected_at":{"type":"string","format":"date-time","title":"Last Detected At"},"resolved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Resolved At","description":"When the finding was resolved"},"references":{"items":{"type":"string"},"type":"array","title":"References","description":"Reference URLs"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url","description":"Link to rule documentation"},"scan_type":{"type":"string","title":"Scan Type","description":"Type of scan (semgrep_scan or secrets_scan)"},"is_pr_finding":{"type":"boolean","title":"Is Pr Finding","description":"True if this finding came from a PR/MR branch scan","default":false},"pr_branch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pr Branch","description":"Branch name for PR/MR findings"},"pr_commit_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pr Commit Hash","description":"Commit SHA for PR/MR findings"},"assessment_status":{"anyOf":[{"$ref":"#/components/schemas/AssessmentStatus"},{"type":"null"}],"description":"Status of vulnerability assessment"},"is_real_concern":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Is Real Concern","description":"Whether this is a real security concern"},"assessed_priority":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assessed Priority","description":"Assessed priority level (High/Medium/Low)"},"should_fix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Should Fix","description":"Whether this should be fixed (Yes/No/Nice-to-have)"},"is_code_at_fault":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Is Code At Fault","description":"Whether application code is at fault (Yes/No/N/A)"},"practical_exploitability":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Practical Exploitability","description":"How practically exploitable (Very low/Low/Medium/High)"},"assessment_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assessment Notes","description":"Detailed explanation of the assessment"},"assessed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Assessed At","description":"When the assessment was completed"},"duplicate_of_finding_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Duplicate Of Finding Id","description":"ID of original finding if this is a duplicate"},"cvss_attack_vector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvss Attack Vector","description":"Attack Vector: N (Network), A (Adjacent), L (Local), P (Physical)"},"cvss_attack_complexity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvss Attack Complexity","description":"Attack Complexity: L (Low), H (High)"},"cvss_privileges_required":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvss Privileges Required","description":"Privileges Required: N (None), L (Low), H (High)"},"cvss_user_interaction":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvss User Interaction","description":"User Interaction: N (None), R (Required)"},"cvss_scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvss Scope","description":"Scope: U (Unchanged), C (Changed)"},"cvss_confidentiality":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvss Confidentiality","description":"Confidentiality Impact: N (None), L (Low), H (High)"},"cvss_integrity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvss Integrity","description":"Integrity Impact: N (None), L (Low), H (High)"},"cvss_availability":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvss Availability","description":"Availability Impact: N (None), L (Low), H (High)"},"cvss_vector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvss Vector","description":"Full CVSS vector string (e.g., CVSS:3.1/AV:N/AC:L/...)"},"cvss_base_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cvss Base Score","description":"Calculated CVSS Base Score (0.0 - 10.0)"},"cvss_severity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvss Severity","description":"CVSS severity rating: None, Low, Medium, High, Critical"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["fingerprint","application_id","organization_id","check_id","file_path","severity","message","scan_type"],"title":"Finding","description":"Represents a unique security finding, deduplicated across scans."},"FindingAssessmentResponse":{"properties":{"finding_id":{"type":"string","title":"Finding Id","description":"ID of the assessed finding"},"status":{"anyOf":[{"$ref":"#/components/schemas/FindingStatus"},{"type":"null"}],"description":"Updated finding status"},"dismissed_by":{"anyOf":[{"$ref":"#/components/schemas/DismissedBy"},{"type":"null"}],"description":"Source of dismissal"},"assessment_status":{"anyOf":[{"$ref":"#/components/schemas/AssessmentStatus"},{"type":"null"}],"description":"Status of vulnerability assessment"},"is_real_concern":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Is Real Concern"},"assessed_priority":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assessed Priority"},"should_fix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Should Fix"},"is_code_at_fault":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Is Code At Fault"},"practical_exploitability":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Practical Exploitability"},"assessment_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assessment Notes"},"assessed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Assessed At"},"duplicate_of_finding_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Duplicate Of Finding Id"},"cvss_attack_vector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvss Attack Vector"},"cvss_attack_complexity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvss Attack Complexity"},"cvss_privileges_required":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvss Privileges Required"},"cvss_user_interaction":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvss User Interaction"},"cvss_scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvss Scope"},"cvss_confidentiality":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvss Confidentiality"},"cvss_integrity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvss Integrity"},"cvss_availability":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvss Availability"},"cvss_vector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvss Vector"},"cvss_base_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cvss Base Score"},"cvss_severity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvss Severity"}},"type":"object","required":["finding_id"],"title":"FindingAssessmentResponse","description":"Response model for finding assessment data."},"FindingEvent":{"properties":{"id":{"type":"string","title":"Id"},"organization_id":{"type":"string","title":"Organization Id","description":"Organization for access control"},"application_id":{"type":"string","title":"Application Id","description":"Application the finding belongs to"},"finding_id":{"type":"string","title":"Finding Id","description":"Finding this event relates to"},"scan_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scan Id","description":"Scan ID linked to this event"},"scan_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scan Type","description":"Scan type that produced the event"},"event_type":{"$ref":"#/components/schemas/FindingEventType","description":"Event type"},"previous_status":{"anyOf":[{"$ref":"#/components/schemas/FindingStatus"},{"type":"null"}],"description":"Previous finding status"},"new_status":{"anyOf":[{"$ref":"#/components/schemas/FindingStatus"},{"type":"null"}],"description":"New finding status"},"severity":{"anyOf":[{"$ref":"#/components/schemas/FindingSeverity"},{"type":"null"}],"description":"Finding severity"},"check_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Check Id","description":"Rule/check identifier"},"file_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Path","description":"Path to affected file"},"actor_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor User Id","description":"User ID or system actor"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata","description":"Extra event metadata"},"event_timestamp":{"type":"string","format":"date-time","title":"Event Timestamp","description":"When the event occurred"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["organization_id","application_id","finding_id","event_type"],"title":"FindingEvent","description":"Audit event for finding lifecycle changes."},"FindingEventListResponse":{"properties":{"events":{"items":{"$ref":"#/components/schemas/FindingEvent"},"type":"array","title":"Events"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"skip":{"type":"integer","title":"Skip"}},"type":"object","required":["events","total","limit","skip"],"title":"FindingEventListResponse","description":"Response model for listing finding events."},"FindingEventType":{"type":"string","enum":["detected","resolved_auto","resolved_manual","resolved_pr_merged","resolved_pr_linked","reopened","status_changed","fix_created","fix_started","fix_completed","fix_failed","fix_pr_created"],"title":"FindingEventType","description":"Types of finding audit events."},"FindingFixSummary":{"properties":{"fix_id":{"type":"string","title":"Fix Id","description":"ID of the most recent fix"},"fix_status":{"$ref":"#/components/schemas/FixStatus","description":"Status of the fix"},"has_pr":{"type":"boolean","title":"Has Pr","description":"Whether the fix has a PR","default":false},"pr_status":{"anyOf":[{"$ref":"#/components/schemas/PrMergeStatus"},{"type":"null"}],"description":"PR merge status"}},"type":"object","required":["fix_id","fix_status"],"title":"FindingFixSummary","description":"Summary of fix status for a finding in list views."},"FindingListResponse":{"properties":{"findings":{"items":{"$ref":"#/components/schemas/FindingWithFixSummary"},"type":"array","title":"Findings"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"skip":{"type":"integer","title":"Skip"},"has_next":{"type":"boolean","title":"Has Next"}},"type":"object","required":["findings","total","limit","skip","has_next"],"title":"FindingListResponse","description":"Response model for listing findings."},"FindingOccurrence":{"properties":{"id":{"type":"string","title":"Id","description":"Unique identifier"},"finding_id":{"type":"string","title":"Finding Id","description":"Reference to the parent Finding"},"scan_id":{"type":"string","title":"Scan Id","description":"Reference to the Scan"},"line_start":{"type":"integer","title":"Line Start","description":"Starting line number"},"line_end":{"type":"integer","title":"Line End","description":"Ending line number"},"col_start":{"type":"integer","title":"Col Start","description":"Starting column"},"col_end":{"type":"integer","title":"Col End","description":"Ending column"},"commit_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Commit Hash","description":"Git commit SHA"},"branch":{"type":"string","title":"Branch","description":"Branch name"},"detected_at":{"type":"string","format":"date-time","title":"Detected At"}},"type":"object","required":["finding_id","scan_id","line_start","line_end","col_start","col_end","branch"],"title":"FindingOccurrence","description":"Tracks each time a finding was detected in a scan."},"FindingOccurrenceListResponse":{"properties":{"occurrences":{"items":{"$ref":"#/components/schemas/FindingOccurrence"},"type":"array","title":"Occurrences"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["occurrences","total"],"title":"FindingOccurrenceListResponse","description":"Response model for listing occurrences."},"FindingSeverity":{"type":"string","enum":["critical","high","medium","low"],"title":"FindingSeverity","description":"Severity level of a security finding."},"FindingStatsResponse":{"properties":{"total":{"type":"integer","title":"Total"},"by_severity":{"additionalProperties":true,"type":"object","title":"By Severity"},"by_status":{"additionalProperties":true,"type":"object","title":"By Status"}},"type":"object","required":["total","by_severity","by_status"],"title":"FindingStatsResponse","description":"Response model for finding statistics."},"FindingStatus":{"type":"string","enum":["open","resolved","ignored","false_positive","needs_manual_review"],"title":"FindingStatus","description":"Status of a security finding."},"FindingStatusUpdateRequest":{"properties":{"status":{"$ref":"#/components/schemas/FindingStatus"}},"type":"object","required":["status"],"title":"FindingStatusUpdateRequest","description":"Request model for updating finding status."},"FindingWithFixSummary":{"properties":{"id":{"type":"string","title":"Id","description":"Unique identifier"},"fingerprint":{"type":"string","title":"Fingerprint","description":"Hash for deduplication (check_id + file_path + app_id)"},"application_id":{"type":"string","title":"Application Id","description":"Application this finding belongs to"},"organization_id":{"type":"string","title":"Organization Id","description":"Organization for access control"},"check_id":{"type":"string","title":"Check Id","description":"Rule/check identifier (e.g., semgrep rule ID)"},"file_path":{"type":"string","title":"File Path","description":"Path to the file containing the finding"},"severity":{"$ref":"#/components/schemas/FindingSeverity","description":"Severity level"},"original_severity":{"anyOf":[{"$ref":"#/components/schemas/FindingSeverity"},{"type":"null"}],"description":"Severity assigned by the initial scan, before any reclassification"},"assessed_severity":{"anyOf":[{"$ref":"#/components/schemas/FindingSeverity"},{"type":"null"}],"description":"Severity the AI assessment determined, or None if dismissed (false_positive/ignored)"},"reclassified_by":{"anyOf":[{"$ref":"#/components/schemas/DismissedBy"},{"type":"null"}],"description":"Source of severity reclassification (ai or manual), None if no change"},"message":{"type":"string","title":"Message","description":"Description of the finding"},"category":{"type":"string","title":"Category","description":"Category (e.g., security)","default":"security"},"vulnerability_class":{"items":{"type":"string"},"type":"array","title":"Vulnerability Class","description":"Vulnerability classifications"},"cwe":{"items":{"type":"string"},"type":"array","title":"Cwe","description":"CWE identifiers"},"owasp":{"items":{"type":"string"},"type":"array","title":"Owasp","description":"OWASP identifiers"},"status":{"$ref":"#/components/schemas/FindingStatus","description":"Current status","default":"open"},"dismissed_by":{"anyOf":[{"$ref":"#/components/schemas/DismissedBy"},{"type":"null"}],"description":"Source of dismissal if status is ignored/false_positive (ai or manual)"},"first_detected_at":{"type":"string","format":"date-time","title":"First Detected At"},"last_detected_at":{"type":"string","format":"date-time","title":"Last Detected At"},"resolved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Resolved At","description":"When the finding was resolved"},"references":{"items":{"type":"string"},"type":"array","title":"References","description":"Reference URLs"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url","description":"Link to rule documentation"},"scan_type":{"type":"string","title":"Scan Type","description":"Type of scan (semgrep_scan or secrets_scan)"},"is_pr_finding":{"type":"boolean","title":"Is Pr Finding","description":"True if this finding came from a PR/MR branch scan","default":false},"pr_branch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pr Branch","description":"Branch name for PR/MR findings"},"pr_commit_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pr Commit Hash","description":"Commit SHA for PR/MR findings"},"assessment_status":{"anyOf":[{"$ref":"#/components/schemas/AssessmentStatus"},{"type":"null"}],"description":"Status of vulnerability assessment"},"is_real_concern":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Is Real Concern","description":"Whether this is a real security concern"},"assessed_priority":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assessed Priority","description":"Assessed priority level (High/Medium/Low)"},"should_fix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Should Fix","description":"Whether this should be fixed (Yes/No/Nice-to-have)"},"is_code_at_fault":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Is Code At Fault","description":"Whether application code is at fault (Yes/No/N/A)"},"practical_exploitability":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Practical Exploitability","description":"How practically exploitable (Very low/Low/Medium/High)"},"assessment_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assessment Notes","description":"Detailed explanation of the assessment"},"assessed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Assessed At","description":"When the assessment was completed"},"duplicate_of_finding_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Duplicate Of Finding Id","description":"ID of original finding if this is a duplicate"},"cvss_attack_vector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvss Attack Vector","description":"Attack Vector: N (Network), A (Adjacent), L (Local), P (Physical)"},"cvss_attack_complexity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvss Attack Complexity","description":"Attack Complexity: L (Low), H (High)"},"cvss_privileges_required":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvss Privileges Required","description":"Privileges Required: N (None), L (Low), H (High)"},"cvss_user_interaction":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvss User Interaction","description":"User Interaction: N (None), R (Required)"},"cvss_scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvss Scope","description":"Scope: U (Unchanged), C (Changed)"},"cvss_confidentiality":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvss Confidentiality","description":"Confidentiality Impact: N (None), L (Low), H (High)"},"cvss_integrity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvss Integrity","description":"Integrity Impact: N (None), L (Low), H (High)"},"cvss_availability":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvss Availability","description":"Availability Impact: N (None), L (Low), H (High)"},"cvss_vector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvss Vector","description":"Full CVSS vector string (e.g., CVSS:3.1/AV:N/AC:L/...)"},"cvss_base_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cvss Base Score","description":"Calculated CVSS Base Score (0.0 - 10.0)"},"cvss_severity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvss Severity","description":"CVSS severity rating: None, Low, Medium, High, Critical"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"fix_summary":{"anyOf":[{"$ref":"#/components/schemas/FindingFixSummary"},{"type":"null"}],"description":"Summary of associated fix"}},"type":"object","required":["fingerprint","application_id","organization_id","check_id","file_path","severity","message","scan_type"],"title":"FindingWithFixSummary","description":"Finding with optional fix summary for list views."},"FindingWithTimeline":{"properties":{"findingId":{"type":"string","title":"Findingid"},"cycleId":{"type":"string","title":"Cycleid"},"slaStatus":{"type":"string","title":"Slastatus"},"checkId":{"type":"string","title":"Checkid"},"message":{"type":"string","title":"Message"},"filePath":{"type":"string","title":"Filepath"},"lineNumber":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Linenumber"},"applicationId":{"type":"string","title":"Applicationid"},"applicationName":{"type":"string","title":"Applicationname"},"slaTargetDays":{"type":"integer","title":"Slatargetdays"},"actualBusinessDays":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Actualbusinessdays"},"daysOverdue":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Daysoverdue"},"daysRemaining":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Daysremaining"},"slaDeadline":{"type":"string","title":"Sladeadline"},"detectedAt":{"type":"string","format":"date-time","title":"Detectedat"},"resolvedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Resolvedat"},"resolutionType":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolutiontype"},"assessment":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Assessment"},"timeline":{"items":{"$ref":"#/components/schemas/TimelineEvent"},"type":"array","title":"Timeline"}},"type":"object","required":["findingId","cycleId","slaStatus","checkId","message","filePath","applicationId","applicationName","slaTargetDays","slaDeadline","detectedAt"],"title":"FindingWithTimeline","description":"A finding with its full timeline for audit trail."},"FixCreate":{"properties":{"application_id":{"type":"string","title":"Application Id","description":"Application to apply the fix to"},"finding_ids":{"items":{"type":"string"},"type":"array","title":"Finding Ids","description":"Finding IDs this fix addresses"},"title":{"type":"string","maxLength":200,"minLength":1,"title":"Title","description":"Fix title"},"instructions":{"type":"string","minLength":1,"title":"Instructions","description":"Instructions for the coding agent"},"source_repo":{"type":"string","title":"Source Repo","description":"Repository to generate and apply the fix (full_name)"},"source_repo_provider":{"type":"string","title":"Source Repo Provider","description":"Provider of the repository (github/gitlab)","default":"github"},"source_scan_branch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Scan Branch","description":"Branch the finding was detected on"}},"type":"object","required":["application_id","title","instructions","source_repo"],"title":"FixCreate","description":"Request model for creating a fix."},"FixListResponse":{"properties":{"fixes":{"items":{"$ref":"#/components/schemas/FixResponse"},"type":"array","title":"Fixes"},"total":{"type":"integer","title":"Total"},"has_more":{"type":"boolean","title":"Has More","default":false}},"type":"object","required":["fixes","total"],"title":"FixListResponse","description":"Response model for listing fixes."},"FixPullRequest":{"properties":{"repo_full_name":{"type":"string","title":"Repo Full Name","description":"Full repository name (owner/repo)"},"branch_name":{"type":"string","title":"Branch Name","description":"Branch created for the fix"},"pr_number":{"type":"integer","title":"Pr Number","description":"Pull request number"},"pr_url":{"type":"string","title":"Pr Url","description":"URL to the pull request"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"merge_status":{"$ref":"#/components/schemas/PrMergeStatus","description":"PR status: open, merged, closed","default":"open"},"merged_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Merged At","description":"When the PR was merged"},"merge_checked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Merge Checked At","description":"Last merge status check"}},"type":"object","required":["repo_full_name","branch_name","pr_number","pr_url"],"title":"FixPullRequest","description":"Information about a PR created from a fix."},"FixResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Unique identifier"},"organization_id":{"type":"string","title":"Organization Id","description":"Organization this fix belongs to"},"application_id":{"type":"string","title":"Application Id","description":"Application this fix targets"},"finding_ids":{"items":{"type":"string"},"type":"array","title":"Finding Ids","description":"Finding IDs this fix addresses"},"title":{"type":"string","maxLength":200,"minLength":1,"title":"Title","description":"Fix title"},"instructions":{"type":"string","minLength":1,"title":"Instructions","description":"User instructions for the coding agent"},"status":{"$ref":"#/components/schemas/FixStatus","description":"Current status of the fix","default":"pending"},"sandbox_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sandbox Id","description":"E2B sandbox ID when running"},"source_repo":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Repo","description":"Repository where the fix is generated and applied (full_name)"},"source_repo_provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Repo Provider","description":"Provider of the repository (github/gitlab)"},"source_scan_branch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Scan Branch","description":"Branch the finding was detected on (PR source branch for PR-scan findings, None for default-branch scans)"},"diff":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Diff","description":"Git diff output after agent completion"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message","description":"Error message if fix failed"},"pull_requests":{"items":{"$ref":"#/components/schemas/FixPullRequest"},"type":"array","title":"Pull Requests","description":"PRs created from this fix"},"pr_creation_pending":{"type":"boolean","title":"Pr Creation Pending","description":"Whether PR creation is in progress","default":false},"created_by":{"type":"string","title":"Created By","description":"User ID of the creator"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At","description":"When the fix started running"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At","description":"When the fix completed"},"archived":{"type":"boolean","title":"Archived","description":"Whether the fix is archived","default":false},"archived_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Archived At","description":"When the fix was archived"},"application_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Application Name","description":"Name of the target application"}},"type":"object","required":["organization_id","application_id","title","instructions","created_by"],"title":"FixResponse","description":"Response model for a fix with additional metadata."},"FixStatus":{"type":"string","enum":["pending","running","completed","failed","pr_creation_failed"],"title":"FixStatus","description":"Status of a fix."},"FrameworkData":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"enabled":{"type":"boolean","title":"Enabled"},"groupLabel":{"type":"string","title":"Grouplabel"},"itemLabel":{"type":"string","title":"Itemlabel"},"status":{"type":"string","title":"Status"},"score":{"$ref":"#/components/schemas/Score"},"groups":{"items":{"$ref":"#/components/schemas/GroupData"},"type":"array","title":"Groups"}},"type":"object","required":["id","name","enabled","groupLabel","itemLabel","status","score","groups"],"title":"FrameworkData","description":"Data for a compliance framework."},"GenerateSuggestionsRequest":{"properties":{"messages":{"items":{"$ref":"#/components/schemas/ConversationMessage"},"type":"array","title":"Messages","description":"Conversation messages"},"limit":{"type":"integer","maximum":10.0,"minimum":1.0,"title":"Limit","description":"Max number of suggestions","default":5}},"type":"object","required":["messages"],"title":"GenerateSuggestionsRequest","description":"Request to generate memory suggestions from conversation."},"GitHubConnectResponse":{"properties":{"authorization_url":{"type":"string","title":"Authorization Url"},"state":{"type":"string","title":"State"}},"type":"object","required":["authorization_url","state"],"title":"GitHubConnectResponse"},"GitHubStatusResponse":{"properties":{"connected":{"type":"boolean","title":"Connected","default":false},"github_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Github Username"},"github_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Github Email"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"connected_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Connected At"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"manage_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Manage Url"}},"type":"object","title":"GitHubStatusResponse"},"GroupData":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"status":{"type":"string","title":"Status"},"score":{"$ref":"#/components/schemas/Score"},"items":{"items":{"$ref":"#/components/schemas/ItemData"},"type":"array","title":"Items"}},"type":"object","required":["id","title","description","status","score","items"],"title":"GroupData","description":"Data for a clause/category group."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ImpersonateCheckRequest":{"properties":{"identifier":{"type":"string","title":"Identifier"}},"type":"object","required":["identifier"],"title":"ImpersonateCheckRequest","description":"Request model for impersonation check."},"ImpersonateCheckResponse":{"properties":{"valid":{"type":"boolean","title":"Valid"},"user_info":{"additionalProperties":true,"type":"object","title":"User Info"},"message":{"type":"string","title":"Message"}},"type":"object","required":["valid","user_info","message"],"title":"ImpersonateCheckResponse","description":"Response model for impersonation check."},"InputSource":{"type":"string","enum":["http_requests","cli_args","file_input","message_queue","database","internal_api"],"title":"InputSource","description":"Sources of input the application processes."},"InvitationCreate":{"properties":{"email":{"type":"string","title":"Email","description":"Email address to invite"},"role":{"type":"string","enum":["owner","admin","member","viewer"],"title":"Role","description":"Role to assign","default":"member"},"send_email":{"type":"boolean","title":"Send Email","description":"Whether to send invitation email","default":true}},"type":"object","required":["email"],"title":"InvitationCreate","description":"Request model for creating an invitation."},"InvitationResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Unique identifier"},"organization_id":{"type":"string","title":"Organization Id","description":"Organization ID"},"email":{"type":"string","title":"Email","description":"Invited email address"},"role":{"type":"string","enum":["owner","admin","member","viewer"],"title":"Role","description":"Role to assign on acceptance","default":"member"},"invited_by":{"type":"string","title":"Invited By","description":"User ID who sent the invitation"},"token":{"type":"string","title":"Token","description":"Secure token for invite link"},"expires_at":{"type":"string","format":"date-time","title":"Expires At","description":"Invitation expiration time"},"status":{"type":"string","enum":["pending","accepted","expired","revoked"],"title":"Status","description":"Current invitation status","default":"pending"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"organization_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Name","description":"Organization name"},"inviter_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Inviter Name","description":"Name of user who sent invite"},"invite_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Invite Url","description":"URL to accept the invitation"}},"type":"object","required":["organization_id","email","invited_by"],"title":"InvitationResponse","description":"Response model for invitation with organization details."},"InvoiceResponse":{"properties":{"id":{"type":"string","title":"Id"},"invoice_type":{"type":"string","title":"Invoice Type"},"invoice_date":{"type":"string","format":"date-time","title":"Invoice Date"},"amount":{"type":"string","title":"Amount"},"status":{"type":"string","title":"Status"},"description":{"type":"string","title":"Description"},"payment_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Reference"},"citypay_transaction_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Citypay Transaction Id"},"topup_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Topup Type"},"quota_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Quota Type"},"units":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Units"},"subscription_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subscription Id"},"period_start":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period Start"},"period_end":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period End"}},"type":"object","required":["id","invoice_type","invoice_date","amount","status","description"],"title":"InvoiceResponse","description":"Unified invoice response model for both topup and subscription invoices"},"ItemData":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"status":{"type":"string","title":"Status"},"score":{"$ref":"#/components/schemas/Score"},"thresholds":{"items":{"$ref":"#/components/schemas/ThresholdData"},"type":"array","title":"Thresholds"},"evidence":{"anyOf":[{"$ref":"#/components/schemas/EvidenceData"},{"type":"null"}]}},"type":"object","required":["id","title","description","status","score","thresholds"],"title":"ItemData","description":"Data for a control/criteria item."},"LeadQuestionnaire":{"properties":{"id":{"type":"string","title":"Id","description":"Unique identifier"},"user_id":{"type":"string","title":"User Id","description":"User ID of the respondent"},"email":{"type":"string","title":"Email","description":"Email address of the respondent"},"status":{"$ref":"#/components/schemas/LeadQuestionnaireStatus","description":"Whether the questionnaire has been completed","default":"pending"},"dismissal_count":{"type":"integer","title":"Dismissal Count","description":"Number of times the modal was dismissed","default":0},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role","description":"What best describes your role"},"team_size":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Size","description":"Engineering team size"},"what_brought_you":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"What Brought You","description":"What brought you here today"},"adoption_process":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adoption Process","description":"How security tools get adopted"},"how_heard":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"How Heard","description":"How they heard about Kolega"},"biggest_challenge":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Biggest Challenge","description":"Biggest security challenge (free text)"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Document creation timestamp"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"Last update timestamp"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At","description":"When the questionnaire was submitted"}},"type":"object","required":["id","user_id","email"],"title":"LeadQuestionnaire","description":"Lead questionnaire document stored in MongoDB."},"LeadQuestionnaireListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/LeadQuestionnaire"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"skip":{"type":"integer","title":"Skip","default":0},"limit":{"type":"integer","title":"Limit","default":20}},"type":"object","required":["items","total"],"title":"LeadQuestionnaireListResponse","description":"Response model for admin lead questionnaire list."},"LeadQuestionnaireStatus":{"type":"string","enum":["pending","completed"],"title":"LeadQuestionnaireStatus","description":"Lead questionnaire completion status."},"LeadQuestionnaireStatusResponse":{"properties":{"should_show":{"type":"boolean","title":"Should Show","description":"Whether the questionnaire modal should be displayed"}},"type":"object","required":["should_show"],"title":"LeadQuestionnaireStatusResponse","description":"Lightweight response for the status check endpoint."},"LeadQuestionnaireSubmit":{"properties":{"role":{"type":"string","title":"Role","description":"What best describes your role"},"team_size":{"type":"string","title":"Team Size","description":"Engineering team size"},"what_brought_you":{"type":"string","title":"What Brought You","description":"What brought you here today"},"adoption_process":{"type":"string","title":"Adoption Process","description":"How security tools get adopted"},"how_heard":{"type":"string","title":"How Heard","description":"How they heard about Kolega"},"biggest_challenge":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Biggest Challenge","description":"Biggest security challenge (free text)"}},"type":"object","required":["role","team_size","what_brought_you","adoption_process","how_heard"],"title":"LeadQuestionnaireSubmit","description":"Request body for submitting questionnaire answers."},"LinkPRRequest":{"properties":{"pr_url":{"type":"string","title":"Pr Url","description":"URL of the merged pull request"},"notes":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Notes","description":"Optional notes about the resolution"}},"type":"object","required":["pr_url"],"title":"LinkPRRequest","description":"Request model for linking a PR to resolve a finding."},"LinkPRResponse":{"properties":{"finding_id":{"type":"string","title":"Finding Id"},"status":{"$ref":"#/components/schemas/FindingStatus"},"pr_url":{"type":"string","title":"Pr Url"},"resolved_at":{"type":"string","format":"date-time","title":"Resolved At"}},"type":"object","required":["finding_id","status","pr_url","resolved_at"],"title":"LinkPRResponse","description":"Response model for linking a PR to a finding."},"MCPServerConfig":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"type":{"type":"string","enum":["streamable_http","sse"],"title":"Type","default":"streamable_http"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"headers":{"additionalProperties":{"type":"string"},"type":"object","title":"Headers","default":{}},"env":{"additionalProperties":{"type":"string"},"type":"object","title":"Env","default":{}},"auth_type":{"type":"string","enum":["none","headers","oauth"],"title":"Auth Type","default":"none"},"oauth_scopes":{"items":{"type":"string"},"type":"array","title":"Oauth Scopes"},"enabled":{"type":"boolean","title":"Enabled","default":false},"status":{"type":"string","enum":["pending","verified","failed"],"title":"Status","default":"pending"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"command":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Command"},"args":{"items":{"type":"string"},"type":"array","title":"Args","default":[]}},"type":"object","required":["name"],"title":"MCPServerConfig","description":"Configuration for a Model Context Protocol (MCP) server."},"MemberListResponse":{"properties":{"members":{"items":{"$ref":"#/components/schemas/OrganizationMemberResponse"},"type":"array","title":"Members"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["members","total"],"title":"MemberListResponse","description":"Response model for listing organization members."},"Memory":{"properties":{"id":{"type":"string","title":"Id","description":"Unique memory identifier from Funes"},"workspace_id":{"type":"string","title":"Workspace Id","description":"Workspace ID (used as user_id in Funes)"},"memory_type":{"type":"string","enum":["fact","preference","event","action"],"title":"Memory Type","description":"Type of memory"},"content":{"type":"string","title":"Content","description":"Memory content"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Creation timestamp"},"active":{"type":"boolean","title":"Active","description":"Whether memory is active","default":true}},"type":"object","required":["id","workspace_id","memory_type","content","created_at"],"title":"Memory","description":"Memory model representing a stored memory from Funes API."},"MemoryListResponse":{"properties":{"memories":{"items":{"$ref":"#/components/schemas/Memory"},"type":"array","title":"Memories","description":"List of memories"}},"type":"object","title":"MemoryListResponse","description":"Response containing list of memories."},"MemorySuggestion":{"properties":{"memory_type":{"type":"string","enum":["fact","preference","event","action"],"title":"Memory Type","description":"Suggested memory type"},"content":{"type":"string","title":"Content","description":"Suggested memory content"},"rationale":{"type":"string","title":"Rationale","description":"Explanation for why this should be remembered"}},"type":"object","required":["memory_type","content","rationale"],"title":"MemorySuggestion","description":"Memory suggestion from Funes AI."},"MemorySuggestionsResponse":{"properties":{"suggestions":{"items":{"$ref":"#/components/schemas/MemorySuggestion"},"type":"array","title":"Suggestions","description":"List of suggested memories"}},"type":"object","title":"MemorySuggestionsResponse","description":"Response containing memory suggestions."},"Message":{"properties":{"id":{"type":"string","title":"Id","description":"Unique identifier for the message"},"thread_id":{"type":"string","title":"Thread Id","description":"ID of the thread this message belongs to"},"role":{"type":"string","title":"Role","description":"Role of the message sender (user, assistant, system)"},"content":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Content","description":"Structured content of the message"},"attachments":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Attachments","description":"List of attachment URLs or paths"},"sequence_no":{"type":"integer","title":"Sequence No","description":"Sequence number for ordering messages"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp","description":"When the message was created"},"sub_agent_info":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Sub Agent Info","description":"Information about sub-agent if this is a sub-agent message"}},"type":"object","required":["id","thread_id","role","content","sequence_no"],"title":"Message","description":"Represents a single message within a conversation thread."},"ModelPricingCreateRequest":{"properties":{"provider":{"type":"string","title":"Provider","description":"LLM provider (anthropic, openai, google)"},"model":{"type":"string","title":"Model","description":"Model name"},"input_price":{"anyOf":[{"type":"number"},{"type":"string"}],"title":"Input Price","description":"Price per 1M input tokens in USD"},"output_price":{"anyOf":[{"type":"number"},{"type":"string"}],"title":"Output Price","description":"Price per 1M output tokens in USD"},"cache_read_price":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Cache Read Price","description":"Price per 1M cache read tokens in USD"},"cache_write_price":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Cache Write Price","description":"Price per 1M cache write tokens in USD"},"pricing_strategy":{"type":"string","enum":["flat_per_mtok","tiered_per_request"],"title":"Pricing Strategy","description":"Pricing strategy selection","default":"flat_per_mtok"},"tiers":{"anyOf":[{"items":{"$ref":"#/components/schemas/PricingTier-Input"},"type":"array"},{"type":"null"}],"title":"Tiers","description":"List of pricing tiers for tiered_per_request strategy"},"is_active":{"type":"boolean","title":"Is Active","description":"Whether this pricing is currently active","default":true},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes","description":"Notes about pricing changes or special conditions"}},"type":"object","required":["provider","model","input_price","output_price"],"title":"ModelPricingCreateRequest","description":"Request model for creating a new model pricing entry."},"ModelPricingListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ModelPricingResponse"},"type":"array","title":"Items"},"total_count":{"type":"integer","title":"Total Count"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"},"total_pages":{"type":"integer","title":"Total Pages"},"has_next":{"type":"boolean","title":"Has Next"},"has_prev":{"type":"boolean","title":"Has Prev"}},"type":"object","required":["items","total_count","page","page_size","total_pages","has_next","has_prev"],"title":"ModelPricingListResponse","description":"Response model for paginated model pricing list."},"ModelPricingResponse":{"properties":{"id":{"type":"string","title":"Id"},"provider":{"type":"string","title":"Provider"},"model":{"type":"string","title":"Model"},"input_price":{"type":"string","title":"Input Price"},"output_price":{"type":"string","title":"Output Price"},"cache_read_price":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cache Read Price"},"cache_write_price":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cache Write Price"},"pricing_strategy":{"type":"string","enum":["flat_per_mtok","tiered_per_request"],"title":"Pricing Strategy","default":"flat_per_mtok"},"tiers":{"anyOf":[{"items":{"$ref":"#/components/schemas/PricingTier-Output"},"type":"array"},{"type":"null"}],"title":"Tiers"},"is_active":{"type":"boolean","title":"Is Active"},"effective_date":{"type":"string","format":"date-time","title":"Effective Date"},"end_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Date"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["id","provider","model","input_price","output_price","is_active","effective_date","created_at","updated_at"],"title":"ModelPricingResponse","description":"Response model for model pricing."},"ModelPricingUpdateRequest":{"properties":{"input_price":{"anyOf":[{"type":"number"},{"type":"string"}],"title":"Input Price","description":"Price per 1M input tokens in USD"},"output_price":{"anyOf":[{"type":"number"},{"type":"string"}],"title":"Output Price","description":"Price per 1M output tokens in USD"},"cache_read_price":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Cache Read Price","description":"Price per 1M cache read tokens in USD"},"cache_write_price":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Cache Write Price","description":"Price per 1M cache write tokens in USD"},"pricing_strategy":{"type":"string","enum":["flat_per_mtok","tiered_per_request"],"title":"Pricing Strategy","description":"Pricing strategy selection","default":"flat_per_mtok"},"tiers":{"anyOf":[{"items":{"$ref":"#/components/schemas/PricingTier-Input"},"type":"array"},{"type":"null"}],"title":"Tiers","description":"List of pricing tiers for tiered_per_request strategy"},"is_active":{"type":"boolean","title":"Is Active","description":"Whether this pricing is currently active","default":true},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes","description":"Notes about pricing changes or special conditions"}},"type":"object","required":["input_price","output_price"],"title":"ModelPricingUpdateRequest","description":"Request model for updating model pricing (creates new entry with today's effective date)."},"MttrEvidenceItem":{"properties":{"scanType":{"type":"string","title":"Scantype"},"severity":{"type":"string","title":"Severity"},"label":{"type":"string","title":"Label"},"days":{"type":"number","title":"Days"}},"type":"object","required":["scanType","severity","label","days"],"title":"MttrEvidenceItem","description":"MTTR evidence for a scan type + severity."},"NetworkAccessUpdate":{"properties":{"mode":{"type":"string","enum":["deny_all","allow_all","custom"],"title":"Mode","description":"Network access mode"},"allowed_hosts":{"items":{"type":"string"},"type":"array","title":"Allowed Hosts","description":"IPs, CIDRs, or domains to allow (only used when mode=custom)"}},"type":"object","required":["mode"],"title":"NetworkAccessUpdate","description":"Request model for updating sandbox network access settings."},"NotificationListResponse":{"properties":{"notifications":{"items":{"$ref":"#/components/schemas/NotificationResponse"},"type":"array","title":"Notifications"},"unread_count":{"type":"integer","title":"Unread Count","description":"Total count of unread notifications"},"total_count":{"type":"integer","title":"Total Count","description":"Total count of notifications matching the query for pagination"}},"type":"object","required":["notifications","unread_count","total_count"],"title":"NotificationListResponse","description":"Response model for a list of notifications."},"NotificationResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Unique identifier for the notification"},"user_id":{"type":"string","title":"User Id","description":"ID of the user who will receive this notification"},"title":{"type":"string","title":"Title","description":"Title of the notification"},"message":{"type":"string","title":"Message","description":"Content of the notification"},"read":{"type":"boolean","title":"Read","description":"Whether the notification has been read","default":false},"deleted":{"type":"boolean","title":"Deleted","description":"Whether the notification has been soft deleted","default":false},"type":{"$ref":"#/components/schemas/NotificationType","description":"Type of the notification","default":"general"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata for the notification"},"workspace_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspace Id","description":"Optional workspace ID if notification is workspace-specific"},"thread_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thread Id","description":"Optional thread ID if notification is thread-specific"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Creation timestamp"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"Last update timestamp"}},"type":"object","required":["user_id","title","message"],"title":"NotificationResponse","description":"Response model for notification."},"NotificationType":{"type":"string","enum":["general","system","payment","workspace","security","domain"],"title":"NotificationType","description":"Enum for notification types."},"OperationsEvidence":{"properties":{"mttr":{"anyOf":[{"items":{"$ref":"#/components/schemas/MttrEvidenceItem"},"type":"array"},{"type":"null"}],"title":"Mttr"},"platformHealth":{"anyOf":[{"$ref":"#/components/schemas/PlatformHealthEvidence"},{"type":"null"}]}},"type":"object","title":"OperationsEvidence","description":"Operations evidence (MTTR and platform health)."},"OrgGitHubConnectResponse":{"properties":{"authorization_url":{"type":"string","title":"Authorization Url"},"state":{"type":"string","title":"State"}},"type":"object","required":["authorization_url","state"],"title":"OrgGitHubConnectResponse"},"OrgGitHubStatusResponse":{"properties":{"connected":{"type":"boolean","title":"Connected","default":false},"github_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Github Username"},"github_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Github Email"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"connected_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Connected At"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"manage_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Manage Url"},"connected_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Connected By"}},"type":"object","title":"OrgGitHubStatusResponse"},"OrgGitLabConnectResponse":{"properties":{"authorization_url":{"type":"string","title":"Authorization Url"},"state":{"type":"string","title":"State"}},"type":"object","required":["authorization_url","state"],"title":"OrgGitLabConnectResponse"},"OrgGitLabConnectionItem":{"properties":{"gitlab_instance_url":{"type":"string","title":"Gitlab Instance Url"},"gitlab_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gitlab Username"},"gitlab_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gitlab Email"},"connected_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Connected At"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"web_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Web Url"},"connected_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Connected By"}},"type":"object","required":["gitlab_instance_url"],"title":"OrgGitLabConnectionItem"},"OrgGitLabStatusResponse":{"properties":{"connected":{"type":"boolean","title":"Connected","default":false},"connections":{"items":{"$ref":"#/components/schemas/OrgGitLabConnectionItem"},"type":"array","title":"Connections"},"gitlab_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gitlab Username"},"gitlab_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gitlab Email"},"connected_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Connected At"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"web_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Web Url"},"connected_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Connected By"}},"type":"object","title":"OrgGitLabStatusResponse"},"OrgQuotaOverrideCreateRequest":{"properties":{"quota_prs_per_month":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Quota Prs Per Month","description":"PRs per month (-1 = unlimited, null = tier default)"},"quota_sast_scans_per_month":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Quota Sast Scans Per Month","description":"SAST scans per month"},"quota_deep_scans_per_month":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Quota Deep Scans Per Month","description":"Deep scans per month"},"max_repo_lines":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Repo Lines","description":"Max scannable lines"},"max_applications":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Applications","description":"Max applications (-1 = unlimited, null = tier default)"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason","description":"Reason for the override"}},"type":"object","title":"OrgQuotaOverrideCreateRequest","description":"Request model for creating/updating an org quota override."},"OrgQuotaType":{"type":"string","enum":["prs","sast_scans","deep_scans"],"title":"OrgQuotaType"},"OrganizationApiKeyCreateRequest":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name","description":"Human-readable label"}},"type":"object","required":["name"],"title":"OrganizationApiKeyCreateRequest","description":"Request body for creating a new API key."},"OrganizationApiKeyCreateResponse":{"properties":{"id":{"type":"string","title":"Id"},"organization_id":{"type":"string","title":"Organization Id"},"name":{"type":"string","title":"Name"},"key_prefix":{"type":"string","title":"Key Prefix"},"created_by":{"type":"string","title":"Created By"},"created_by_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By Name"},"created_by_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By Email"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revoked At"},"revoked_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Revoked By"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"plaintext_key":{"type":"string","title":"Plaintext Key","description":"Full bearer token. Shown exactly once."}},"type":"object","required":["id","organization_id","name","key_prefix","created_by","created_at","plaintext_key"],"title":"OrganizationApiKeyCreateResponse","description":"Response from POST /organizations/{id}/api-keys.\n\nContains the plaintext key. This is the only place the plaintext is ever\nreturned; subsequent reads return ``OrganizationApiKeyResponse`` only."},"OrganizationApiKeyListResponse":{"properties":{"api_keys":{"items":{"$ref":"#/components/schemas/OrganizationApiKeyResponse"},"type":"array","title":"Api Keys"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["api_keys","total"],"title":"OrganizationApiKeyListResponse","description":"Response for listing organization API keys."},"OrganizationApiKeyResponse":{"properties":{"id":{"type":"string","title":"Id"},"organization_id":{"type":"string","title":"Organization Id"},"name":{"type":"string","title":"Name"},"key_prefix":{"type":"string","title":"Key Prefix"},"created_by":{"type":"string","title":"Created By"},"created_by_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By Name"},"created_by_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By Email"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revoked At"},"revoked_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Revoked By"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"}},"type":"object","required":["id","organization_id","name","key_prefix","created_by","created_at"],"title":"OrganizationApiKeyResponse","description":"Safe API key view returned by list and get. Never includes the plaintext."},"OrganizationCreate":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name","description":"Organization display name"}},"type":"object","required":["name"],"title":"OrganizationCreate","description":"Request model for creating an organization."},"OrganizationListResponse":{"properties":{"organizations":{"items":{"$ref":"#/components/schemas/OrganizationResponse"},"type":"array","title":"Organizations"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["organizations","total"],"title":"OrganizationListResponse","description":"Response model for listing organizations."},"OrganizationMemberResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Unique identifier"},"organization_id":{"type":"string","title":"Organization Id","description":"Organization ID"},"user_id":{"type":"string","title":"User Id","description":"User ID"},"role":{"type":"string","enum":["owner","admin","member","viewer"],"title":"Role","description":"Role within the organization","default":"member"},"invited_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Invited By","description":"User ID who invited this member"},"joined_at":{"type":"string","format":"date-time","title":"Joined At"},"user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email","description":"User email address"},"user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Name","description":"User display name"}},"type":"object","required":["organization_id","user_id"],"title":"OrganizationMemberResponse","description":"Response model for organization member with user details."},"OrganizationProfitResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/OrganizationProfitSummary"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"totals":{"$ref":"#/components/schemas/OrganizationProfitTotals"}},"type":"object","required":["items","total","totals"],"title":"OrganizationProfitResponse","description":"Response for organization profitability endpoint."},"OrganizationProfitSummary":{"properties":{"organization_id":{"type":"string","title":"Organization Id"},"organization_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Name"},"owner_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Email"},"subscription_tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subscription Tier"},"revenue_usd":{"type":"number","title":"Revenue Usd"},"subscription_revenue_usd":{"type":"number","title":"Subscription Revenue Usd"},"topup_revenue_usd":{"type":"number","title":"Topup Revenue Usd"},"llm_cost_usd":{"type":"number","title":"Llm Cost Usd"},"gross_profit_usd":{"type":"number","title":"Gross Profit Usd"},"margin_percent":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Margin Percent"},"scan_count":{"type":"integer","title":"Scan Count"},"fix_count":{"type":"integer","title":"Fix Count"},"request_count":{"type":"integer","title":"Request Count"}},"type":"object","required":["organization_id","revenue_usd","subscription_revenue_usd","topup_revenue_usd","llm_cost_usd","gross_profit_usd","scan_count","fix_count","request_count"],"title":"OrganizationProfitSummary","description":"Profitability summary for a single organization."},"OrganizationProfitTotals":{"properties":{"total_revenue_usd":{"type":"number","title":"Total Revenue Usd"},"total_llm_cost_usd":{"type":"number","title":"Total Llm Cost Usd"},"total_gross_profit_usd":{"type":"number","title":"Total Gross Profit Usd"},"overall_margin_percent":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Overall Margin Percent"}},"type":"object","required":["total_revenue_usd","total_llm_cost_usd","total_gross_profit_usd"],"title":"OrganizationProfitTotals","description":"Aggregate totals across all organizations."},"OrganizationResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Unique identifier"},"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name","description":"Organization display name"},"slug":{"type":"string","title":"Slug","description":"URL-friendly unique identifier","default":""},"created_by":{"type":"string","title":"Created By","description":"User ID of the creator"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"trial_eligible":{"type":"boolean","title":"Trial Eligible","description":"Whether this org is eligible for a free trial","default":true},"member_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Member Count","description":"Number of members in the organization"},"current_user_role":{"anyOf":[{"type":"string","enum":["owner","admin","member","viewer"]},{"type":"null"}],"title":"Current User Role","description":"Current user role in this org"}},"type":"object","required":["name","created_by"],"title":"OrganizationResponse","description":"Response model for organization with additional metadata."},"OrganizationUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Name","description":"Organization display name"}},"type":"object","title":"OrganizationUpdate","description":"Request model for updating an organization."},"PaginationInfo":{"properties":{"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"hasMore":{"type":"boolean","title":"Hasmore"}},"type":"object","required":["total","limit","offset","hasMore"],"title":"PaginationInfo","description":"Pagination information for list responses."},"PlatformHealthEvidence":{"properties":{"scheduledExecuted":{"type":"integer","title":"Scheduledexecuted"},"scheduledExpected":{"type":"integer","title":"Scheduledexpected"},"executionRate":{"type":"number","title":"Executionrate"},"scansSucceeded":{"type":"integer","title":"Scanssucceeded"},"scansFailed":{"type":"integer","title":"Scansfailed"},"successRate":{"type":"number","title":"Successrate"}},"type":"object","required":["scheduledExecuted","scheduledExpected","executionRate","scansSucceeded","scansFailed","successRate"],"title":"PlatformHealthEvidence","description":"Platform health evidence."},"PlatformHealthSummary":{"properties":{"scheduled_scans_executed":{"type":"integer","title":"Scheduled Scans Executed"},"scheduled_scans_expected":{"type":"integer","title":"Scheduled Scans Expected"},"execution_rate_pct":{"type":"number","title":"Execution Rate Pct"},"scans_succeeded":{"type":"integer","title":"Scans Succeeded"},"scans_failed":{"type":"integer","title":"Scans Failed"},"success_rate_pct":{"type":"number","title":"Success Rate Pct"}},"type":"object","required":["scheduled_scans_executed","scheduled_scans_expected","execution_rate_pct","scans_succeeded","scans_failed","success_rate_pct"],"title":"PlatformHealthSummary","description":"Aggregated platform health metrics."},"PrMergeStatus":{"type":"string","enum":["open","merged","closed"],"title":"PrMergeStatus","description":"PR merge status."},"PrScanEngine":{"type":"string","enum":["secrets","semgrep","ai"],"title":"PrScanEngine","description":"Per-repository PR scan engines."},"PrScanMode":{"type":"string","enum":["partial","full"],"title":"PrScanMode","description":"Per-repository PR scan mode."},"PricingTier-Input":{"properties":{"min_input_tokens":{"type":"integer","minimum":0.0,"title":"Min Input Tokens","description":"Inclusive lower bound of input tokens"},"max_input_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Input Tokens","description":"Exclusive upper bound; None = infinity"},"input_price":{"anyOf":[{"type":"number"},{"type":"string"}],"title":"Input Price","description":"Price per 1M input tokens in USD for this tier"},"output_price":{"anyOf":[{"type":"number"},{"type":"string"}],"title":"Output Price","description":"Price per 1M output tokens in USD for this tier"},"cache_read_price":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Cache Read Price"},"cache_write_price":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Cache Write Price"}},"type":"object","required":["min_input_tokens","input_price","output_price"],"title":"PricingTier","description":"Per-request pricing tier definition."},"PricingTier-Output":{"properties":{"min_input_tokens":{"type":"integer","minimum":0.0,"title":"Min Input Tokens","description":"Inclusive lower bound of input tokens"},"max_input_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Input Tokens","description":"Exclusive upper bound; None = infinity"},"input_price":{"type":"string","title":"Input Price","description":"Price per 1M input tokens in USD for this tier"},"output_price":{"type":"string","title":"Output Price","description":"Price per 1M output tokens in USD for this tier"},"cache_read_price":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cache Read Price"},"cache_write_price":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cache Write Price"}},"type":"object","required":["min_input_tokens","input_price","output_price"],"title":"PricingTier","description":"Per-request pricing tier definition."},"ProfileConfidence":{"type":"string","enum":["high","medium","low"],"title":"ProfileConfidence","description":"Confidence level of AI-derived profile."},"PromptDebugRequest":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"agent_type":{"type":"string","title":"Agent Type"},"mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mode"}},"type":"object","required":["workspace_id","agent_type"],"title":"PromptDebugRequest","description":"Request model for prompt debugging."},"PromptDebugResponse":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"agent_type":{"type":"string","title":"Agent Type"},"mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mode"},"template_info":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Template Info"},"integrations":{"items":{"type":"string"},"type":"array","title":"Integrations"},"prompt_length":{"type":"integer","title":"Prompt Length"},"prompt":{"type":"string","title":"Prompt"}},"type":"object","required":["workspace_id","agent_type","mode","template_info","integrations","prompt_length","prompt"],"title":"PromptDebugResponse","description":"Response model for prompt debugging."},"PublicApplicationQuota":{"properties":{"max":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max"},"current":{"type":"integer","title":"Current"}},"type":"object","required":["current"],"title":"PublicApplicationQuota","description":"Application count limit. ``max`` is null when unlimited."},"PublicApplicationRepository":{"properties":{"full_name":{"type":"string","title":"Full Name"},"default_branch":{"type":"string","title":"Default Branch"},"html_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Html Url"},"provider":{"type":"string","title":"Provider"}},"type":"object","required":["full_name","default_branch","provider"],"title":"PublicApplicationRepository","description":"A Git repository attached to an application."},"PublicApplicationResponse":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"repositories":{"items":{"$ref":"#/components/schemas/PublicApplicationRepository"},"type":"array","title":"Repositories"},"archived":{"type":"boolean","title":"Archived"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","name","archived","created_at","updated_at"],"title":"PublicApplicationResponse","description":"A Kolega Comply application — a logical group of repositories scanned together."},"PublicCreatePRRequest":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title","description":"PR title; auto-generated if omitted"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body","description":"PR body in markdown; auto-generated if omitted"},"branch_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Name","description":"Custom branch name; auto-generated if omitted"}},"type":"object","title":"PublicCreatePRRequest","description":"Request body for ``POST /api/v1/fixes/{id}/pull-requests``."},"PublicFindingResponse":{"properties":{"id":{"type":"string","title":"Id"},"application_id":{"type":"string","title":"Application Id"},"check_id":{"type":"string","title":"Check Id"},"severity":{"type":"string","title":"Severity"},"status":{"type":"string","title":"Status"},"file_path":{"type":"string","title":"File Path"},"message":{"type":"string","title":"Message"},"category":{"type":"string","title":"Category"},"scan_type":{"type":"string","title":"Scan Type"},"cwe":{"items":{"type":"string"},"type":"array","title":"Cwe"},"owasp":{"items":{"type":"string"},"type":"array","title":"Owasp"},"references":{"items":{"type":"string"},"type":"array","title":"References"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"},"cvss_base_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cvss Base Score"},"cvss_severity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvss Severity"},"cvss_vector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvss Vector"},"first_detected_at":{"type":"string","format":"date-time","title":"First Detected At"},"last_detected_at":{"type":"string","format":"date-time","title":"Last Detected At"},"resolved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Resolved At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","application_id","check_id","severity","status","file_path","message","category","scan_type","first_detected_at","last_detected_at","created_at","updated_at"],"title":"PublicFindingResponse","description":"Single security finding."},"PublicFindingStatusUpdateRequest":{"properties":{"status":{"$ref":"#/components/schemas/FindingStatus","description":"One of open, resolved, ignored, false_positive, needs_manual_review"}},"type":"object","required":["status"],"title":"PublicFindingStatusUpdateRequest","description":"Request body for ``PATCH /api/v1/findings/{id}``."},"PublicFixCreateRequest":{"properties":{"finding_ids":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Finding Ids"},"title":{"type":"string","maxLength":200,"minLength":1,"title":"Title"},"instructions":{"type":"string","minLength":1,"title":"Instructions"},"source_repo":{"type":"string","title":"Source Repo","description":"Repository full_name (owner/repo)"},"source_repo_provider":{"type":"string","enum":["github","gitlab","azure_devops"],"title":"Source Repo Provider","default":"github"},"source_scan_branch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Scan Branch","description":"Branch the finding was detected on"}},"type":"object","required":["title","instructions","source_repo"],"title":"PublicFixCreateRequest","description":"Request body for ``POST /api/v1/applications/{application_id}/fixes``."},"PublicFixDiffResponse":{"properties":{"fix_id":{"type":"string","title":"Fix Id"},"status":{"type":"string","title":"Status"},"diff":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Diff"}},"type":"object","required":["fix_id","status"],"title":"PublicFixDiffResponse","description":"Diff for a fix. Returns ``diff=None`` while the fix is still running."},"PublicFixProgressResponse":{"properties":{"fix_id":{"type":"string","title":"Fix Id"},"application_id":{"type":"string","title":"Application Id"},"status":{"type":"string","title":"Status"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"},"duration_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration Seconds"},"agent_steps_completed":{"type":"integer","title":"Agent Steps Completed","default":0},"latest_activity_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Latest Activity At"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"}},"type":"object","required":["fix_id","application_id","status"],"title":"PublicFixProgressResponse","description":"Minimal heartbeat for a running fix.\n\nDeliberately does not include agent message content or tool-call details\n— those are internals that would pin the public contract to the agent\nimplementation. Clients get status, timings, and an activity pulse."},"PublicFixPullRequestSummary":{"properties":{"repo_full_name":{"type":"string","title":"Repo Full Name"},"branch_name":{"type":"string","title":"Branch Name"},"pr_number":{"type":"integer","title":"Pr Number"},"pr_url":{"type":"string","title":"Pr Url"},"merge_status":{"type":"string","title":"Merge Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"merged_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Merged At"}},"type":"object","required":["repo_full_name","branch_name","pr_number","pr_url","merge_status","created_at"],"title":"PublicFixPullRequestSummary","description":"A pull request created from a fix."},"PublicFixResponse":{"properties":{"id":{"type":"string","title":"Id"},"application_id":{"type":"string","title":"Application Id"},"finding_ids":{"items":{"type":"string"},"type":"array","title":"Finding Ids"},"title":{"type":"string","title":"Title"},"status":{"type":"string","title":"Status"},"source_repo":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Repo"},"source_repo_provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Repo Provider"},"source_scan_branch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Scan Branch"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"pull_requests":{"items":{"$ref":"#/components/schemas/PublicFixPullRequestSummary"},"type":"array","title":"Pull Requests"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"}},"type":"object","required":["id","application_id","finding_ids","title","status","created_at"],"title":"PublicFixResponse","description":"Single AI-generated fix."},"PublicPaginatedResponse_PublicApplicationResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/PublicApplicationResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"skip":{"type":"integer","title":"Skip"},"has_next":{"type":"boolean","title":"Has Next"}},"type":"object","required":["items","total","limit","skip","has_next"],"title":"PublicPaginatedResponse[PublicApplicationResponse]"},"PublicPaginatedResponse_PublicFindingResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/PublicFindingResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"skip":{"type":"integer","title":"Skip"},"has_next":{"type":"boolean","title":"Has Next"}},"type":"object","required":["items","total","limit","skip","has_next"],"title":"PublicPaginatedResponse[PublicFindingResponse]"},"PublicPaginatedResponse_PublicFixResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/PublicFixResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"skip":{"type":"integer","title":"Skip"},"has_next":{"type":"boolean","title":"Has Next"}},"type":"object","required":["items","total","limit","skip","has_next"],"title":"PublicPaginatedResponse[PublicFixResponse]"},"PublicPaginatedResponse_PublicScanBatchResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/PublicScanBatchResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"skip":{"type":"integer","title":"Skip"},"has_next":{"type":"boolean","title":"Has Next"}},"type":"object","required":["items","total","limit","skip","has_next"],"title":"PublicPaginatedResponse[PublicScanBatchResponse]"},"PublicPullRequestsCreatedResponse":{"properties":{"fix_id":{"type":"string","title":"Fix Id"},"pull_requests":{"items":{"$ref":"#/components/schemas/PublicFixPullRequestSummary"},"type":"array","title":"Pull Requests"}},"type":"object","required":["fix_id","pull_requests"],"title":"PublicPullRequestsCreatedResponse","description":"Response from creating PRs on a fix."},"PublicQuotaBalanceResponse":{"properties":{"period_start":{"type":"string","format":"date-time","title":"Period Start"},"period_end":{"type":"string","format":"date-time","title":"Period End"},"prs":{"$ref":"#/components/schemas/PublicQuotaCounter"},"sast_scans":{"$ref":"#/components/schemas/PublicQuotaCounter"},"deep_ai_scans":{"$ref":"#/components/schemas/PublicQuotaCounter"},"applications":{"$ref":"#/components/schemas/PublicApplicationQuota"}},"type":"object","required":["period_start","period_end","prs","sast_scans","deep_ai_scans","applications"],"title":"PublicQuotaBalanceResponse","description":"Current-period quota balance for the calling organization."},"PublicQuotaCounter":{"properties":{"plan":{"type":"integer","title":"Plan"},"topup":{"type":"integer","title":"Topup"},"used":{"type":"integer","title":"Used"},"remaining":{"type":"integer","title":"Remaining"}},"type":"object","required":["plan","topup","used","remaining"],"title":"PublicQuotaCounter","description":"Per-quota-type counters within the current billing period."},"PublicScanBatchResponse":{"properties":{"batch_id":{"type":"string","title":"Batch Id"},"application_id":{"type":"string","title":"Application Id"},"scan_type":{"type":"string","title":"Scan Type"},"status":{"type":"string","title":"Status"},"total_repositories":{"type":"integer","title":"Total Repositories"},"scans_created":{"type":"integer","title":"Scans Created"},"scans_failed":{"type":"integer","title":"Scans Failed"},"scans_completed":{"type":"integer","title":"Scans Completed"},"scans_assessed":{"type":"integer","title":"Scans Assessed"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"}},"type":"object","required":["batch_id","application_id","scan_type","status","total_repositories","scans_created","scans_failed","scans_completed","scans_assessed","created_at"],"title":"PublicScanBatchResponse","description":"Scan batch — a single ``POST /api/v1/scans`` may fan out into many\nrepository scans, all grouped under one batch."},"PublicScanCreateRequest":{"properties":{"scan_type":{"$ref":"#/components/schemas/ScanType","description":"One of secrets_scan, semgrep_scan, deep_ai_scan"}},"type":"object","required":["scan_type"],"title":"PublicScanCreateRequest","description":"Request body for ``POST /api/v1/applications/{application_id}/scans``."},"PublicScanFindingSummary":{"properties":{"check_id":{"type":"string","title":"Check Id"},"file_path":{"type":"string","title":"File Path"},"severity":{"type":"string","title":"Severity"},"message":{"type":"string","title":"Message"},"cwe":{"items":{"type":"string"},"type":"array","title":"Cwe"},"owasp":{"items":{"type":"string"},"type":"array","title":"Owasp"},"fingerprint":{"type":"string","title":"Fingerprint"}},"type":"object","required":["check_id","file_path","severity","message","fingerprint"],"title":"PublicScanFindingSummary","description":"Lightweight finding summary used in ``GET /api/v1/scans/{id}/results``."},"PublicScanProgressRepository":{"properties":{"repository":{"type":"string","title":"Repository"},"branch":{"type":"string","title":"Branch"},"status":{"type":"string","title":"Status"},"status_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Reason"},"findings_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Findings Count"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"}},"type":"object","required":["repository","branch","status"],"title":"PublicScanProgressRepository","description":"A single repository's scan state within a batch's progress view."},"PublicScanProgressResponse":{"properties":{"batch_id":{"type":"string","title":"Batch Id"},"application_id":{"type":"string","title":"Application Id"},"scan_type":{"type":"string","title":"Scan Type"},"status":{"type":"string","title":"Status"},"total_repositories":{"type":"integer","title":"Total Repositories"},"scans_created":{"type":"integer","title":"Scans Created"},"scans_failed":{"type":"integer","title":"Scans Failed"},"scans_completed":{"type":"integer","title":"Scans Completed"},"scans_assessed":{"type":"integer","title":"Scans Assessed"},"percent_complete":{"type":"number","title":"Percent Complete"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"repositories":{"items":{"$ref":"#/components/schemas/PublicScanProgressRepository"},"type":"array","title":"Repositories"}},"type":"object","required":["batch_id","application_id","scan_type","status","total_repositories","scans_created","scans_failed","scans_completed","scans_assessed","percent_complete"],"title":"PublicScanProgressResponse","description":"Batch-level progress + per-repository breakdown. The primary polling\nendpoint for CLI clients running a live progress view."},"PublicScanResultsResponse":{"properties":{"batch_id":{"type":"string","title":"Batch Id"},"scan_type":{"type":"string","title":"Scan Type"},"status":{"type":"string","title":"Status"},"findings_count":{"type":"integer","title":"Findings Count"},"findings":{"items":{"$ref":"#/components/schemas/PublicScanFindingSummary"},"type":"array","title":"Findings"}},"type":"object","required":["batch_id","scan_type","status","findings_count","findings"],"title":"PublicScanResultsResponse","description":"Aggregated results from every repository scan in a batch.\n\nIndividual per-repository results are no longer part of the public\ncontract — a consumer that wants to slice by repo should query\n``GET /findings?scan_batch_id=…`` (once that filter is exposed) or the\n``/progress`` endpoint on the batch."},"QuotaBalanceResponse":{"properties":{"period_start":{"type":"string","format":"date-time","title":"Period Start"},"period_end":{"type":"string","format":"date-time","title":"Period End"},"plan_prs":{"type":"integer","title":"Plan Prs"},"topup_prs":{"type":"integer","title":"Topup Prs"},"used_prs":{"type":"integer","title":"Used Prs"},"remaining_prs":{"type":"integer","title":"Remaining Prs"},"plan_sast_scans":{"type":"integer","title":"Plan Sast Scans"},"topup_sast_scans":{"type":"integer","title":"Topup Sast Scans"},"used_sast_scans":{"type":"integer","title":"Used Sast Scans"},"remaining_sast_scans":{"type":"integer","title":"Remaining Sast Scans"},"plan_deep_scans":{"type":"integer","title":"Plan Deep Scans"},"topup_deep_scans":{"type":"integer","title":"Topup Deep Scans"},"used_deep_scans":{"type":"integer","title":"Used Deep Scans"},"remaining_deep_scans":{"type":"integer","title":"Remaining Deep Scans"},"max_applications":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Applications"},"current_applications":{"type":"integer","title":"Current Applications","default":0}},"type":"object","required":["period_start","period_end","plan_prs","topup_prs","used_prs","remaining_prs","plan_sast_scans","topup_sast_scans","used_sast_scans","remaining_sast_scans","plan_deep_scans","topup_deep_scans","used_deep_scans","remaining_deep_scans"],"title":"QuotaBalanceResponse"},"QuotaTopupRequest":{"properties":{"quota_type":{"$ref":"#/components/schemas/OrgQuotaType"},"units":{"type":"integer","maximum":1000.0,"exclusiveMinimum":0.0,"title":"Units","description":"Units to purchase"},"save_payment_method":{"type":"boolean","title":"Save Payment Method","description":"Save card for future use","default":true}},"type":"object","required":["quota_type","units"],"title":"QuotaTopupRequest"},"QuotaTopupResponse":{"properties":{"payment_url":{"type":"string","title":"Payment Url"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"amount":{"type":"string","title":"Amount"}},"type":"object","required":["payment_url","expires_at","amount"],"title":"QuotaTopupResponse"},"RejectedMemory":{"properties":{"id":{"type":"string","title":"Id","description":"Unique rejected memory identifier from Funes"},"workspace_id":{"type":"string","title":"Workspace Id","description":"Workspace ID (used as user_id in Funes)"},"memory_type":{"type":"string","enum":["fact","preference","event","action"],"title":"Memory Type","description":"Type of memory"},"content":{"type":"string","title":"Content","description":"Rejected memory content"},"normalized_content":{"type":"string","title":"Normalized Content","description":"Normalized content for deduplication"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason","description":"Reason for rejection"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Creation timestamp"}},"type":"object","required":["id","workspace_id","memory_type","content","normalized_content","created_at"],"title":"RejectedMemory","description":"Rejected memory model from Funes API."},"RejectedMemoryListResponse":{"properties":{"rejected_memories":{"items":{"$ref":"#/components/schemas/RejectedMemory"},"type":"array","title":"Rejected Memories","description":"List of rejected memories"}},"type":"object","title":"RejectedMemoryListResponse","description":"Response containing list of rejected memories."},"RepoEnvironmentVariableCreate":{"properties":{"name":{"type":"string","title":"Name","description":"Environment variable name"},"value":{"type":"string","title":"Value","description":"The value to store"},"is_encrypted":{"type":"boolean","title":"Is Encrypted","description":"Whether to encrypt the value","default":false},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description","description":"Optional description"}},"type":"object","required":["name","value"],"title":"RepoEnvironmentVariableCreate","description":"Request model for creating a repository environment variable."},"RepoEnvironmentVariableResponse":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Value","description":"Plain text value (null for encrypted vars)"},"is_encrypted":{"type":"boolean","title":"Is Encrypted"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["id","name","is_encrypted"],"title":"RepoEnvironmentVariableResponse","description":"Response model for repository environment variables."},"RepoEnvironmentVariableUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"New environment variable name"},"value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Value","description":"New value"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description","description":"New description"},"is_encrypted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Encrypted","description":"Change encryption (requires value)"}},"type":"object","title":"RepoEnvironmentVariableUpdate","description":"Request model for updating a repository environment variable."},"RepositorySandboxConfigResponse":{"properties":{"id":{"type":"string","title":"Id"},"application_id":{"type":"string","title":"Application Id"},"repository_full_name":{"type":"string","title":"Repository Full Name"},"environment_variables":{"items":{"$ref":"#/components/schemas/RepoEnvironmentVariableResponse"},"type":"array","title":"Environment Variables"},"setup_script":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Setup Script"},"network_access":{"$ref":"#/components/schemas/SandboxNetworkAccess"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","application_id","repository_full_name","environment_variables"],"title":"RepositorySandboxConfigResponse","description":"Response model for repository sandbox config."},"SandboxNetworkAccess":{"properties":{"mode":{"type":"string","enum":["deny_all","allow_all","custom"],"title":"Mode","description":"deny_all = no internet, allow_all = unrestricted, custom = allowlist only","default":"deny_all"},"allowed_hosts":{"items":{"type":"string"},"type":"array","title":"Allowed Hosts","description":"IPs, CIDRs, or domains to allow when mode=custom"}},"type":"object","title":"SandboxNetworkAccess","description":"Network access configuration for E2B sandboxes."},"Scan":{"properties":{"id":{"type":"string","title":"Id","description":"Unique identifier for the scan"},"batch_id":{"type":"string","title":"Batch Id","description":"Groups scans triggered together"},"application_id":{"type":"string","title":"Application Id","description":"Application this scan belongs to"},"organization_id":{"type":"string","title":"Organization Id","description":"Organization for access control"},"repository_full_name":{"type":"string","title":"Repository Full Name","description":"e.g., 'owner/repo'"},"repository_url":{"type":"string","title":"Repository Url","description":"e.g., 'https://github.com/owner/repo'"},"branch":{"type":"string","title":"Branch","description":"Branch being scanned (default branch)"},"commit_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Commit Hash","description":"Git commit SHA that was scanned"},"scan_type":{"$ref":"#/components/schemas/ScanType","description":"Type of scan: SECRETS_SCAN, SEMGREP_SCAN, or DEEP_AI_SCAN"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata","description":"Optional scan metadata for orchestration context"},"celery_task_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Celery Task Id","description":"Celery task ID for the scan worker"},"chunking_thread_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chunking Thread Id","description":"Thread ID for chunking agent trajectory (deep_ai_scan)"},"status":{"$ref":"#/components/schemas/ScanStatus","description":"Current scan status"},"status_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Reason","description":"Reason for failure"},"findings_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Findings Count","description":"Number of findings (populated after completion)"},"total_lines":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Lines","description":"Total lines of scannable code (deep_ai_scan)"},"created_by":{"type":"string","title":"Created By","description":"User ID who triggered the scan"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At","description":"When the scan completed"}},"type":"object","required":["batch_id","application_id","organization_id","repository_full_name","repository_url","branch","scan_type","status","created_by"],"title":"Scan","description":"Represents a single repository scan within an application."},"ScanBatch":{"properties":{"id":{"type":"string","title":"Id","description":"Batch ID"},"application_id":{"type":"string","title":"Application Id","description":"Application being scanned"},"organization_id":{"type":"string","title":"Organization Id","description":"Organization for access control"},"scan_type":{"type":"string","title":"Scan Type","description":"Type of scan: secrets_scan, semgrep_scan, or deep_ai_scan"},"status":{"$ref":"#/components/schemas/ScanBatchStatus","default":"queued"},"total_repositories":{"type":"integer","title":"Total Repositories","description":"Total repos to scan"},"scans_created":{"type":"integer","title":"Scans Created","description":"Scans successfully created","default":0},"scans_failed":{"type":"integer","title":"Scans Failed","description":"Repos that failed to scan","default":0},"scans_completed":{"type":"integer","title":"Scans Completed","description":"Scans that have finished running","default":0},"scans_assessed":{"type":"integer","title":"Scans Assessed","description":"Scans whose findings have been assessed","default":0},"created_by":{"type":"string","title":"Created By","description":"User who triggered the batch"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At","description":"When processing began"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At","description":"When processing finished"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message","description":"Batch-level error message"},"failed_repositories":{"items":{"type":"string"},"type":"array","title":"Failed Repositories","description":"List of failed repo names"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata","description":"Optional batch metadata for orchestrators"}},"type":"object","required":["application_id","organization_id","scan_type","total_repositories","created_by"],"title":"ScanBatch","description":"Represents a batch of repository scans triggered together."},"ScanBatchCreateResponse":{"properties":{"batch_id":{"type":"string","title":"Batch Id"},"status":{"type":"string","title":"Status"},"total_repositories":{"type":"integer","title":"Total Repositories"},"message":{"type":"string","title":"Message"}},"type":"object","required":["batch_id","status","total_repositories","message"],"title":"ScanBatchCreateResponse","description":"Response model for async scan batch creation."},"ScanBatchListResponse":{"properties":{"batches":{"items":{"$ref":"#/components/schemas/ScanBatchWithBreakdown"},"type":"array","title":"Batches"},"queued_batches":{"items":{"$ref":"#/components/schemas/ScanBatch"},"type":"array","title":"Queued Batches"},"total_scans":{"type":"integer","title":"Total Scans"},"total_batches":{"type":"integer","title":"Total Batches"},"limit":{"type":"integer","title":"Limit"},"skip":{"type":"integer","title":"Skip"},"has_next":{"type":"boolean","title":"Has Next"},"stats":{"$ref":"#/components/schemas/ScanStatsResponse"}},"type":"object","required":["batches","queued_batches","total_scans","total_batches","limit","skip","has_next","stats"],"title":"ScanBatchListResponse","description":"Response model for listing scan batches (metadata only, no scans)."},"ScanBatchStatus":{"type":"string","enum":["queued","creating_scans","scanning","assessing","completed","partial_failure","failed"],"title":"ScanBatchStatus","description":"Status of a scan batch.\n\nLifecycle:\n- QUEUED: Batch created, waiting to be picked up\n- CREATING_SCANS: Creating scan jobs for each repository\n- SCANNING: Scans are running\n- ASSESSING: AI assessment in progress\n- COMPLETED: All scans and assessments complete\n- PARTIAL_FAILURE: Some scans failed, but process completed\n- FAILED: Batch-level failure"},"ScanBatchWithBreakdown":{"properties":{"id":{"type":"string","title":"Id","description":"Batch ID"},"application_id":{"type":"string","title":"Application Id","description":"Application being scanned"},"organization_id":{"type":"string","title":"Organization Id","description":"Organization for access control"},"scan_type":{"type":"string","title":"Scan Type","description":"Type of scan: secrets_scan, semgrep_scan, or deep_ai_scan"},"status":{"$ref":"#/components/schemas/ScanBatchStatus","default":"queued"},"total_repositories":{"type":"integer","title":"Total Repositories","description":"Total repos to scan"},"scans_created":{"type":"integer","title":"Scans Created","description":"Scans successfully created","default":0},"scans_failed":{"type":"integer","title":"Scans Failed","description":"Repos that failed to scan","default":0},"scans_completed":{"type":"integer","title":"Scans Completed","description":"Scans that have finished running","default":0},"scans_assessed":{"type":"integer","title":"Scans Assessed","description":"Scans whose findings have been assessed","default":0},"created_by":{"type":"string","title":"Created By","description":"User who triggered the batch"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At","description":"When processing began"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At","description":"When processing finished"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message","description":"Batch-level error message"},"failed_repositories":{"items":{"type":"string"},"type":"array","title":"Failed Repositories","description":"List of failed repo names"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata","description":"Optional batch metadata for orchestrators"},"status_breakdown":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Status Breakdown","description":"Scan counts by status (e.g., {'pending': 2, 'succeeded': 5})"}},"type":"object","required":["application_id","organization_id","scan_type","total_repositories","created_by"],"title":"ScanBatchWithBreakdown","description":"ScanBatch with computed status breakdown for API responses.\n\nExtends ScanBatch with a status_breakdown field containing scan counts by status.\nUsed in list views to show batch progress without fetching all scans."},"ScanCostSummary":{"properties":{"scan_id":{"type":"string","title":"Scan Id"},"scan_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scan Type"},"repository_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Repository Name"},"total_cost_usd":{"type":"number","title":"Total Cost Usd"},"total_tokens":{"type":"integer","title":"Total Tokens"},"input_tokens":{"type":"integer","title":"Input Tokens"},"output_tokens":{"type":"integer","title":"Output Tokens"},"request_count":{"type":"integer","title":"Request Count"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"}},"type":"object","required":["scan_id","total_cost_usd","total_tokens","input_tokens","output_tokens","request_count"],"title":"ScanCostSummary","description":"Summary of LLM costs for a single scan."},"ScanCostsResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ScanCostSummary"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"total_cost_usd":{"type":"number","title":"Total Cost Usd"}},"type":"object","required":["items","total","total_cost_usd"],"title":"ScanCostsResponse","description":"Response for scan costs endpoint."},"ScanCreateRequest":{"properties":{"application_id":{"type":"string","title":"Application Id"},"scan_type":{"$ref":"#/components/schemas/ScanType"}},"type":"object","required":["application_id","scan_type"],"title":"ScanCreateRequest","description":"Request model for creating scans."},"ScanSchedule":{"properties":{"id":{"type":"string","title":"Id"},"organization_id":{"type":"string","title":"Organization Id","description":"Organization for access control"},"application_id":{"type":"string","title":"Application Id","description":"Application to scan"},"scan_type":{"$ref":"#/components/schemas/ScanType","description":"Type of scan to schedule"},"cron_expression":{"type":"string","title":"Cron Expression","description":"Cron expression (minute hour day month day-of-week)"},"enabled":{"type":"boolean","title":"Enabled","description":"Whether the schedule is active","default":true},"next_run_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Next Run At","description":"Next scheduled run time (UTC)"},"last_run_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Run At","description":"Last attempted run time (UTC)"},"last_batch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Batch Id","description":"Most recent scan batch ID"},"last_run_status":{"anyOf":[{"$ref":"#/components/schemas/ScanScheduleRunStatus"},{"type":"null"}],"description":"Last scheduler attempt status"},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error","description":"Last scheduler error message"},"created_by":{"type":"string","title":"Created By","description":"User ID who created the schedule"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["organization_id","application_id","scan_type","cron_expression","created_by"],"title":"ScanSchedule","description":"Represents a recurring scan schedule for an application."},"ScanScheduleListResponse":{"properties":{"schedules":{"items":{"$ref":"#/components/schemas/ScanSchedule"},"type":"array","title":"Schedules"},"timezone":{"type":"string","title":"Timezone"}},"type":"object","required":["schedules","timezone"],"title":"ScanScheduleListResponse","description":"Response model for listing scan schedules."},"ScanScheduleRunStatus":{"type":"string","enum":["triggered","skipped","failed"],"title":"ScanScheduleRunStatus","description":"Status of the last scheduler attempt."},"ScanScheduleUpsertRequest":{"properties":{"cron_expression":{"type":"string","title":"Cron Expression","description":"Cron expression for scheduling"},"enabled":{"type":"boolean","title":"Enabled","description":"Whether the schedule is active","default":true}},"type":"object","required":["cron_expression"],"title":"ScanScheduleUpsertRequest","description":"Request model for creating or updating a scan schedule."},"ScanStatsResponse":{"properties":{"pending":{"type":"integer","title":"Pending","default":0},"running":{"type":"integer","title":"Running","default":0},"succeeded":{"type":"integer","title":"Succeeded","default":0},"failed":{"type":"integer","title":"Failed","default":0},"total":{"type":"integer","title":"Total","default":0}},"type":"object","title":"ScanStatsResponse","description":"Aggregated statistics by scan status."},"ScanStatus":{"type":"string","enum":["pending","running","succeeded","failed"],"title":"ScanStatus","description":"Valid scan status values."},"ScanType":{"type":"string","enum":["secrets_scan","semgrep_scan","deep_ai_scan"],"title":"ScanType","description":"Available scan types for repository security scanning."},"ScanTypeBreakdown":{"properties":{"adherence_pct":{"type":"integer","title":"Adherence Pct"},"total":{"type":"integer","title":"Total"},"within_sla":{"type":"integer","title":"Within Sla"}},"type":"object","required":["adherence_pct","total","within_sla"],"title":"ScanTypeBreakdown","description":"SLA adherence breakdown for a single scan type."},"ScopeInfo":{"properties":{"application_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Application Ids"},"application_count":{"type":"integer","title":"Application Count"},"repository_count":{"type":"integer","title":"Repository Count"}},"type":"object","required":["application_ids","application_count","repository_count"],"title":"ScopeInfo","description":"Scope information about what's included in the metrics."},"Score":{"properties":{"passing":{"type":"integer","title":"Passing"},"total":{"type":"integer","title":"Total"},"percentage":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Percentage"}},"type":"object","required":["passing","total"],"title":"Score","description":"Score information for passing/total counts."},"SelfHostedOAuthConnectRequest":{"properties":{"instance_url":{"type":"string","title":"Instance Url","description":"GitLab instance base URL (e.g. https://gitlab.mycompany.com)"},"oauth_application_id":{"type":"string","title":"Oauth Application Id","description":"OAuth Application ID from the instance"},"oauth_application_secret":{"type":"string","title":"Oauth Application Secret","description":"OAuth Application Secret from the instance"}},"type":"object","required":["instance_url","oauth_application_id","oauth_application_secret"],"title":"SelfHostedOAuthConnectRequest"},"SetupScriptUpdate":{"properties":{"setup_script":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Setup Script","description":"Shell script content (null to clear)"}},"type":"object","title":"SetupScriptUpdate","description":"Request model for updating the setup script."},"SeverityBreakdown":{"properties":{"adherence_pct":{"type":"integer","title":"Adherence Pct"},"total":{"type":"integer","title":"Total"},"within_sla":{"type":"integer","title":"Within Sla"}},"type":"object","required":["adherence_pct","total","within_sla"],"title":"SeverityBreakdown","description":"SLA adherence breakdown for a single severity level."},"SlaConfig":{"properties":{"id":{"type":"string","title":"Id"},"organization_id":{"type":"string","title":"Organization Id","description":"Organization ID"},"version":{"type":"integer","title":"Version","description":"Monotonic version number"},"effective_at":{"type":"string","format":"date-time","title":"Effective At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"created_by":{"type":"string","title":"Created By","description":"User ID who created this version"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes","description":"Change notes"},"rules":{"items":{"$ref":"#/components/schemas/SlaRule"},"type":"array","title":"Rules"}},"type":"object","required":["organization_id","version","created_by"],"title":"SlaConfig","description":"Versioned SLA configuration for an organization."},"SlaConfigHistoryResponse":{"properties":{"current":{"anyOf":[{"$ref":"#/components/schemas/SlaConfig"},{"type":"null"}]},"history":{"anyOf":[{"items":{"$ref":"#/components/schemas/SlaConfig"},"type":"array"},{"type":"null"}],"title":"History"}},"type":"object","required":["current"],"title":"SlaConfigHistoryResponse","description":"Response model for SLA config with optional history."},"SlaConfigUpdateRequest":{"properties":{"effective_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Effective At","description":"When the config becomes effective"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"rules":{"items":{"$ref":"#/components/schemas/SlaRule"},"type":"array","title":"Rules"}},"type":"object","title":"SlaConfigUpdateRequest","description":"Request model for creating a new SLA configuration version."},"SlaReportBucket":{"properties":{"bucket_start":{"type":"string","format":"date","title":"Bucket Start"},"bucket_end":{"type":"string","format":"date","title":"Bucket End"},"total_cycles":{"type":"integer","title":"Total Cycles"},"within_sla":{"type":"integer","title":"Within Sla"},"breached":{"type":"integer","title":"Breached"}},"type":"object","required":["bucket_start","bucket_end","total_cycles","within_sla","breached"],"title":"SlaReportBucket","description":"Time bucket for SLA adherence."},"SlaReportDaily":{"properties":{"id":{"type":"string","title":"Id"},"organization_id":{"type":"string","title":"Organization Id","description":"Organization ID"},"report_date":{"type":"string","format":"date","title":"Report Date","description":"The date this report was generated for"},"window_start":{"type":"string","format":"date-time","title":"Window Start","description":"Start of report window"},"window_end":{"type":"string","format":"date-time","title":"Window End","description":"End of report window"},"summary":{"$ref":"#/components/schemas/SlaReportSummary","description":"Summary statistics"},"buckets":{"items":{"$ref":"#/components/schemas/SlaReportBucket"},"type":"array","title":"Buckets","description":"Time buckets"},"generated_at":{"type":"string","format":"date-time","title":"Generated At","description":"When this report was generated"}},"type":"object","required":["organization_id","report_date","window_start","window_end","summary"],"title":"SlaReportDaily","description":"Pre-generated daily SLA report stored in MongoDB."},"SlaReportHistoryResponse":{"properties":{"latest":{"anyOf":[{"$ref":"#/components/schemas/SlaReportDaily"},{"type":"null"}],"description":"Most recent daily report"},"historical":{"items":{"$ref":"#/components/schemas/SlaReportDaily"},"type":"array","title":"Historical","description":"Historical reports (newest to oldest)"}},"type":"object","title":"SlaReportHistoryResponse","description":"Response model for SLA report with optional history."},"SlaReportSummary":{"properties":{"total_cycles":{"type":"integer","title":"Total Cycles"},"within_sla":{"type":"integer","title":"Within Sla"},"breached":{"type":"integer","title":"Breached"},"unresolved_breaches":{"type":"integer","title":"Unresolved Breaches"},"missing_sla":{"type":"integer","title":"Missing Sla"},"average_resolution_business_days":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Average Resolution Business Days"},"median_resolution_business_days":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Median Resolution Business Days"}},"type":"object","required":["total_cycles","within_sla","breached","unresolved_breaches","missing_sla"],"title":"SlaReportSummary","description":"Summary statistics for SLA adherence."},"SlaRule":{"properties":{"scan_type":{"type":"string","title":"Scan Type","description":"Scan type (semgrep_scan, secrets_scan, deep_ai_scan)"},"severity":{"$ref":"#/components/schemas/FindingSeverity","description":"Finding severity"},"target_business_days":{"type":"integer","minimum":0.0,"title":"Target Business Days","description":"Allowed business days to resolution"}},"type":"object","required":["scan_type","severity","target_business_days"],"title":"SlaRule","description":"SLA rule for a scan type and severity."},"SubscriptionCreateRequest":{"properties":{"tier_name":{"type":"string","title":"Tier Name","description":"Subscription tier name"},"payment_method_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Method Id","description":"Saved payment method ID"}},"type":"object","required":["tier_name"],"title":"SubscriptionCreateRequest"},"SubscriptionResponse":{"properties":{"id":{"type":"string","title":"Id"},"tier_name":{"type":"string","title":"Tier Name"},"status":{"$ref":"#/components/schemas/SubscriptionStatus"},"monthly_price":{"type":"string","title":"Monthly Price"},"current_period_end":{"type":"string","format":"date-time","title":"Current Period End"},"next_billing_date":{"type":"string","format":"date-time","title":"Next Billing Date"},"cancelled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Cancelled At"}},"type":"object","required":["id","tier_name","status","monthly_price","current_period_end","next_billing_date"],"title":"SubscriptionResponse"},"SubscriptionStatus":{"type":"string","enum":["active","cancelled","past_due","paused","trial"],"title":"SubscriptionStatus"},"SubscriptionTierCreateRequest":{"properties":{"description":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Description","description":"Tier description"},"display_name":{"type":"string","maxLength":120,"minLength":1,"title":"Display Name","description":"Human-readable tier name"},"features":{"items":{"type":"string"},"type":"array","title":"Features","description":"List of features"},"is_active":{"type":"boolean","title":"Is Active","description":"Whether tier is available","default":true},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata","description":"Additional metadata"},"name":{"type":"string","maxLength":50,"minLength":1,"title":"Name","description":"Tier name (creator, pro, etc.)"},"price":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string"}],"title":"Price","description":"Monthly price in USD"},"sort_order":{"type":"integer","title":"Sort Order","description":"Display order","default":0}},"type":"object","required":["display_name","name","price"],"title":"SubscriptionTierCreateRequest","description":"Request model for creating a subscription tier"},"SubscriptionTierDeleteResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"},"usage_stats":{"anyOf":[{"$ref":"#/components/schemas/SubscriptionTierUsageStats"},{"type":"null"}]}},"type":"object","required":["success","message"],"title":"SubscriptionTierDeleteResponse","description":"Response model for subscription tier deletion"},"SubscriptionTierListResponse":{"properties":{"tiers":{"items":{"$ref":"#/components/schemas/SubscriptionTierResponse"},"type":"array","title":"Tiers"},"total_count":{"type":"integer","title":"Total Count"}},"type":"object","required":["tiers","total_count"],"title":"SubscriptionTierListResponse","description":"Response model for subscription tier list"},"SubscriptionTierResponse":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"display_name":{"type":"string","title":"Display Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"price":{"type":"string","title":"Price"},"features":{"items":{"type":"string"},"type":"array","title":"Features"},"is_active":{"type":"boolean","title":"Is Active"},"is_default":{"type":"boolean","title":"Is Default"},"sort_order":{"type":"integer","title":"Sort Order"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","name","display_name","description","price","features","is_active","is_default","sort_order","metadata","created_at","updated_at"],"title":"SubscriptionTierResponse","description":"Response model for subscription tier"},"SubscriptionTierUpdateRequest":{"properties":{"display_name":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Display Name","description":"Human-readable tier name"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description","description":"Tier description"},"price":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string"},{"type":"null"}],"title":"Price","description":"Monthly price in USD"},"features":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Features","description":"List of features"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active","description":"Whether tier is available"},"sort_order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sort Order","description":"Display order"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Additional metadata"}},"type":"object","title":"SubscriptionTierUpdateRequest","description":"Request model for updating a subscription tier"},"SubscriptionTierUsageStats":{"properties":{"tier_id":{"type":"string","title":"Tier Id"},"tier_name":{"type":"string","title":"Tier Name"},"total_subscriptions":{"type":"integer","title":"Total Subscriptions"},"active_subscriptions":{"type":"integer","title":"Active Subscriptions"},"status_breakdown":{"additionalProperties":{"type":"integer"},"type":"object","title":"Status Breakdown"},"can_delete":{"type":"boolean","title":"Can Delete"}},"type":"object","required":["tier_id","tier_name","total_subscriptions","active_subscriptions","status_breakdown","can_delete"],"title":"SubscriptionTierUsageStats","description":"Response model for subscription tier usage statistics"},"SupportRequest":{"properties":{"id":{"type":"string","title":"Id","description":"Unique identifier for the support request"},"ticket_number":{"type":"string","title":"Ticket Number","description":"Auto-incrementing ticket number (e.g., KOLEGA-1001)","unique":true},"user_id":{"type":"string","title":"User Id","description":"Clerk user ID of the requester"},"email":{"type":"string","title":"Email","description":"Email address of the requester"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Full name of the requester"},"description":{"type":"string","title":"Description","description":"Detailed description of the support request"},"category":{"$ref":"#/components/schemas/SupportRequestCategory","description":"Category of the support request","default":"bug"},"status":{"$ref":"#/components/schemas/SupportRequestStatus","description":"Current status of the support request","default":"open"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Support request creation timestamp"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"Last update timestamp"},"resolution_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolution Notes","description":"Notes about the resolution"},"resolution_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Resolution Date","description":"Date when the request was resolved"},"sentry_feedback_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sentry Feedback Id","description":"Associated Sentry feedback ID if applicable"}},"type":"object","required":["id","ticket_number","user_id","email","description"],"title":"SupportRequest","description":"Support request model representing a support request from the support_requests collection."},"SupportRequestCategory":{"type":"string","enum":["bug","ui_issue","performance","feature_request","security","other"],"title":"SupportRequestCategory","description":"Support request category options - matching frontend issue types."},"SupportRequestCreate":{"properties":{"description":{"type":"string","title":"Description"},"category":{"anyOf":[{"$ref":"#/components/schemas/SupportRequestCategory"},{"type":"null"}],"default":"bug"},"sentry_feedback_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sentry Feedback Id"}},"type":"object","required":["description"],"title":"SupportRequestCreate","description":"Model for creating a new support request."},"SupportRequestListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SupportRequest"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"skip":{"type":"integer","title":"Skip","default":0},"limit":{"type":"integer","title":"Limit","default":20}},"type":"object","required":["items","total"],"title":"SupportRequestListResponse","description":"Response model for support request list."},"SupportRequestStatus":{"type":"string","enum":["open","resolved","closed"],"title":"SupportRequestStatus","description":"Support request status options."},"SupportRequestStatusUpdate":{"properties":{"status":{"$ref":"#/components/schemas/SupportRequestStatus"},"resolution_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolution Notes"}},"type":"object","required":["status"],"title":"SupportRequestStatusUpdate","description":"Model for updating support request status."},"ThresholdBreakdown":{"properties":{"withinSla":{"type":"integer","title":"Withinsla"},"approachingSla":{"type":"integer","title":"Approachingsla"},"breachedOpen":{"type":"integer","title":"Breachedopen"},"breachedResolved":{"type":"integer","title":"Breachedresolved"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["withinSla","approachingSla","breachedOpen","breachedResolved","total"],"title":"ThresholdBreakdown","description":"Breakdown of findings by SLA status for a threshold."},"ThresholdData":{"properties":{"id":{"type":"string","title":"Id"},"scanType":{"type":"string","title":"Scantype"},"severity":{"type":"string","title":"Severity"},"label":{"type":"string","title":"Label"},"target":{"type":"integer","title":"Target"},"actual":{"type":"integer","title":"Actual"},"status":{"type":"string","title":"Status"},"details":{"$ref":"#/components/schemas/ThresholdDetails"}},"type":"object","required":["id","scanType","severity","label","target","actual","status","details"],"title":"ThresholdData","description":"Data for a single threshold metric."},"ThresholdDetails":{"properties":{"total":{"type":"integer","title":"Total"},"withinSla":{"type":"integer","title":"Withinsla"},"outsideSla":{"type":"integer","title":"Outsidesla"}},"type":"object","required":["total","withinSla","outsideSla"],"title":"ThresholdDetails","description":"Details for a threshold's counts."},"ThresholdDetailsResponse":{"properties":{"threshold":{"$ref":"#/components/schemas/ThresholdSummary"},"summary":{"$ref":"#/components/schemas/ThresholdBreakdown"},"window":{"$ref":"#/components/schemas/WindowInfo"},"findings":{"items":{"$ref":"#/components/schemas/FindingWithTimeline"},"type":"array","title":"Findings"},"pagination":{"$ref":"#/components/schemas/PaginationInfo"}},"type":"object","required":["threshold","summary","window","findings","pagination"],"title":"ThresholdDetailsResponse","description":"Response model for threshold details drill-down endpoint."},"ThresholdSummary":{"properties":{"scanType":{"type":"string","title":"Scantype"},"severity":{"type":"string","title":"Severity"},"target":{"type":"integer","title":"Target"},"actual":{"type":"integer","title":"Actual"},"status":{"type":"string","title":"Status"},"label":{"type":"string","title":"Label"}},"type":"object","required":["scanType","severity","target","actual","status","label"],"title":"ThresholdSummary","description":"Summary information for a threshold."},"TierResponse":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"display_name":{"type":"string","title":"Display Name"},"price":{"type":"number","title":"Price"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"features":{"items":{"type":"string"},"type":"array","title":"Features"},"is_active":{"type":"boolean","title":"Is Active"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"}},"type":"object","required":["id","name","display_name","price","description","features","is_active"],"title":"TierResponse"},"TimelineEvent":{"properties":{"id":{"type":"string","title":"Id"},"eventType":{"type":"string","title":"Eventtype"},"eventTimestamp":{"type":"string","format":"date-time","title":"Eventtimestamp"},"actorType":{"type":"string","title":"Actortype"},"actorDisplayName":{"type":"string","title":"Actordisplayname"},"details":{"additionalProperties":true,"type":"object","title":"Details"}},"type":"object","required":["id","eventType","eventTimestamp","actorType","actorDisplayName"],"title":"TimelineEvent","description":"A single event in a finding's timeline."},"TrendPoint":{"properties":{"date":{"type":"string","title":"Date"},"adherence_pct":{"type":"integer","title":"Adherence Pct"}},"type":"object","required":["date","adherence_pct"],"title":"TrendPoint","description":"Single data point in the SLA adherence trend."},"UpcomingScheduleResponse":{"properties":{"schedule_id":{"type":"string","title":"Schedule Id"},"application_id":{"type":"string","title":"Application Id"},"application_name":{"type":"string","title":"Application Name"},"scan_type":{"$ref":"#/components/schemas/ScanType"},"next_run_at":{"type":"string","format":"date-time","title":"Next Run At"},"cron_expression":{"type":"string","title":"Cron Expression"}},"type":"object","required":["schedule_id","application_id","application_name","scan_type","next_run_at","cron_expression"],"title":"UpcomingScheduleResponse","description":"Response model for an upcoming scheduled scan."},"UpdateRepositoryBranchRequest":{"properties":{"default_branch":{"type":"string","maxLength":255,"minLength":1,"title":"Default Branch","description":"New default branch name"}},"type":"object","required":["default_branch"],"title":"UpdateRepositoryBranchRequest","description":"Request model for updating a repository's default branch."},"UserCostSummary":{"properties":{"user_id":{"type":"string","title":"User Id"},"user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email"},"total_cost_usd":{"type":"number","title":"Total Cost Usd"},"total_tokens":{"type":"integer","title":"Total Tokens"},"scan_count":{"type":"integer","title":"Scan Count"},"request_count":{"type":"integer","title":"Request Count"}},"type":"object","required":["user_id","total_cost_usd","total_tokens","scan_count","request_count"],"title":"UserCostSummary","description":"Summary of LLM costs for a single user."},"UserCostsResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/UserCostSummary"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"total_cost_usd":{"type":"number","title":"Total Cost Usd"}},"type":"object","required":["items","total","total_cost_usd"],"title":"UserCostsResponse","description":"Response for user costs endpoint."},"UserFeatureOverridesResponse":{"properties":{"user_id":{"type":"string","title":"User Id"},"enabled_features":{"items":{"type":"string"},"type":"array","title":"Enabled Features"},"disabled_features":{"items":{"type":"string"},"type":"array","title":"Disabled Features"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["user_id"],"title":"UserFeatureOverridesResponse"},"UserFeatureOverridesUpsertRequest":{"properties":{"enabled_features":{"items":{"type":"string"},"type":"array","title":"Enabled Features"},"disabled_features":{"items":{"type":"string"},"type":"array","title":"Disabled Features"}},"type":"object","title":"UserFeatureOverridesUpsertRequest"},"UserOverridesListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/UserFeatureOverridesResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"UserOverridesListResponse"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VolumeEvidence":{"properties":{"byScanType":{"items":{"$ref":"#/components/schemas/VolumeEvidenceItem"},"type":"array","title":"Byscantype"}},"type":"object","required":["byScanType"],"title":"VolumeEvidence","description":"Volume evidence data."},"VolumeEvidenceItem":{"properties":{"scanType":{"type":"string","title":"Scantype"},"label":{"type":"string","title":"Label"},"detected":{"type":"integer","title":"Detected"},"resolved":{"type":"integer","title":"Resolved"},"open":{"type":"integer","title":"Open"}},"type":"object","required":["scanType","label","detected","resolved","open"],"title":"VolumeEvidenceItem","description":"Volume evidence for a single scan type."},"VulnerabilityTrendPoint":{"properties":{"date":{"type":"string","title":"Date","description":"Date in YYYY-MM-DD format"},"new_count":{"type":"integer","title":"New Count","description":"Number of new findings detected on this date"},"resolved_count":{"type":"integer","title":"Resolved Count","description":"Number of findings resolved on this date"},"net_open":{"type":"integer","title":"Net Open","description":"Running total of open findings at end of this date"}},"type":"object","required":["date","new_count","resolved_count","net_open"],"title":"VulnerabilityTrendPoint","description":"A single data point in the vulnerability trend."},"VulnerabilityTrendResponse":{"properties":{"organization_id":{"type":"string","title":"Organization Id","description":"Organization ID"},"window":{"$ref":"#/components/schemas/VulnerabilityTrendWindow","description":"Time window for the trend"},"trend":{"items":{"$ref":"#/components/schemas/VulnerabilityTrendPoint"},"type":"array","title":"Trend","description":"Daily trend data points"},"summary":{"$ref":"#/components/schemas/VulnerabilityTrendSummary","description":"Summary statistics"}},"type":"object","required":["organization_id","window","trend","summary"],"title":"VulnerabilityTrendResponse","description":"Response model for vulnerability trend data."},"VulnerabilityTrendSummary":{"properties":{"total_new":{"type":"integer","title":"Total New","description":"Total new findings in the period"},"total_resolved":{"type":"integer","title":"Total Resolved","description":"Total resolved findings in the period"},"net_change":{"type":"integer","title":"Net Change","description":"Net change in open findings (positive = increase, negative = decrease/burndown)"},"current_open":{"type":"integer","title":"Current Open","description":"Current total open findings"}},"type":"object","required":["total_new","total_resolved","net_change","current_open"],"title":"VulnerabilityTrendSummary","description":"Summary statistics for the vulnerability trend period."},"VulnerabilityTrendWindow":{"properties":{"start":{"type":"string","title":"Start","description":"Start date in YYYY-MM-DD format"},"end":{"type":"string","title":"End","description":"End date in YYYY-MM-DD format"},"days":{"type":"integer","title":"Days","description":"Number of days in the window"}},"type":"object","required":["start","end","days"],"title":"VulnerabilityTrendWindow","description":"Time window information for the trend data."},"WindowInfo":{"properties":{"start":{"type":"string","title":"Start"},"end":{"type":"string","title":"End"},"days":{"type":"integer","title":"Days"}},"type":"object","required":["start","end","days"],"title":"WindowInfo","description":"Time window information for the compliance overview."},"WorkloadAssessment":{"properties":{"status":{"type":"string","title":"Status"},"isRealConcern":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Isrealconcern"},"assessedPriority":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assessedpriority"},"shouldFix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shouldfix"},"assessmentNotes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assessmentnotes"},"assessedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assessedat"}},"type":"object","required":["status"],"title":"WorkloadAssessment","description":"Assessment data for workload items."},"WorkloadFindingItem":{"properties":{"findingId":{"type":"string","title":"Findingid"},"checkId":{"type":"string","title":"Checkid"},"message":{"type":"string","title":"Message"},"filePath":{"type":"string","title":"Filepath"},"severity":{"type":"string","title":"Severity"},"scanType":{"type":"string","title":"Scantype"},"status":{"type":"string","title":"Status"},"applicationId":{"type":"string","title":"Applicationid"},"applicationName":{"type":"string","title":"Applicationname"},"owasp":{"items":{"type":"string"},"type":"array","title":"Owasp"},"slaStatus":{"type":"string","title":"Slastatus"},"slaDeadline":{"type":"string","title":"Sladeadline"},"slaTargetDays":{"type":"integer","title":"Slatargetdays"},"daysRemaining":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Daysremaining"},"daysOverdue":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Daysoverdue"},"cvssBaseScore":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cvssbasescore"},"cvssSeverity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvssseverity"},"fixSummary":{"anyOf":[{"$ref":"#/components/schemas/FindingFixSummary"},{"type":"null"}]},"assessment":{"anyOf":[{"$ref":"#/components/schemas/WorkloadAssessment"},{"type":"null"}]},"detectedAt":{"type":"string","format":"date-time","title":"Detectedat"}},"type":"object","required":["findingId","checkId","message","filePath","severity","scanType","status","applicationId","applicationName","slaStatus","slaDeadline","slaTargetDays","detectedAt"],"title":"WorkloadFindingItem","description":"A finding in the workload queue with SLA enrichment."},"WorkloadResponse":{"properties":{"organizationId":{"type":"string","title":"Organizationid"},"applicationId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Applicationid"},"total":{"type":"integer","title":"Total"},"findings":{"items":{"$ref":"#/components/schemas/WorkloadFindingItem"},"type":"array","title":"Findings"},"summary":{"$ref":"#/components/schemas/WorkloadSummary"}},"type":"object","required":["organizationId","total","findings","summary"],"title":"WorkloadResponse","description":"Response model for the workload endpoint."},"WorkloadSummary":{"properties":{"breached":{"type":"integer","title":"Breached","description":"Findings past SLA deadline","default":0},"dueToday":{"type":"integer","title":"Duetoday","description":"Findings with 0 days remaining","default":0},"dueThisWeek":{"type":"integer","title":"Duethisweek","description":"Findings due within 7 days","default":0},"healthy":{"type":"integer","title":"Healthy","description":"Findings with more than 7 days remaining","default":0}},"type":"object","title":"WorkloadSummary","description":"Summary counts by urgency for workload queue."},"WorkspaceRequest":{"properties":{"directory_path":{"type":"string","title":"Directory Path"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"is_sandbox":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Sandbox","default":false},"project_template_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Template Id"},"git_provider":{"anyOf":[{"type":"string","enum":["gitlab","github"]},{"type":"null"}],"title":"Git Provider"},"github_repo_full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Github Repo Full Name"},"github_branch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Github Branch"},"github_private":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Github Private","default":true},"import_template_into_existing_if_empty":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Import Template Into Existing If Empty","default":false}},"type":"object","required":["directory_path"],"title":"WorkspaceRequest","description":"Request model for creating a workspace."},"WorkspaceResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Unique identifier for the workspace"},"user_id":{"type":"string","title":"User Id","description":"ID of the user who created this workspace"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id","description":"Organization this workspace belongs to"},"directory_path":{"type":"string","title":"Directory Path","description":"Path to the workspace directory"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Display name for the workspace"},"subdomain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subdomain","description":"Unique subdomain for the workspace (e.g., 'inquisitive-ocelot-abc012')"},"port":{"type":"integer","title":"Port","description":"Port number for the workspace server","default":8000},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Creation timestamp"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"Last update timestamp"},"gitlab_project_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Gitlab Project Id","description":"GitLab project ID if repository is created"},"gitlab_project_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gitlab Project Url","description":"GitLab project URL if repository is created"},"git_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Git Url","description":"Git clone URL (can be different from gitlab_project_url)"},"git_branch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Git Branch","description":"Default git branch for sandbox operations","default":"main"},"git_provider":{"type":"string","enum":["gitlab","github"],"title":"Git Provider","description":"Which git provider backs this workspace","default":"gitlab"},"github_repo_full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Github Repo Full Name","description":"GitHub repo full name (owner/repo) when provider is GitHub"},"is_sandbox":{"type":"boolean","title":"Is Sandbox","description":"Whether this is a cloud sandbox project","default":false},"project_template_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Template Id","description":"ID of template used for initialization"},"project_mode":{"type":"string","enum":["vibe","code"],"title":"Project Mode","description":"Project mode: 'vibe' for template-based projects, 'code' for scratch projects","default":"code"},"mcp_servers":{"items":{"$ref":"#/components/schemas/MCPServerConfig"},"type":"array","title":"Mcp Servers","description":"List of configured MCP servers"},"show_branding":{"type":"boolean","title":"Show Branding","description":"Whether Kolega branding should be shown in deployments","default":true},"e2b_template_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"E2B Template Id","description":"E2B template ID to use for sandboxes"},"active_sandbox_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Active Sandbox Id","description":"ID of currently running sandbox"},"sandbox_last_used":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Sandbox Last Used","description":"Last time the sandbox was used"},"sandbox_host":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sandbox Host","description":"Host URL for accessing services on port 9001 in the sandbox"},"sandbox_launch_task_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sandbox Launch Task Id","description":"Celery task ID for ongoing sandbox creation"},"latest_screenshot_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Latest Screenshot Url","description":"Presigned URL for the latest project screenshot"},"latest_screenshot_s3_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Latest Screenshot S3 Key","description":"S3 key for the latest project screenshot"},"latest_screenshot_timestamp":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Latest Screenshot Timestamp","description":"When the latest screenshot was taken"},"template_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Slug","description":"Slug of the template used for this workspace"},"deployed_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Deployed Url","description":"Compute the deployed URL from subdomain and KOLEGA_APPS_DOMAIN environment variable.","readOnly":true}},"type":"object","required":["id","user_id","directory_path","deployed_url"],"title":"WorkspaceResponse","description":"Response model for workspace that includes computed fields."},"WorkspaceWithAccess":{"properties":{"can_access":{"type":"boolean","title":"Can Access","description":"Whether user can access this resource based on plan and integration requirements"},"can_access_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Can Access Message","description":"User-friendly message explaining access restrictions if can_access is False"},"redirect_modal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Redirect Modal","description":"Modal to open when access is blocked (e.g., 'account')"},"redirect_section":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Redirect Section","description":"Section within modal to navigate to (e.g., 'plan', 'integrations')"},"id":{"type":"string","title":"Id","description":"Unique identifier for the workspace"},"user_id":{"type":"string","title":"User Id","description":"ID of the user who created this workspace"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id","description":"Organization this workspace belongs to"},"directory_path":{"type":"string","title":"Directory Path","description":"Path to the workspace directory"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Display name for the workspace"},"subdomain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subdomain","description":"Unique subdomain for the workspace (e.g., 'inquisitive-ocelot-abc012')"},"port":{"type":"integer","title":"Port","description":"Port number for the workspace server","default":8000},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Creation timestamp"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"Last update timestamp"},"gitlab_project_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Gitlab Project Id","description":"GitLab project ID if repository is created"},"gitlab_project_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gitlab Project Url","description":"GitLab project URL if repository is created"},"git_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Git Url","description":"Git clone URL (can be different from gitlab_project_url)"},"git_branch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Git Branch","description":"Default git branch for sandbox operations","default":"main"},"git_provider":{"type":"string","enum":["gitlab","github"],"title":"Git Provider","description":"Which git provider backs this workspace","default":"gitlab"},"github_repo_full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Github Repo Full Name","description":"GitHub repo full name (owner/repo) when provider is GitHub"},"is_sandbox":{"type":"boolean","title":"Is Sandbox","description":"Whether this is a cloud sandbox project","default":false},"project_template_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Template Id","description":"ID of template used for initialization"},"project_mode":{"type":"string","enum":["vibe","code"],"title":"Project Mode","description":"Project mode: 'vibe' for template-based projects, 'code' for scratch projects","default":"code"},"mcp_servers":{"items":{"$ref":"#/components/schemas/MCPServerConfig"},"type":"array","title":"Mcp Servers","description":"List of configured MCP servers"},"show_branding":{"type":"boolean","title":"Show Branding","description":"Whether Kolega branding should be shown in deployments","default":true},"e2b_template_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"E2B Template Id","description":"E2B template ID to use for sandboxes"},"active_sandbox_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Active Sandbox Id","description":"ID of currently running sandbox"},"sandbox_last_used":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Sandbox Last Used","description":"Last time the sandbox was used"},"sandbox_host":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sandbox Host","description":"Host URL for accessing services on port 9001 in the sandbox"},"sandbox_launch_task_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sandbox Launch Task Id","description":"Celery task ID for ongoing sandbox creation"},"latest_screenshot_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Latest Screenshot Url","description":"Presigned URL for the latest project screenshot"},"latest_screenshot_s3_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Latest Screenshot S3 Key","description":"S3 key for the latest project screenshot"},"latest_screenshot_timestamp":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Latest Screenshot Timestamp","description":"When the latest screenshot was taken"},"template_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Slug","description":"Slug of the template used for this workspace"},"deployed_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Deployed Url","description":"Compute the deployed URL from subdomain and KOLEGA_APPS_DOMAIN environment variable.","readOnly":true}},"type":"object","required":["can_access","id","user_id","directory_path","deployed_url"],"title":"WorkspaceWithAccess","description":"Workspace response model with access control metadata for frontend display."},"kolega_code__models__fix__CreatePRRequest":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title","description":"PR title (auto-generated by LLM if not provided)"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body","description":"PR body in markdown (auto-generated by LLM if not provided)"},"branch_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Name","description":"Custom branch name (auto-generated if not provided)"}},"type":"object","title":"CreatePRRequest","description":"Request model for creating a PR from a fix."},"kolega_code__routes__github_repository_router__CreatePRRequest":{"properties":{"repo_full_name":{"type":"string","title":"Repo Full Name"},"title":{"type":"string","title":"Title"},"body":{"type":"string","title":"Body"},"head":{"type":"string","title":"Head"},"base":{"type":"string","title":"Base","default":"main"}},"type":"object","required":["repo_full_name","title","body","head"],"title":"CreatePRRequest"}}}}