{"openapi":"3.1.0","info":{"title":"UserTold.ai API","version":"1.0.0"},"components":{"schemas":{"ApiErrorResponse":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]},"ApiOAuthDynamicClientRegistrationResponse":{"type":"object","properties":{"client_id":{"type":"string"},"client_name":{"type":"string"},"redirect_uris":{"type":"array","items":{"type":"string"}},"grant_types":{"type":"array","items":{"type":"string"}},"response_types":{"type":"array","items":{"type":"string"}},"scope":{"type":"string"},"token_endpoint_auth_method":{"type":"string","enum":["none","client_secret_post","client_secret_basic"]},"client_id_issued_at":{"type":"number"},"registration_access_token":{"type":"string"},"registration_client_uri":{"type":"string"},"client_secret":{"type":"string"},"client_secret_expires_at":{"type":"number"}},"required":["client_id","client_name","redirect_uris","grant_types","response_types","scope","token_endpoint_auth_method","client_id_issued_at","registration_access_token","registration_client_uri","client_secret_expires_at"]},"ApiOAuthDynamicClientRegistrationRequest":{"type":"object","properties":{"client_name":{"type":"string"},"redirect_uris":{"type":"array","items":{"type":"string"},"minItems":1},"grant_types":{"type":"array","items":{"type":"string"}},"response_types":{"type":"array","items":{"type":"string"}},"scope":{"type":"string"},"token_endpoint_auth_method":{"type":"string","enum":["none","client_secret_post","client_secret_basic"]}},"required":["redirect_uris"]},"ApiDataExportCreateResponse":{"type":"object","properties":{"job":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["queued","running","completed","failed"]},"requested_at":{"type":"string"},"started_at":{"type":["string","null"]},"completed_at":{"type":["string","null"]},"expires_at":{"type":"string"},"download_url":{"type":["string","null"]},"error_message":{"type":["string","null"]}},"required":["id","status","requested_at","started_at","completed_at","expires_at","download_url","error_message"]},"media_url_ttl_seconds":{"type":"number"}},"required":["job","media_url_ttl_seconds"]},"ApiProjectMutationResponse":{"type":"object","properties":{"project":{"type":"object","properties":{"id":{"type":"string"},"handle":{"type":"string"},"name":{"type":"string"},"description":{"type":["string","null"]},"organization_id":{"type":"string"},"org_handle":{"type":["string","null"]},"project_handle":{"type":"string"},"project_ref":{"type":["string","null"]},"canonical_path":{"type":["string","null"]},"owner_id":{"type":"number"},"github_repo_url":{"type":["string","null"]},"github_default_branch":{"type":"string"},"github_installation_id":{"type":["string","null"]},"linear_team_id":{"type":["string","null"]},"widget_install_last_seen_at":{"type":["string","null"]},"public_key":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","handle","name","description","organization_id","org_handle","project_handle","project_ref","canonical_path","owner_id","github_repo_url","github_default_branch","github_installation_id","linear_team_id","widget_install_last_seen_at","public_key","created_at","updated_at"]}},"required":["project"]},"ApiSuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]},"ApiPurgeResponse":{"type":"object","properties":{"success":{"type":"boolean"},"d1RowsDeleted":{"type":"number"},"r2ObjectsDeleted":{"type":"number"}},"required":["success","d1RowsDeleted","r2ObjectsDeleted"]},"ApiSignalResponse":{"type":"object","properties":{"signal":{"type":"object","properties":{"id":{"type":"string"},"project_id":{"type":"string"},"session_id":{"type":"string"},"signal_type":{"type":"string"},"target_surface":{"type":"string","enum":["product_under_test","usertold_widget_interview","interviewer_conductor_behavior","ambiguous_needs_review"]},"confidence":{"type":"number"},"intensity":{"type":["number","null"]},"quote":{"type":"string"},"context":{"type":["string","null"]},"analysis":{"type":["string","null"]},"timestamp_ms":{"type":["number","null"]},"segment_id":{"type":["string","null"]},"task_id":{"type":["string","null"]},"page_url":{"type":["string","null"]},"page_title":{"type":["string","null"]},"preceding_actions":{"type":["string","null"]},"user_goal":{"type":["string","null"]},"outcome":{"type":["string","null"]},"headline":{"type":["string","null"]},"claim":{"type":["string","null"]},"reconstruction":{"type":["string","null"]},"observed_facts_json":{"type":["string","null"]},"evidence_grade":{"type":["string","null"]},"window_start_ms":{"type":["number","null"]},"window_end_ms":{"type":["number","null"]},"review_status":{"type":["string","null"]},"review_note":{"type":["string","null"]},"annotation_text":{"type":["string","null"]},"annotation_by":{"type":["string","null"]},"annotation_at":{"type":["string","null"]},"dismissed_at":{"type":["string","null"]},"dismissed_reason":{"type":["string","null"]},"dismissed_by":{"type":["string","null"]},"source":{"type":["string","null"]},"created_at":{"type":"string"},"linked_task":{"type":["object","null"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"status":{"type":"string","enum":["backlog","ready","in_progress","done","wont_fix"]},"linear_issue_id":{"type":["string","null"]},"linear_issue_url":{"type":["string","null"]},"linear_issue_status":{"type":["string","null"]}},"required":["id","title","status"]},"evidence_resolution":{"type":["object","null"],"properties":{"task_id":{"type":"string"},"resolved_at":{"type":["string","null"]},"resolved_by_provider":{"type":["string","null"]},"resolved_by_provider_issue_id":{"type":["string","null"]},"resolution_reason":{"type":["string","null"]}},"required":["resolved_at","resolved_by_provider","resolved_by_provider_issue_id","resolution_reason"]},"recurrence_candidates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"related_task_id":{"type":"string"},"related_resolved_signal_id":{"type":["string","null"]},"confidence":{"type":"number"},"reason":{"type":["string","null"]},"status":{"type":"string","enum":["candidate","confirmed","dismissed"]},"created_at":{"type":"string"},"reviewed_at":{"type":["string","null"]},"related_task":{"type":["object","null"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"status":{"type":"string","enum":["backlog","ready","in_progress","done","wont_fix"]}},"required":["id","title","status"]}},"required":["id","related_task_id","related_resolved_signal_id","confidence","reason","status","created_at","reviewed_at"]}},"provenance":{"type":["object","null"],"properties":{"study":{"type":["object","null"],"properties":{"id":{"type":"string"},"title":{"type":"string"}},"required":["id","title"]},"interview":{"type":["object","null"],"properties":{"id":{"type":"string"},"participant_name":{"type":["string","null"]},"started_at":{"type":["string","null"]},"interview_mode":{"type":["string","null"]},"duration_seconds":{"type":["number","null"]}},"required":["id","participant_name","started_at","interview_mode","duration_seconds"]},"page":{"type":["object","null"],"properties":{"url":{"type":["string","null"]},"title":{"type":["string","null"]}},"required":["url","title"]},"timestamp_ms":{"type":["number","null"]},"source":{"type":["string","null"]}},"required":["study","interview","page","timestamp_ms","source"]},"case_file":{"type":["object","null"],"properties":{"case_file_version":{"type":"string","enum":["evidence_case_file.v1"]},"evidence_card":{"type":"object","properties":{"contract_version":{"type":"string","enum":["pipeline.v1"]},"artifact_kind":{"type":"string","enum":["evidence_card"]},"artifact_id":{"type":"string"},"project_id":{"type":"string"},"session_id":{"type":"string"},"created_at":{"type":"string"},"evidence":{"type":"object","properties":{"signal_type":{"type":"string","enum":["struggling_moment","desired_outcome","workaround","hiring_criteria","firing_moment","emotional_response","no_issue_found","smooth_completion","critical_error","recovery_success","decision_point"]},"target_surface":{"type":["string","null"],"enum":["product_under_test","usertold_widget_interview","interviewer_conductor_behavior","ambiguous_needs_review",null]},"quote":{"type":"string"},"context":{"type":["string","null"]},"analysis":{"type":["string","null"]},"confidence":{"type":"number"},"intensity":{"type":["number","null"]},"timestamp_ms":{"type":"number"},"segment_id":{"type":"string"},"page_url":{"type":["string","null"]},"page_title":{"type":["string","null"]},"preceding_actions":{"type":["array","null"],"items":{"type":"string"}},"user_goal":{"type":["string","null"]},"outcome":{"type":["string","null"]},"headline":{"type":["string","null"]},"claim":{"type":["string","null"]},"reconstruction":{"type":["string","null"]},"observed_facts":{"type":["array","null"],"items":{"type":"string"}},"evidence_grade":{"type":["string","null"],"enum":["direct","strong_circumstantial","weak",null]},"window_start_ms":{"type":["number","null"]},"window_end_ms":{"type":["number","null"]},"transcript_uncertain":{"type":["boolean","null"]},"transcript_uncertainty_note":{"type":["string","null"]}},"required":["signal_type","quote","confidence"]}},"required":["contract_version","artifact_kind","evidence"]},"provenance":{"type":["object","null"],"properties":{"study":{"type":["object","null"],"properties":{"id":{"type":"string"},"title":{"type":"string"}},"required":["id","title"]},"interview":{"type":["object","null"],"properties":{"id":{"type":"string"},"participant_name":{"type":["string","null"]},"started_at":{"type":["string","null"]},"interview_mode":{"type":["string","null"]},"duration_seconds":{"type":["number","null"]}},"required":["id","participant_name","started_at","interview_mode","duration_seconds"]},"page":{"type":["object","null"],"properties":{"url":{"type":["string","null"]},"title":{"type":["string","null"]}},"required":["url","title"]},"timestamp_ms":{"type":["number","null"]},"source":{"type":["string","null"]}},"required":["study","interview","page","timestamp_ms","source"]},"review":{"type":"object","properties":{"review_status":{"type":["string","null"]},"review_note":{"type":["string","null"]},"annotation_text":{"type":["string","null"]},"annotation_by":{"type":["string","null"]},"annotation_at":{"type":["string","null"]},"dismissed_at":{"type":["string","null"]},"dismissed_reason":{"type":["string","null"]},"dismissed_by":{"type":["string","null"]}},"required":["review_status","review_note","annotation_text","annotation_by","annotation_at","dismissed_at","dismissed_reason","dismissed_by"]},"links":{"type":"object","properties":{"task_id":{"type":["string","null"]},"linked_task":{"type":["object","null"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"status":{"type":"string"},"linear_issue_id":{"type":["string","null"]},"linear_issue_url":{"type":["string","null"]},"linear_issue_status":{"type":["string","null"]}},"required":["id","title","status"]},"evidence_resolution":{"type":["object","null"],"properties":{"task_id":{"type":"string"},"resolved_at":{"type":["string","null"]},"resolved_by_provider":{"type":["string","null"]},"resolved_by_provider_issue_id":{"type":["string","null"]},"resolution_reason":{"type":["string","null"]}},"required":["resolved_at","resolved_by_provider","resolved_by_provider_issue_id","resolution_reason"]},"recurrence_candidates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"related_task_id":{"type":"string"},"related_resolved_signal_id":{"type":["string","null"]},"confidence":{"type":"number"},"reason":{"type":["string","null"]},"status":{"type":"string"},"created_at":{"type":"string"},"reviewed_at":{"type":["string","null"]},"related_task":{"type":["object","null"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"status":{"type":"string"}},"required":["id","title","status"]}},"required":["id","related_task_id","related_resolved_signal_id","confidence","reason","status","created_at","reviewed_at"]}}},"required":["task_id","recurrence_candidates"]}},"required":["case_file_version","evidence_card","provenance","review","links"]}},"required":["id","project_id","session_id","signal_type","target_surface","confidence","intensity","quote","context","analysis","timestamp_ms","segment_id","task_id","page_url","page_title","preceding_actions","user_goal","outcome","annotation_text","annotation_by","annotation_at","dismissed_at","dismissed_reason","dismissed_by","source","created_at"]}},"required":["signal"]},"ApiTaskResponse":{"type":"object","properties":{"task":{"type":"object","properties":{"id":{"type":"string"},"project_id":{"type":"string"},"title":{"type":"string"},"description":{"type":["string","null"]},"task_type":{"type":"string"},"target_surface":{"type":"string","enum":["product_under_test","usertold_widget_interview","interviewer_conductor_behavior","ambiguous_needs_review"]},"status":{"type":"string","enum":["backlog","ready","in_progress","done","wont_fix"]},"priority_score":{"type":"number"},"priority_label":{"type":"string"},"effort_estimate":{"type":["string","null"]},"signal_count":{"type":"number"},"session_count":{"type":"number"},"implementation_branch":{"type":["string","null"]},"implementation_pr_url":{"type":["string","null"]},"implementation_pr_number":{"type":["number","null"]},"deployed_at":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","project_id","title","description","task_type","target_surface","status","priority_score","priority_label","effort_estimate","signal_count","session_count","implementation_branch","implementation_pr_url","implementation_pr_number","deployed_at","created_at","updated_at"]}},"required":["task"]},"ApiScreenerQuestionResponse":{"type":"object","properties":{"question":{"type":"object","properties":{"id":{"type":"string"},"screener_id":{"type":"string"},"question_text":{"type":"string"},"question_type":{"type":"string"},"required":{"type":"number"},"sort_order":{"type":"number"},"options_json":{"type":["string","null"]},"min_value":{"type":["number","null"]},"max_value":{"type":["number","null"]},"qualification_rules_json":{"type":["string","null"]},"created_at":{"type":"string"}},"required":["id","screener_id","question_text","question_type","required","sort_order","options_json","min_value","max_value","qualification_rules_json","created_at"]}},"required":["question"]},"ApiScreenerQuestionsReorderResponse":{"type":"object","properties":{"questions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"screener_id":{"type":"string"},"question_text":{"type":"string"},"question_type":{"type":"string"},"required":{"type":"number"},"sort_order":{"type":"number"},"options_json":{"type":["string","null"]},"min_value":{"type":["number","null"]},"max_value":{"type":["number","null"]},"qualification_rules_json":{"type":["string","null"]},"created_at":{"type":"string"}},"required":["id","screener_id","question_text","question_type","required","sort_order","options_json","min_value","max_value","qualification_rules_json","created_at"]}}},"required":["questions"]},"ApiStudyResponse":{"type":"object","properties":{"study":{"type":"object","properties":{"id":{"type":"string"},"handle":{"type":"string"},"project_id":{"type":"string"},"title":{"type":"string"},"description":{"type":["string","null"]},"status":{"type":"string"},"goals_json":{"type":["string","null"]},"script_json":{"type":["string","null"]},"settings_json":{"type":["string","null"]},"allowed_selectors":{"type":["string","null"]},"allowed_origins":{"type":["string","null"]},"screener_id":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","handle","project_id","title","description","status","goals_json","script_json","settings_json","allowed_selectors","allowed_origins","screener_id","created_at","updated_at"]},"origin_guard_failure":{"type":["object","null"],"properties":{"session_id":{"type":"string"},"code":{"type":"string","enum":["origin_required","origin_invalid","origin_not_allowed"]},"reason":{"type":"string"},"request_origin":{"type":["string","null"]},"normalized_origin":{"type":["string","null"]},"allowed_origins":{"type":"array","items":{"type":"string"}},"policy_source":{"type":["string","null"]},"occurred_at":{"type":"string"}},"required":["session_id","code","reason","request_origin","normalized_origin","allowed_origins","policy_source","occurred_at"]},"screener_auto_created":{"type":"boolean"},"screener_id":{"type":"string"}},"required":["study"]},"ApiProjectSettingsResponse":{"type":"object","properties":{"settings":{"type":"object","additionalProperties":{"type":"string"}},"warnings":{"type":"array","items":{"type":"object","properties":{"section":{"type":"string","enum":["api_keys"]},"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["section","code","message","retryable"]}}},"required":["settings"]},"ApiConductorOriginGuardErrorResponse":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["origin_required","origin_invalid","origin_not_allowed"]},"retryable":{"type":"boolean","enum":[false]},"action":{"type":"string"}},"required":["error","code","retryable","action"]},"ApiAdminAgentProvider":{"type":"object","properties":{"issuer":{"type":"string"},"display_name":{"type":"string"},"jwks_uri":{"type":"string"},"allowed_audiences":{"type":"array","items":{"type":"string"}},"status":{"type":"string","enum":["active","disabled"]},"notes":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["issuer","display_name","jwks_uri","allowed_audiences","status","notes","created_at","updated_at"]}},"parameters":{}},"paths":{"/api/health":{"get":{"operationId":"healthCheck","tags":["Health"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"environment":{"type":"string"},"checks":{"type":"object","properties":{"encryption_key":{"type":"boolean"}},"required":["encryption_key"]}},"required":["status","checks"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/.well-known/openid-configuration":{"get":{"operationId":"oauthDiscovery","tags":["OAuth"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"issuer":{"type":"string"},"resource":{"type":"string"},"authorization_servers":{"type":"array","items":{"type":"string"}},"bearer_methods_supported":{"type":"array","items":{"type":"string"}},"authorization_endpoint":{"type":"string"},"token_endpoint":{"type":"string"},"registration_endpoint":{"type":"string"},"jwks_uri":{"type":"string"},"response_types_supported":{"type":"array","items":{"type":"string"}},"grant_types_supported":{"type":"array","items":{"type":"string"}},"code_challenge_methods_supported":{"type":"array","items":{"type":"string"}},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"agent_auth":{"type":"object","additionalProperties":{}}},"required":["issuer","authorization_endpoint","token_endpoint","jwks_uri","response_types_supported","grant_types_supported","code_challenge_methods_supported","token_endpoint_auth_methods_supported","scopes_supported"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/.well-known/jwks.json":{"get":{"operationId":"oauthJwks","tags":["OAuth"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"keys":{"type":"array","items":{"type":"object","additionalProperties":{}}}},"required":["keys"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/oauth/authorize":{"get":{"operationId":"oauthAuthorize","tags":["OAuth"],"parameters":[{"schema":{"type":"string"},"required":false,"name":"client_id","in":"query"},{"schema":{"type":"string"},"required":false,"name":"redirect_uri","in":"query"},{"schema":{"type":"string"},"required":false,"name":"response_type","in":"query"},{"schema":{"type":"string"},"required":false,"name":"code_challenge","in":"query"},{"schema":{"type":"string"},"required":false,"name":"code_challenge_method","in":"query"},{"schema":{"type":"string"},"required":false,"name":"scope","in":"query"},{"schema":{"type":"string"},"required":false,"name":"state","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/oauth/callback":{"get":{"operationId":"oauthCallback","tags":["OAuth"],"parameters":[{"schema":{"type":"string"},"required":false,"name":"code","in":"query"},{"schema":{"type":"string"},"required":false,"name":"state","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/oauth/token":{"post":{"operationId":"oauthToken","tags":["OAuth"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"grant_type":{"type":"string"},"code":{"type":"string"},"code_verifier":{"type":"string"},"redirect_uri":{"type":"string"},"client_id":{"type":"string"},"client_secret":{"type":"string"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/oauth/register":{"post":{"operationId":"oauthRegister","tags":["OAuth"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiOAuthDynamicClientRegistrationRequest"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiOAuthDynamicClientRegistrationResponse"}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/oauth/register/{clientId}":{"get":{"operationId":"oauthRegisterGet","tags":["OAuth"],"parameters":[{"schema":{"type":"string","description":"clientId path parameter"},"required":true,"description":"clientId path parameter","name":"clientId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiOAuthDynamicClientRegistrationResponse"}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"put":{"operationId":"oauthRegisterUpdate","tags":["OAuth"],"parameters":[{"schema":{"type":"string","description":"clientId path parameter"},"required":true,"description":"clientId path parameter","name":"clientId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiOAuthDynamicClientRegistrationRequest"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiOAuthDynamicClientRegistrationResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"delete":{"operationId":"oauthRegisterDelete","tags":["OAuth"],"parameters":[{"schema":{"type":"string","description":"clientId path parameter"},"required":true,"description":"clientId path parameter","name":"clientId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/oauth/authorize/request":{"get":{"operationId":"oauthApprovalRequest","tags":["OAuth"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"request","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"clientId":{"type":"string"},"clientName":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}},"user":{"type":"object","properties":{"id":{"type":"number"},"email":{"type":"string"}},"required":["id","email"]}},"required":["clientId","clientName","scopes","user"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/oauth/authorize/decision":{"post":{"operationId":"oauthApprovalDecision","tags":["OAuth"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string"},"approved":{"type":"boolean"}},"required":["requestId","approved"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"redirectUrl":{"type":"string"}},"required":["redirectUrl"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/auth/session":{"get":{"operationId":"authSession","tags":["Auth"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":["object","null"],"properties":{"id":{"type":"number"},"email":{"type":"string"},"name":{"type":"string"},"google_id":{"type":["string","null"]},"github_id":{"type":["string","null"]},"personal_org_handle":{"type":["string","null"]},"last_visited_org_handle":{"type":["string","null"]},"personal_org_name":{"type":["string","null"]},"terms_accepted_version":{"type":["string","null"]},"terms_accepted_at":{"type":["string","null"]},"personal_org_reviewed_at":{"type":["string","null"]},"needs_onboarding":{"type":"boolean"},"needs_terms_acceptance":{"type":"boolean"},"terms_update_available":{"type":"boolean"},"needs_org_handle_review":{"type":"boolean"},"gpc_opt_out_at":{"type":["string","null"]},"is_admin":{"type":"boolean"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","email","name","google_id","github_id","personal_org_handle","last_visited_org_handle","personal_org_name","terms_accepted_version","terms_accepted_at","personal_org_reviewed_at","needs_onboarding","needs_terms_acceptance","terms_update_available","needs_org_handle_review","gpc_opt_out_at","is_admin","created_at","updated_at"]},"config":{"type":"object","properties":{"googleClientId":{"type":"string"},"githubClientId":{"type":"string"},"linearClientId":{"type":"string"},"environment":{"type":"string"}},"required":["googleClientId","githubClientId","environment"]}},"required":["user","config"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/auth/session-state":{"post":{"operationId":"authSessionState","tags":["Auth"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string"},"cookieName":{"type":"string"},"expiresIn":{"type":"number"},"tokenType":{"type":"string","enum":["Bearer"]}},"required":["token","cookieName","expiresIn","tokenType"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Agent-issued tokens cannot mint browser sessions.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/auth/google/login":{"get":{"operationId":"authGoogleLogin","tags":["Auth"],"parameters":[{"schema":{"type":"string"},"required":false,"name":"return_to","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/auth/google/callback":{"get":{"operationId":"authGoogleCallback","tags":["Auth"],"parameters":[{"schema":{"type":"string"},"required":false,"name":"code","in":"query"},{"schema":{"type":"string"},"required":false,"name":"state","in":"query"},{"schema":{"type":"string"},"required":false,"name":"error","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/auth/github/login":{"get":{"operationId":"authGithubLogin","tags":["Auth"],"parameters":[{"schema":{"type":"string"},"required":false,"name":"return_to","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/auth/github/callback":{"get":{"operationId":"authGithubCallback","tags":["Auth"],"parameters":[{"schema":{"type":"string"},"required":false,"name":"code","in":"query"},{"schema":{"type":"string"},"required":false,"name":"state","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/auth/linear/login":{"get":{"operationId":"authLinearLogin","tags":["Auth"],"parameters":[{"schema":{"type":"string"},"required":false,"name":"return_to","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/auth/linear/callback":{"get":{"operationId":"authLinearCallback","tags":["Auth"],"parameters":[{"schema":{"type":"string"},"required":false,"name":"code","in":"query"},{"schema":{"type":"string"},"required":false,"name":"state","in":"query"},{"schema":{"type":"string"},"required":false,"name":"error","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/auth/logout":{"post":{"operationId":"authLogout","tags":["Auth"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/auth/onboarding":{"post":{"operationId":"authOnboarding","tags":["Auth"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"acceptTerms":{"type":"boolean"},"personalOrgHandle":{"type":"string","maxLength":64},"personalOrgName":{"type":"string","maxLength":80}},"required":["acceptTerms"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"user":{"type":["object","null"],"properties":{"id":{"type":"number"},"email":{"type":"string"},"name":{"type":"string"},"google_id":{"type":["string","null"]},"github_id":{"type":["string","null"]},"personal_org_handle":{"type":["string","null"]},"last_visited_org_handle":{"type":["string","null"]},"personal_org_name":{"type":["string","null"]},"terms_accepted_version":{"type":["string","null"]},"terms_accepted_at":{"type":["string","null"]},"personal_org_reviewed_at":{"type":["string","null"]},"needs_onboarding":{"type":"boolean"},"needs_terms_acceptance":{"type":"boolean"},"terms_update_available":{"type":"boolean"},"needs_org_handle_review":{"type":"boolean"},"gpc_opt_out_at":{"type":["string","null"]},"is_admin":{"type":"boolean"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","email","name","google_id","github_id","personal_org_handle","last_visited_org_handle","personal_org_name","terms_accepted_version","terms_accepted_at","personal_org_reviewed_at","needs_onboarding","needs_terms_acceptance","terms_update_available","needs_org_handle_review","gpc_opt_out_at","is_admin","created_at","updated_at"]}},"required":["success","user"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/auth/sessions/revoke-older":{"post":{"operationId":"authRevokeOlderSessions","tags":["Auth"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"session_tokens_valid_after":{"type":"number"}},"required":["success","session_tokens_valid_after"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/user/profile":{"get":{"operationId":"userProfileGet","tags":["User"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number"},"email":{"type":"string"},"name":{"type":"string"},"personal_org_handle":{"type":["string","null"]}},"required":["id","email","name","personal_org_handle"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"patch":{"operationId":"userProfileUpdate","tags":["User"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":80}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"user":{"type":"object","properties":{"id":{"type":"number"},"email":{"type":"string"},"name":{"type":"string"},"personal_org_handle":{"type":["string","null"]}},"required":["id","email","name","personal_org_handle"]}},"required":["success","user"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/me/project-resolve":{"get":{"operationId":"projectResolve","tags":["User"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"ref","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"orgHandle":{"type":"string"},"projectHandle":{"type":"string"},"name":{"type":"string"},"projectRef":{"type":"string"}},"required":["orgHandle","projectHandle","name","projectRef"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/users/me/last-visited-org":{"post":{"operationId":"userLastVisitedOrg","tags":["User"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"handle":{"type":"string","maxLength":64}},"required":["handle"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]}},"required":["success"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/user/account":{"delete":{"operationId":"userAccountDelete","tags":["User"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]}},"required":["success"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/user/data-exports":{"post":{"operationId":"dataExportCreate","tags":["Data exports"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiDataExportCreateResponse"}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"get":{"operationId":"dataExportList","tags":["Data exports"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"jobs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["queued","running","completed","failed"]},"requested_at":{"type":"string"},"started_at":{"type":["string","null"]},"completed_at":{"type":["string","null"]},"expires_at":{"type":"string"},"download_url":{"type":["string","null"]},"error_message":{"type":["string","null"]}},"required":["id","status","requested_at","started_at","completed_at","expires_at","download_url","error_message"]}},"media_url_ttl_seconds":{"type":"number"}},"required":["jobs","media_url_ttl_seconds"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/user/data-exports/{jobId}":{"get":{"operationId":"dataExportGet","tags":["Data exports"],"parameters":[{"schema":{"type":"string","description":"jobId path parameter"},"required":true,"description":"jobId path parameter","name":"jobId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiDataExportCreateResponse"}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/user/data-exports/{jobId}/download":{"get":{"operationId":"dataExportDownload","tags":["Data exports"],"parameters":[{"schema":{"type":"string","description":"jobId path parameter"},"required":true,"description":"jobId path parameter","name":"jobId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/organizations/me":{"get":{"operationId":"organizationsListForUser","tags":["Organizations"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"organizations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"handle":{"type":"string"},"name":{"type":"string"},"role":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","handle","name","role","createdAt"]}}},"required":["organizations"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/organizations":{"post":{"operationId":"organizationCreate","tags":["Organizations"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"orgHandle":{"type":"string","maxLength":64},"orgName":{"type":"string","maxLength":80}},"required":["orgHandle","orgName"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"organization":{"type":"object","properties":{"id":{"type":"string"},"handle":{"type":"string"},"name":{"type":"string"},"role":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","handle","name","role","createdAt"]}},"required":["organization"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/organizations/{orgHandle}/overview":{"get":{"operationId":"orgOverview","tags":["Organizations"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"org":{"type":"object","properties":{"id":{"type":"string"},"handle":{"type":"string"},"name":{"type":"string"},"role":{"type":"string"},"memberCount":{"type":"number"},"createdAt":{"type":"string"}},"required":["id","handle","name","role","memberCount","createdAt"]},"totals":{"type":"object","properties":{"projects":{"type":"number"},"sessions":{"type":"number"},"signals":{"type":"number"},"tasks":{"type":"number"}},"required":["projects","sessions","signals","tasks"]},"projects":{"type":"array","items":{"type":"object","properties":{"projectId":{"type":"string"},"projectHandle":{"type":"string"},"projectName":{"type":"string"},"description":{"type":["string","null"]},"canonicalPath":{"type":"string"},"sessionsLast30d":{"type":"number"},"signalsLast30d":{"type":"number"},"openTaskCount":{"type":"number"},"lastActivityAt":{"type":["string","null"]},"activityLast7d":{"type":"boolean"},"attentionCount":{"type":"number"}},"required":["projectId","projectHandle","projectName","description","canonicalPath","sessionsLast30d","signalsLast30d","openTaskCount","lastActivityAt","activityLast7d","attentionCount"]}},"recentActivity":{"type":"array","items":{"type":"object","properties":{"eventId":{"type":"string"},"eventType":{"type":"string","enum":["session_captured","signal_extracted","task_created","task_shipped"]},"projectId":{"type":"string"},"projectHandle":{"type":"string"},"projectName":{"type":"string"},"occurredAt":{"type":"string"},"title":{"type":"string"},"detail":{"type":["string","null"]},"href":{"type":"string"}},"required":["eventId","eventType","projectId","projectHandle","projectName","occurredAt","title","detail","href"]}}},"required":["org","totals","projects","recentActivity"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects":{"get":{"operationId":"projectList","tags":["Projects"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"projects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"handle":{"type":"string"},"name":{"type":"string"},"description":{"type":["string","null"]},"organization_id":{"type":"string"},"org_handle":{"type":["string","null"]},"project_handle":{"type":"string"},"project_ref":{"type":["string","null"]},"canonical_path":{"type":["string","null"]},"owner_id":{"type":"number"},"github_repo_url":{"type":["string","null"]},"github_default_branch":{"type":"string"},"github_installation_id":{"type":["string","null"]},"linear_team_id":{"type":["string","null"]},"widget_install_last_seen_at":{"type":["string","null"]},"public_key":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","handle","name","description","organization_id","org_handle","project_handle","project_ref","canonical_path","owner_id","github_repo_url","github_default_branch","github_installation_id","linear_team_id","widget_install_last_seen_at","public_key","created_at","updated_at"]}}},"required":["projects"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"post":{"operationId":"projectCreate","tags":["Projects"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"handle":{"type":"string"},"description":{"type":["string","null"]},"github_repo_url":{"type":["string","null"]},"github_default_branch":{"type":["string","null"]}},"required":["name"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiProjectMutationResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}":{"get":{"operationId":"projectGet","tags":["Projects"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"project":{"type":"object","properties":{"id":{"type":"string"},"handle":{"type":"string"},"name":{"type":"string"},"description":{"type":["string","null"]},"organization_id":{"type":"string"},"org_handle":{"type":["string","null"]},"project_handle":{"type":"string"},"project_ref":{"type":["string","null"]},"canonical_path":{"type":["string","null"]},"owner_id":{"type":"number"},"github_repo_url":{"type":["string","null"]},"github_default_branch":{"type":"string"},"github_installation_id":{"type":["string","null"]},"linear_team_id":{"type":["string","null"]},"widget_install_last_seen_at":{"type":["string","null"]},"public_key":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","handle","name","description","organization_id","org_handle","project_handle","project_ref","canonical_path","owner_id","github_repo_url","github_default_branch","github_installation_id","linear_team_id","widget_install_last_seen_at","public_key","created_at","updated_at"]},"members":{"type":"array","items":{"type":"object","properties":{"project_id":{"type":"string"},"user_id":{"type":"number"},"role":{"type":"string"},"created_at":{"type":"string"}},"required":["project_id","user_id","role","created_at"]}},"current_user_org_role":{"type":["string","null"]}},"required":["project","members","current_user_org_role"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"patch":{"operationId":"projectPatch","tags":["Projects"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"handle":{"type":"string"},"description":{"type":["string","null"]},"github_repo_url":{"type":["string","null"]},"github_default_branch":{"type":["string","null"]}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiProjectMutationResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"delete":{"operationId":"projectDelete","tags":["Projects"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSuccessResponse"}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/signal-health":{"get":{"operationId":"projectSignalHealth","tags":["Projects"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"project_id":{"type":"string"},"session_count":{"type":"number"},"signal_counts":{"type":"object","additionalProperties":{"type":"number"}},"signal_total":{"type":"number"},"signal_distribution":{"type":"object","additionalProperties":{"type":"number"}},"task_counts":{"type":"object","additionalProperties":{"type":"number"}},"task_total":{"type":"number"},"study_count":{"type":"number"},"coverage_gaps":{"type":"array","items":{"type":"string"}}},"required":["project_id","session_count","signal_counts","signal_total","signal_distribution","task_counts","task_total","study_count","coverage_gaps"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/coverage-gaps":{"get":{"operationId":"projectCoverageGaps","tags":["Projects"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"project_id":{"type":"string"},"gaps":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["published_unlinked_evidence","repeated_needs_review_evidence","high_confidence_unlinked_evidence","work_with_weak_or_no_published_evidence"]},"project_id":{"type":"string"},"target_surface":{"type":"string","enum":["product_under_test","usertold_widget_interview","interviewer_conductor_behavior","ambiguous_needs_review"]},"signal_type":{"type":["string","null"]},"summary":{"type":"string"},"count":{"type":"number"},"evidence_ids":{"type":"array","items":{"type":"string"}},"work_ids":{"type":"array","items":{"type":"string"}},"suggested_action":{"type":"string"}},"required":["id","type","project_id","target_surface","signal_type","summary","count","evidence_ids","work_ids","suggested_action"]}},"totals":{"type":"object","properties":{"published_unlinked_evidence":{"type":"number"},"repeated_needs_review_evidence":{"type":"number"},"high_confidence_unlinked_evidence":{"type":"number"},"work_with_weak_or_no_published_evidence":{"type":"number"}},"required":["published_unlinked_evidence","repeated_needs_review_evidence","high_confidence_unlinked_evidence","work_with_weak_or_no_published_evidence"]}},"required":["project_id","gaps","totals"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/purge":{"post":{"operationId":"projectPurge","tags":["Retention"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiPurgeResponse"}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/sessions/{sessionId}/purge":{"post":{"operationId":"sessionPurge","tags":["Retention"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"sessionId path parameter"},"required":true,"description":"sessionId path parameter","name":"sessionId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiPurgeResponse"}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/signals/{signalId}/purge":{"post":{"operationId":"signalPurge","tags":["Retention"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"signalId path parameter"},"required":true,"description":"signalId path parameter","name":"signalId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiPurgeResponse"}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/tasks/{taskId}/purge":{"post":{"operationId":"taskPurge","tags":["Retention"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"taskId path parameter"},"required":true,"description":"taskId path parameter","name":"taskId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiPurgeResponse"}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/screeners/{screenerId}/purge":{"post":{"operationId":"screenerPurge","tags":["Retention"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"screenerId path parameter"},"required":true,"description":"screenerId path parameter","name":"screenerId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiPurgeResponse"}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/studies/{studyId}/purge":{"post":{"operationId":"studyPurge","tags":["Retention"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"studyId path parameter"},"required":true,"description":"studyId path parameter","name":"studyId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiPurgeResponse"}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/sessions/{sessionId}/signals":{"post":{"operationId":"sessionSignalCreate","tags":["Signals"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"sessionId path parameter"},"required":true,"description":"sessionId path parameter","name":"sessionId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"signal_type":{"type":"string"},"target_surface":{"type":"string","enum":["product_under_test","usertold_widget_interview","interviewer_conductor_behavior","ambiguous_needs_review"]},"quote":{"type":"string"},"context":{"type":"string"},"timestamp_ms":{"type":"number"},"page_url":{"type":"string"},"page_title":{"type":"string"}},"required":["signal_type","quote"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSignalResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/signals":{"get":{"operationId":"signalsList","tags":["Signals"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string"},"required":false,"name":"type","in":"query"},{"schema":{"type":"string","enum":["product_under_test","usertold_widget_interview","interviewer_conductor_behavior","ambiguous_needs_review","all"]},"required":false,"name":"target_surface","in":"query"},{"schema":{"type":"string"},"required":false,"name":"session_id","in":"query"},{"schema":{"type":"string"},"required":false,"name":"task_id","in":"query"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"},{"schema":{"type":"string"},"required":false,"name":"min_confidence","in":"query"},{"schema":{"type":"string"},"required":false,"name":"dismissed","in":"query"},{"schema":{"type":"string"},"required":false,"name":"include_closed","in":"query"},{"schema":{"type":"string"},"required":false,"name":"review_status","in":"query"},{"schema":{"type":"string","enum":["active","needs_review","active_linked","active_unlinked","possible_recurrence","resolved"]},"required":false,"name":"review_state","in":"query"},{"schema":{"type":"string"},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string"},"required":false,"name":"offset","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"signals":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"project_id":{"type":"string"},"session_id":{"type":"string"},"signal_type":{"type":"string"},"target_surface":{"type":"string","enum":["product_under_test","usertold_widget_interview","interviewer_conductor_behavior","ambiguous_needs_review"]},"confidence":{"type":"number"},"intensity":{"type":["number","null"]},"quote":{"type":"string"},"context":{"type":["string","null"]},"analysis":{"type":["string","null"]},"timestamp_ms":{"type":["number","null"]},"segment_id":{"type":["string","null"]},"task_id":{"type":["string","null"]},"page_url":{"type":["string","null"]},"page_title":{"type":["string","null"]},"preceding_actions":{"type":["string","null"]},"user_goal":{"type":["string","null"]},"outcome":{"type":["string","null"]},"headline":{"type":["string","null"]},"claim":{"type":["string","null"]},"reconstruction":{"type":["string","null"]},"observed_facts_json":{"type":["string","null"]},"evidence_grade":{"type":["string","null"]},"window_start_ms":{"type":["number","null"]},"window_end_ms":{"type":["number","null"]},"review_status":{"type":["string","null"]},"review_note":{"type":["string","null"]},"annotation_text":{"type":["string","null"]},"annotation_by":{"type":["string","null"]},"annotation_at":{"type":["string","null"]},"dismissed_at":{"type":["string","null"]},"dismissed_reason":{"type":["string","null"]},"dismissed_by":{"type":["string","null"]},"source":{"type":["string","null"]},"created_at":{"type":"string"},"linked_task":{"type":["object","null"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"status":{"type":"string","enum":["backlog","ready","in_progress","done","wont_fix"]},"linear_issue_id":{"type":["string","null"]},"linear_issue_url":{"type":["string","null"]},"linear_issue_status":{"type":["string","null"]}},"required":["id","title","status"]},"evidence_resolution":{"type":["object","null"],"properties":{"task_id":{"type":"string"},"resolved_at":{"type":["string","null"]},"resolved_by_provider":{"type":["string","null"]},"resolved_by_provider_issue_id":{"type":["string","null"]},"resolution_reason":{"type":["string","null"]}},"required":["resolved_at","resolved_by_provider","resolved_by_provider_issue_id","resolution_reason"]},"recurrence_candidates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"related_task_id":{"type":"string"},"related_resolved_signal_id":{"type":["string","null"]},"confidence":{"type":"number"},"reason":{"type":["string","null"]},"status":{"type":"string","enum":["candidate","confirmed","dismissed"]},"created_at":{"type":"string"},"reviewed_at":{"type":["string","null"]},"related_task":{"type":["object","null"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"status":{"type":"string","enum":["backlog","ready","in_progress","done","wont_fix"]}},"required":["id","title","status"]}},"required":["id","related_task_id","related_resolved_signal_id","confidence","reason","status","created_at","reviewed_at"]}},"provenance":{"type":["object","null"],"properties":{"study":{"type":["object","null"],"properties":{"id":{"type":"string"},"title":{"type":"string"}},"required":["id","title"]},"interview":{"type":["object","null"],"properties":{"id":{"type":"string"},"participant_name":{"type":["string","null"]},"started_at":{"type":["string","null"]},"interview_mode":{"type":["string","null"]},"duration_seconds":{"type":["number","null"]}},"required":["id","participant_name","started_at","interview_mode","duration_seconds"]},"page":{"type":["object","null"],"properties":{"url":{"type":["string","null"]},"title":{"type":["string","null"]}},"required":["url","title"]},"timestamp_ms":{"type":["number","null"]},"source":{"type":["string","null"]}},"required":["study","interview","page","timestamp_ms","source"]},"case_file":{"type":["object","null"],"properties":{"case_file_version":{"type":"string","enum":["evidence_case_file.v1"]},"evidence_card":{"type":"object","properties":{"contract_version":{"type":"string","enum":["pipeline.v1"]},"artifact_kind":{"type":"string","enum":["evidence_card"]},"artifact_id":{"type":"string"},"project_id":{"type":"string"},"session_id":{"type":"string"},"created_at":{"type":"string"},"evidence":{"type":"object","properties":{"signal_type":{"type":"string","enum":["struggling_moment","desired_outcome","workaround","hiring_criteria","firing_moment","emotional_response","no_issue_found","smooth_completion","critical_error","recovery_success","decision_point"]},"target_surface":{"type":["string","null"],"enum":["product_under_test","usertold_widget_interview","interviewer_conductor_behavior","ambiguous_needs_review",null]},"quote":{"type":"string"},"context":{"type":["string","null"]},"analysis":{"type":["string","null"]},"confidence":{"type":"number"},"intensity":{"type":["number","null"]},"timestamp_ms":{"type":"number"},"segment_id":{"type":"string"},"page_url":{"type":["string","null"]},"page_title":{"type":["string","null"]},"preceding_actions":{"type":["array","null"],"items":{"type":"string"}},"user_goal":{"type":["string","null"]},"outcome":{"type":["string","null"]},"headline":{"type":["string","null"]},"claim":{"type":["string","null"]},"reconstruction":{"type":["string","null"]},"observed_facts":{"type":["array","null"],"items":{"type":"string"}},"evidence_grade":{"type":["string","null"],"enum":["direct","strong_circumstantial","weak",null]},"window_start_ms":{"type":["number","null"]},"window_end_ms":{"type":["number","null"]},"transcript_uncertain":{"type":["boolean","null"]},"transcript_uncertainty_note":{"type":["string","null"]}},"required":["signal_type","quote","confidence"]}},"required":["contract_version","artifact_kind","evidence"]},"provenance":{"type":["object","null"],"properties":{"study":{"type":["object","null"],"properties":{"id":{"type":"string"},"title":{"type":"string"}},"required":["id","title"]},"interview":{"type":["object","null"],"properties":{"id":{"type":"string"},"participant_name":{"type":["string","null"]},"started_at":{"type":["string","null"]},"interview_mode":{"type":["string","null"]},"duration_seconds":{"type":["number","null"]}},"required":["id","participant_name","started_at","interview_mode","duration_seconds"]},"page":{"type":["object","null"],"properties":{"url":{"type":["string","null"]},"title":{"type":["string","null"]}},"required":["url","title"]},"timestamp_ms":{"type":["number","null"]},"source":{"type":["string","null"]}},"required":["study","interview","page","timestamp_ms","source"]},"review":{"type":"object","properties":{"review_status":{"type":["string","null"]},"review_note":{"type":["string","null"]},"annotation_text":{"type":["string","null"]},"annotation_by":{"type":["string","null"]},"annotation_at":{"type":["string","null"]},"dismissed_at":{"type":["string","null"]},"dismissed_reason":{"type":["string","null"]},"dismissed_by":{"type":["string","null"]}},"required":["review_status","review_note","annotation_text","annotation_by","annotation_at","dismissed_at","dismissed_reason","dismissed_by"]},"links":{"type":"object","properties":{"task_id":{"type":["string","null"]},"linked_task":{"type":["object","null"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"status":{"type":"string"},"linear_issue_id":{"type":["string","null"]},"linear_issue_url":{"type":["string","null"]},"linear_issue_status":{"type":["string","null"]}},"required":["id","title","status"]},"evidence_resolution":{"type":["object","null"],"properties":{"task_id":{"type":"string"},"resolved_at":{"type":["string","null"]},"resolved_by_provider":{"type":["string","null"]},"resolved_by_provider_issue_id":{"type":["string","null"]},"resolution_reason":{"type":["string","null"]}},"required":["resolved_at","resolved_by_provider","resolved_by_provider_issue_id","resolution_reason"]},"recurrence_candidates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"related_task_id":{"type":"string"},"related_resolved_signal_id":{"type":["string","null"]},"confidence":{"type":"number"},"reason":{"type":["string","null"]},"status":{"type":"string"},"created_at":{"type":"string"},"reviewed_at":{"type":["string","null"]},"related_task":{"type":["object","null"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"status":{"type":"string"}},"required":["id","title","status"]}},"required":["id","related_task_id","related_resolved_signal_id","confidence","reason","status","created_at","reviewed_at"]}}},"required":["task_id","recurrence_candidates"]}},"required":["case_file_version","evidence_card","provenance","review","links"]}},"required":["id","project_id","session_id","signal_type","target_surface","confidence","intensity","quote","context","analysis","timestamp_ms","segment_id","task_id","page_url","page_title","preceding_actions","user_goal","outcome","annotation_text","annotation_by","annotation_at","dismissed_at","dismissed_reason","dismissed_by","source","created_at"]}},"total":{"type":"number"},"inbox_counts":{"type":"object","properties":{"active":{"type":"number"},"needs_review":{"type":"number"},"active_linked":{"type":"number"},"active_unlinked":{"type":"number"},"possible_recurrence":{"type":"number"},"resolved":{"type":"number"}},"required":["active","needs_review","active_linked","active_unlinked","possible_recurrence","resolved"]}},"required":["signals","total"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/signals/{signalId}":{"get":{"operationId":"signalGet","tags":["Signals"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"signalId path parameter"},"required":true,"description":"signalId path parameter","name":"signalId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSignalResponse"}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"patch":{"operationId":"signalPatch","tags":["Signals"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"signalId path parameter"},"required":true,"description":"signalId path parameter","name":"signalId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"signal_type":{"type":"string"},"target_surface":{"type":["string","null"],"enum":["product_under_test","usertold_widget_interview","interviewer_conductor_behavior","ambiguous_needs_review",null]},"confidence":{"type":"number"},"intensity":{"type":["number","null"]},"quote":{"type":"string"},"analysis":{"type":["string","null"]},"context":{"type":["string","null"]},"timestamp_ms":{"type":["number","null"]},"headline":{"type":["string","null"]},"claim":{"type":["string","null"]},"reconstruction":{"type":["string","null"]}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSignalResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"delete":{"operationId":"signalDelete","tags":["Signals"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"signalId path parameter"},"required":true,"description":"signalId path parameter","name":"signalId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSuccessResponse"}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/signals/{signalId}/annotate":{"post":{"operationId":"signalAnnotate","tags":["Signals"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"signalId path parameter"},"required":true,"description":"signalId path parameter","name":"signalId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSignalResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/signals/{signalId}/dismiss":{"post":{"operationId":"signalDismiss","tags":["Signals"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"signalId path parameter"},"required":true,"description":"signalId path parameter","name":"signalId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSignalResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/signals/{signalId}/undismiss":{"post":{"operationId":"signalUndismiss","tags":["Signals"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"signalId path parameter"},"required":true,"description":"signalId path parameter","name":"signalId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSignalResponse"}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/signals/{signalId}/review":{"post":{"operationId":"signalReview","tags":["Signals"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"signalId path parameter"},"required":true,"description":"signalId path parameter","name":"signalId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["needs_review","published","dismissed"]},"note":{"type":"string"}},"required":["status"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSignalResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/signals/{signalId}/link":{"post":{"operationId":"signalLink","tags":["Signals"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"signalId path parameter"},"required":true,"description":"signalId path parameter","name":"signalId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"task_id":{"type":"string"}},"required":["task_id"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSuccessResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/signals/{signalId}/unlink":{"post":{"operationId":"signalUnlink","tags":["Signals"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"signalId path parameter"},"required":true,"description":"signalId path parameter","name":"signalId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSuccessResponse"}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/signals/bulk-link":{"post":{"operationId":"signalsBulkLink","tags":["Signals"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"signal_ids":{"type":"array","items":{"type":"string"},"minItems":1},"task_id":{"type":"string"}},"required":["signal_ids","task_id"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"processed":{"type":"number"},"succeeded":{"type":"number"},"failed":{"type":"number"},"task_id":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"signal_id":{"type":"string"},"error":{"type":"string"}},"required":["signal_id","error"]}}},"required":["processed","succeeded","failed","errors"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/tasks":{"get":{"operationId":"tasksList","tags":["Tasks"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","enum":["backlog","ready","in_progress","done","wont_fix"]},"required":false,"name":"status","in":"query"},{"schema":{"type":"string"},"required":false,"name":"type","in":"query"},{"schema":{"type":"string","enum":["product_under_test","usertold_widget_interview","interviewer_conductor_behavior","ambiguous_needs_review","all"]},"required":false,"name":"target_surface","in":"query"},{"schema":{"type":"string"},"required":false,"name":"include_closed","in":"query"},{"schema":{"type":"string"},"required":false,"name":"session_id","in":"query"},{"schema":{"type":"string"},"required":false,"name":"min_priority","in":"query"},{"schema":{"type":"string"},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string"},"required":false,"name":"offset","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"tasks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"project_id":{"type":"string"},"title":{"type":"string"},"description":{"type":["string","null"]},"task_type":{"type":"string"},"target_surface":{"type":"string","enum":["product_under_test","usertold_widget_interview","interviewer_conductor_behavior","ambiguous_needs_review"]},"status":{"type":"string","enum":["backlog","ready","in_progress","done","wont_fix"]},"priority_score":{"type":"number"},"priority_label":{"type":"string"},"effort_estimate":{"type":["string","null"]},"signal_count":{"type":"number"},"session_count":{"type":"number"},"implementation_branch":{"type":["string","null"]},"implementation_pr_url":{"type":["string","null"]},"implementation_pr_number":{"type":["number","null"]},"deployed_at":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"},"relation_count":{"type":"number"},"provider_states":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"task_id":{"type":"string"},"project_id":{"type":"string"},"provider":{"type":"string"},"external_id":{"type":["string","null"]},"external_url":{"type":["string","null"]},"external_status":{"type":["string","null"]},"metadata_json":{"type":["string","null"]},"synced_at":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","task_id","project_id","provider","external_id","external_url","external_status","metadata_json","synced_at","created_at","updated_at"]}},"recurrence_candidates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"project_id":{"type":"string"},"new_signal_id":{"type":"string"},"related_task_id":{"type":"string"},"related_resolved_signal_id":{"type":["string","null"]},"confidence":{"type":"number"},"reason":{"type":["string","null"]},"status":{"type":"string","enum":["candidate","confirmed","dismissed"]},"created_at":{"type":"string"},"reviewed_at":{"type":["string","null"]}},"required":["id","project_id","new_signal_id","related_task_id","related_resolved_signal_id","confidence","reason","status","created_at","reviewed_at"]}}},"required":["id","project_id","title","description","task_type","target_surface","status","priority_score","priority_label","effort_estimate","signal_count","session_count","implementation_branch","implementation_pr_url","implementation_pr_number","deployed_at","created_at","updated_at"]}},"total":{"type":"number"}},"required":["tasks","total"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"post":{"operationId":"taskCreate","tags":["Tasks"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":["string","null"]},"task_type":{"type":"string"},"priority_score":{"type":"number"},"effort_estimate":{"type":["string","null"]}},"required":["title"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiTaskResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/tasks/ready":{"get":{"operationId":"tasksReady","tags":["Tasks"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"tasks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"project_id":{"type":"string"},"title":{"type":"string"},"description":{"type":["string","null"]},"task_type":{"type":"string"},"target_surface":{"type":"string","enum":["product_under_test","usertold_widget_interview","interviewer_conductor_behavior","ambiguous_needs_review"]},"status":{"type":"string","enum":["backlog","ready","in_progress","done","wont_fix"]},"priority_score":{"type":"number"},"priority_label":{"type":"string"},"effort_estimate":{"type":["string","null"]},"signal_count":{"type":"number"},"session_count":{"type":"number"},"implementation_branch":{"type":["string","null"]},"implementation_pr_url":{"type":["string","null"]},"implementation_pr_number":{"type":["number","null"]},"deployed_at":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","project_id","title","description","task_type","target_surface","status","priority_score","priority_label","effort_estimate","signal_count","session_count","implementation_branch","implementation_pr_url","implementation_pr_number","deployed_at","created_at","updated_at"]}}},"required":["tasks"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/tasks/from-signals":{"post":{"operationId":"taskCreateFromSignals","tags":["Tasks"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":["string","null"]},"task_type":{"type":"string"},"signal_ids":{"type":"array","items":{"type":"string"},"minItems":1}},"required":["title","signal_ids"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"task":{"type":"object","properties":{"id":{"type":"string"},"project_id":{"type":"string"},"title":{"type":"string"},"description":{"type":["string","null"]},"task_type":{"type":"string"},"target_surface":{"type":"string","enum":["product_under_test","usertold_widget_interview","interviewer_conductor_behavior","ambiguous_needs_review"]},"status":{"type":"string","enum":["backlog","ready","in_progress","done","wont_fix"]},"priority_score":{"type":"number"},"priority_label":{"type":"string"},"effort_estimate":{"type":["string","null"]},"signal_count":{"type":"number"},"session_count":{"type":"number"},"implementation_branch":{"type":["string","null"]},"implementation_pr_url":{"type":["string","null"]},"implementation_pr_number":{"type":["number","null"]},"deployed_at":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","project_id","title","description","task_type","target_surface","status","priority_score","priority_label","effort_estimate","signal_count","session_count","implementation_branch","implementation_pr_url","implementation_pr_number","deployed_at","created_at","updated_at"]},"linkedSignalIds":{"type":"array","items":{"type":"string"}},"priority":{"type":"object","properties":{"score":{"type":"number"},"label":{"type":"string"}},"required":["score","label"]}},"required":["task","linkedSignalIds","priority"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/tasks/{taskId}":{"get":{"operationId":"taskGet","tags":["Tasks"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"taskId path parameter"},"required":true,"description":"taskId path parameter","name":"taskId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"task":{"type":"object","properties":{"id":{"type":"string"},"project_id":{"type":"string"},"title":{"type":"string"},"description":{"type":["string","null"]},"task_type":{"type":"string"},"target_surface":{"type":"string","enum":["product_under_test","usertold_widget_interview","interviewer_conductor_behavior","ambiguous_needs_review"]},"status":{"type":"string","enum":["backlog","ready","in_progress","done","wont_fix"]},"priority_score":{"type":"number"},"priority_label":{"type":"string"},"effort_estimate":{"type":["string","null"]},"signal_count":{"type":"number"},"session_count":{"type":"number"},"implementation_branch":{"type":["string","null"]},"implementation_pr_url":{"type":["string","null"]},"implementation_pr_number":{"type":["number","null"]},"deployed_at":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","project_id","title","description","task_type","target_surface","status","priority_score","priority_label","effort_estimate","signal_count","session_count","implementation_branch","implementation_pr_url","implementation_pr_number","deployed_at","created_at","updated_at"]},"signals":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"project_id":{"type":"string"},"session_id":{"type":"string"},"signal_type":{"type":"string"},"target_surface":{"type":"string","enum":["product_under_test","usertold_widget_interview","interviewer_conductor_behavior","ambiguous_needs_review"]},"confidence":{"type":"number"},"intensity":{"type":["number","null"]},"quote":{"type":"string"},"context":{"type":["string","null"]},"analysis":{"type":["string","null"]},"timestamp_ms":{"type":["number","null"]},"segment_id":{"type":["string","null"]},"task_id":{"type":["string","null"]},"page_url":{"type":["string","null"]},"page_title":{"type":["string","null"]},"preceding_actions":{"type":["string","null"]},"user_goal":{"type":["string","null"]},"outcome":{"type":["string","null"]},"headline":{"type":["string","null"]},"claim":{"type":["string","null"]},"reconstruction":{"type":["string","null"]},"observed_facts_json":{"type":["string","null"]},"evidence_grade":{"type":["string","null"]},"window_start_ms":{"type":["number","null"]},"window_end_ms":{"type":["number","null"]},"review_status":{"type":["string","null"]},"review_note":{"type":["string","null"]},"annotation_text":{"type":["string","null"]},"annotation_by":{"type":["string","null"]},"annotation_at":{"type":["string","null"]},"dismissed_at":{"type":["string","null"]},"dismissed_reason":{"type":["string","null"]},"dismissed_by":{"type":["string","null"]},"source":{"type":["string","null"]},"created_at":{"type":"string"},"linked_task":{"type":["object","null"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"status":{"type":"string","enum":["backlog","ready","in_progress","done","wont_fix"]},"linear_issue_id":{"type":["string","null"]},"linear_issue_url":{"type":["string","null"]},"linear_issue_status":{"type":["string","null"]}},"required":["id","title","status"]},"evidence_resolution":{"type":["object","null"],"properties":{"resolved_at":{"type":["string","null"]},"resolved_by_provider":{"type":["string","null"]},"resolved_by_provider_issue_id":{"type":["string","null"]},"resolution_reason":{"type":["string","null"]}},"required":["resolved_at","resolved_by_provider","resolved_by_provider_issue_id","resolution_reason"]},"recurrence_candidates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"related_task_id":{"type":"string"},"related_resolved_signal_id":{"type":["string","null"]},"confidence":{"type":"number"},"reason":{"type":["string","null"]},"status":{"type":"string","enum":["candidate","confirmed","dismissed"]},"created_at":{"type":"string"},"reviewed_at":{"type":["string","null"]},"related_task":{"type":["object","null"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"status":{"type":"string","enum":["backlog","ready","in_progress","done","wont_fix"]}},"required":["id","title","status"]}},"required":["id","related_task_id","related_resolved_signal_id","confidence","reason","status","created_at","reviewed_at"]}},"provenance":{"type":["object","null"],"properties":{"study":{"type":["object","null"],"properties":{"id":{"type":"string"},"title":{"type":"string"}},"required":["id","title"]},"interview":{"type":["object","null"],"properties":{"id":{"type":"string"},"participant_name":{"type":["string","null"]},"started_at":{"type":["string","null"]},"interview_mode":{"type":["string","null"]},"duration_seconds":{"type":["number","null"]}},"required":["id","participant_name","started_at","interview_mode","duration_seconds"]},"page":{"type":["object","null"],"properties":{"url":{"type":["string","null"]},"title":{"type":["string","null"]}},"required":["url","title"]},"timestamp_ms":{"type":["number","null"]},"source":{"type":["string","null"]}},"required":["study","interview","page","timestamp_ms","source"]},"case_file":{"type":["object","null"],"properties":{"case_file_version":{"type":"string","enum":["evidence_case_file.v1"]},"evidence_card":{"type":"object","properties":{"contract_version":{"type":"string","enum":["pipeline.v1"]},"artifact_kind":{"type":"string","enum":["evidence_card"]},"artifact_id":{"type":"string"},"project_id":{"type":"string"},"session_id":{"type":"string"},"created_at":{"type":"string"},"evidence":{"type":"object","properties":{"signal_type":{"type":"string","enum":["struggling_moment","desired_outcome","workaround","hiring_criteria","firing_moment","emotional_response","no_issue_found","smooth_completion","critical_error","recovery_success","decision_point"]},"target_surface":{"type":["string","null"],"enum":["product_under_test","usertold_widget_interview","interviewer_conductor_behavior","ambiguous_needs_review",null]},"quote":{"type":"string"},"context":{"type":["string","null"]},"analysis":{"type":["string","null"]},"confidence":{"type":"number"},"intensity":{"type":["number","null"]},"timestamp_ms":{"type":"number"},"segment_id":{"type":"string"},"page_url":{"type":["string","null"]},"page_title":{"type":["string","null"]},"preceding_actions":{"type":["array","null"],"items":{"type":"string"}},"user_goal":{"type":["string","null"]},"outcome":{"type":["string","null"]},"headline":{"type":["string","null"]},"claim":{"type":["string","null"]},"reconstruction":{"type":["string","null"]},"observed_facts":{"type":["array","null"],"items":{"type":"string"}},"evidence_grade":{"type":["string","null"],"enum":["direct","strong_circumstantial","weak",null]},"window_start_ms":{"type":["number","null"]},"window_end_ms":{"type":["number","null"]},"transcript_uncertain":{"type":["boolean","null"]},"transcript_uncertainty_note":{"type":["string","null"]}},"required":["signal_type","quote","confidence"]}},"required":["contract_version","artifact_kind","evidence"]},"provenance":{"type":["object","null"],"properties":{"study":{"type":["object","null"],"properties":{"id":{"type":"string"},"title":{"type":"string"}},"required":["id","title"]},"interview":{"type":["object","null"],"properties":{"id":{"type":"string"},"participant_name":{"type":["string","null"]},"started_at":{"type":["string","null"]},"interview_mode":{"type":["string","null"]},"duration_seconds":{"type":["number","null"]}},"required":["id","participant_name","started_at","interview_mode","duration_seconds"]},"page":{"type":["object","null"],"properties":{"url":{"type":["string","null"]},"title":{"type":["string","null"]}},"required":["url","title"]},"timestamp_ms":{"type":["number","null"]},"source":{"type":["string","null"]}},"required":["study","interview","page","timestamp_ms","source"]},"review":{"type":"object","properties":{"review_status":{"type":["string","null"]},"review_note":{"type":["string","null"]},"annotation_text":{"type":["string","null"]},"annotation_by":{"type":["string","null"]},"annotation_at":{"type":["string","null"]},"dismissed_at":{"type":["string","null"]},"dismissed_reason":{"type":["string","null"]},"dismissed_by":{"type":["string","null"]}},"required":["review_status","review_note","annotation_text","annotation_by","annotation_at","dismissed_at","dismissed_reason","dismissed_by"]},"links":{"type":"object","properties":{"task_id":{"type":["string","null"]},"linked_task":{"type":["object","null"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"status":{"type":"string"},"linear_issue_id":{"type":["string","null"]},"linear_issue_url":{"type":["string","null"]},"linear_issue_status":{"type":["string","null"]}},"required":["id","title","status"]},"evidence_resolution":{"type":["object","null"],"properties":{"task_id":{"type":"string"},"resolved_at":{"type":["string","null"]},"resolved_by_provider":{"type":["string","null"]},"resolved_by_provider_issue_id":{"type":["string","null"]},"resolution_reason":{"type":["string","null"]}},"required":["resolved_at","resolved_by_provider","resolved_by_provider_issue_id","resolution_reason"]},"recurrence_candidates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"related_task_id":{"type":"string"},"related_resolved_signal_id":{"type":["string","null"]},"confidence":{"type":"number"},"reason":{"type":["string","null"]},"status":{"type":"string"},"created_at":{"type":"string"},"reviewed_at":{"type":["string","null"]},"related_task":{"type":["object","null"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"status":{"type":"string"}},"required":["id","title","status"]}},"required":["id","related_task_id","related_resolved_signal_id","confidence","reason","status","created_at","reviewed_at"]}}},"required":["task_id","recurrence_candidates"]}},"required":["case_file_version","evidence_card","provenance","review","links"]}},"required":["id","project_id","session_id","signal_type","target_surface","confidence","intensity","quote","context","analysis","timestamp_ms","segment_id","task_id","page_url","page_title","preceding_actions","user_goal","outcome","annotation_text","annotation_by","annotation_at","dismissed_at","dismissed_reason","dismissed_by","source","created_at"]}},"status_history":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"task_id":{"type":"string"},"project_id":{"type":"string"},"from_status":{"type":["string","null"],"enum":["backlog","ready","in_progress","done","wont_fix",null]},"to_status":{"type":"string","enum":["backlog","ready","in_progress","done","wont_fix"]},"source":{"type":"string","enum":["user","mcp","linear_webhook","github_webhook","impact_measurement","consolidation_reopen","system"]},"reason":{"type":["string","null"]},"actor_id":{"type":["string","null"]},"created_at":{"type":"string"}},"required":["id","task_id","project_id","from_status","to_status","source","reason","actor_id","created_at"]}},"related_tasks":{"type":"array","items":{"type":"object","properties":{"relation_id":{"type":"string"},"relation_type":{"type":"string"},"reason":{"type":["string","null"]},"score":{"type":["number","null"]},"source":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"task":{"type":"object","properties":{"id":{"type":"string"},"project_id":{"type":"string"},"title":{"type":"string"},"description":{"type":["string","null"]},"task_type":{"type":"string"},"target_surface":{"type":"string","enum":["product_under_test","usertold_widget_interview","interviewer_conductor_behavior","ambiguous_needs_review"]},"status":{"type":"string","enum":["backlog","ready","in_progress","done","wont_fix"]},"priority_score":{"type":"number"},"priority_label":{"type":"string"},"effort_estimate":{"type":["string","null"]},"signal_count":{"type":"number"},"session_count":{"type":"number"},"implementation_branch":{"type":["string","null"]},"implementation_pr_url":{"type":["string","null"]},"implementation_pr_number":{"type":["number","null"]},"deployed_at":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","project_id","title","description","task_type","target_surface","status","priority_score","priority_label","effort_estimate","signal_count","session_count","implementation_branch","implementation_pr_url","implementation_pr_number","deployed_at","created_at","updated_at"]}},"required":["relation_id","relation_type","reason","score","source","created_at","updated_at","task"]}},"recurrence_candidates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"project_id":{"type":"string"},"new_signal_id":{"type":"string"},"related_task_id":{"type":"string"},"related_resolved_signal_id":{"type":["string","null"]},"confidence":{"type":"number"},"reason":{"type":["string","null"]},"status":{"type":"string","enum":["candidate","confirmed","dismissed"]},"created_at":{"type":"string"},"reviewed_at":{"type":["string","null"]}},"required":["id","project_id","new_signal_id","related_task_id","related_resolved_signal_id","confidence","reason","status","created_at","reviewed_at"]}},"work_decision_record":{"type":"object","properties":{"record_version":{"type":"string","enum":["work_decision_record.v1"]},"work":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"description":{"type":["string","null"]},"task_type":{"type":"string"},"target_surface":{"type":"string","enum":["product_under_test","usertold_widget_interview","interviewer_conductor_behavior","ambiguous_needs_review"]},"status":{"type":"string","enum":["backlog","ready","in_progress","done","wont_fix"]},"priority_score":{"type":"number"},"priority_label":{"type":"string"},"effort_estimate":{"type":["string","null"]},"signal_count":{"type":"number"},"session_count":{"type":"number"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","title","description","task_type","target_surface","status","priority_score","priority_label","effort_estimate","signal_count","session_count","created_at","updated_at"]},"decision":{"type":"object","properties":{"state":{"type":"string","enum":["blocked_needs_evidence","needs_project_review","ready_for_handoff","in_delivery","completed_under_watch","recurrence_review"]},"label":{"type":"string"},"recommended_next_action":{"type":"string"},"rationale":{"type":"array","items":{"type":"string"}}},"required":["state","label","recommended_next_action","rationale"]},"evidence":{"type":"object","properties":{"evidence_card_ids":{"type":"array","items":{"type":"string"}},"signal_types":{"type":"array","items":{"type":"string"}},"interview_ids":{"type":"array","items":{"type":"string"}},"average_confidence":{"type":["number","null"]},"average_intensity":{"type":["number","null"]},"top_quotes":{"type":"array","items":{"type":"object","properties":{"evidence_id":{"type":"string"},"quote":{"type":"string"},"signal_type":{"type":"string"},"confidence":{"type":"number"}},"required":["evidence_id","quote","signal_type","confidence"]}},"supporting_evidence_count":{"type":"number"},"counter_evidence_count":{"type":"number"},"needs_review_evidence_count":{"type":"number"},"dismissed_history_count":{"type":"number"},"calibration_evidence_count":{"type":"number"},"counter_evidence_quotes":{"type":"array","items":{"type":"object","properties":{"evidence_id":{"type":"string"},"quote":{"type":"string"},"signal_type":{"type":"string"},"confidence":{"type":"number"}},"required":["evidence_id","quote","signal_type","confidence"]}},"resolved_evidence_count":{"type":"number"}},"required":["evidence_card_ids","signal_types","interview_ids","average_confidence","average_intensity","top_quotes","supporting_evidence_count","counter_evidence_count","needs_review_evidence_count","dismissed_history_count","calibration_evidence_count","counter_evidence_quotes","resolved_evidence_count"]},"review":{"type":"object","properties":{"status_history_count":{"type":"number"},"latest_status_change":{"type":["object","null"],"properties":{"from_status":{"type":["string","null"]},"to_status":{"type":"string"},"source":{"type":"string"},"reason":{"type":["string","null"]},"created_at":{"type":"string"}},"required":["from_status","to_status","source","reason","created_at"]},"related_work_count":{"type":"number"},"recurrence_candidates":{"type":"object","properties":{"total":{"type":"number"},"active":{"type":"number"},"confirmed":{"type":"number"}},"required":["total","active","confirmed"]},"counter_evidence":{"type":"object","properties":{"state":{"type":"string","enum":["not_available","none_found","needs_review"]},"summary":{"type":"string"},"recommended_next_action":{"type":"string"}},"required":["state","summary","recommended_next_action"]}},"required":["status_history_count","latest_status_change","related_work_count","recurrence_candidates","counter_evidence"]}},"required":["record_version","work","decision","evidence","review"]}},"required":["task","signals"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"patch":{"operationId":"taskPatch","tags":["Tasks"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"taskId path parameter"},"required":true,"description":"taskId path parameter","name":"taskId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":["string","null"]},"task_type":{"type":"string"},"priority_score":{"type":"number"},"effort_estimate":{"type":["string","null"]},"status":{"type":"string","enum":["backlog","ready","in_progress","done","wont_fix"]},"status_reason":{"type":["string","null"]}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiTaskResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"delete":{"operationId":"taskDelete","tags":["Tasks"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"taskId path parameter"},"required":true,"description":"taskId path parameter","name":"taskId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSuccessResponse"}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/tasks/{taskId}/recurrence-candidates/{candidateId}/review":{"post":{"operationId":"taskRecurrenceCandidateReview","tags":["Tasks"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"taskId path parameter"},"required":true,"description":"taskId path parameter","name":"taskId","in":"path"},{"schema":{"type":"string","description":"candidateId path parameter"},"required":true,"description":"candidateId path parameter","name":"candidateId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["confirmed","dismissed"]}},"required":["status"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"recurrence_candidate":{"type":"object","properties":{"id":{"type":"string"},"project_id":{"type":"string"},"new_signal_id":{"type":"string"},"related_task_id":{"type":"string"},"related_resolved_signal_id":{"type":["string","null"]},"confidence":{"type":"number"},"reason":{"type":["string","null"]},"status":{"type":"string","enum":["candidate","confirmed","dismissed"]},"created_at":{"type":"string"},"reviewed_at":{"type":["string","null"]}},"required":["id","project_id","new_signal_id","related_task_id","related_resolved_signal_id","confidence","reason","status","created_at","reviewed_at"]}},"required":["recurrence_candidate"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/screeners":{"get":{"operationId":"screenersList","tags":["Screeners"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"screeners":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"project_id":{"type":"string"},"title":{"type":"string"},"description":{"type":["string","null"]},"handle":{"type":"string"},"slug":{"type":"string"},"status":{"type":"string"},"auto_managed":{"type":"number"},"max_participants":{"type":["number","null"]},"incentive_type":{"type":"string"},"incentive_value_cents":{"type":"number"},"incentive_description":{"type":["string","null"]},"logo_r2_key":{"type":["string","null"]},"brand_color":{"type":"string"},"welcome_message":{"type":["string","null"]},"thank_you_message":{"type":"string"},"disqualified_message":{"type":"string"},"consent_text":{"type":"string"},"complete_count":{"type":"number"},"qualified_count":{"type":"number"},"disqualified_count":{"type":"number"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","project_id","title","description","handle","slug","status","auto_managed","max_participants","incentive_type","incentive_value_cents","incentive_description","logo_r2_key","brand_color","welcome_message","thank_you_message","disqualified_message","consent_text","complete_count","qualified_count","disqualified_count","created_at","updated_at"]}}},"required":["screeners"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"post":{"operationId":"screenerCreate","tags":["Screeners"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":["string","null"]},"handle":{"type":"string"},"slug":{"type":"string"},"welcome_message":{"type":["string","null"]},"incentive_type":{"type":"string"},"incentive_value_cents":{"type":"number"},"incentive_description":{"type":["string","null"]},"brand_color":{"type":"string"},"consent_text":{"type":"string"},"max_participants":{"type":"number"},"questions":{"type":"array","items":{"type":"object","properties":{"question_text":{"type":"string"},"question_type":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"string"}},"min_value":{"type":"number"},"max_value":{"type":"number"},"qualification_rules":{"type":["object","null"],"additionalProperties":{}}},"required":["question_text","question_type"]}}},"required":["title"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"screener":{"type":"object","properties":{"id":{"type":"string"},"project_id":{"type":"string"},"title":{"type":"string"},"description":{"type":["string","null"]},"handle":{"type":"string"},"slug":{"type":"string"},"status":{"type":"string"},"auto_managed":{"type":"number"},"max_participants":{"type":["number","null"]},"incentive_type":{"type":"string"},"incentive_value_cents":{"type":"number"},"incentive_description":{"type":["string","null"]},"logo_r2_key":{"type":["string","null"]},"brand_color":{"type":"string"},"welcome_message":{"type":["string","null"]},"thank_you_message":{"type":"string"},"disqualified_message":{"type":"string"},"consent_text":{"type":"string"},"complete_count":{"type":"number"},"qualified_count":{"type":"number"},"disqualified_count":{"type":"number"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","project_id","title","description","handle","slug","status","auto_managed","max_participants","incentive_type","incentive_value_cents","incentive_description","logo_r2_key","brand_color","welcome_message","thank_you_message","disqualified_message","consent_text","complete_count","qualified_count","disqualified_count","created_at","updated_at"]},"questions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"screener_id":{"type":"string"},"question_text":{"type":"string"},"question_type":{"type":"string"},"required":{"type":"number"},"sort_order":{"type":"number"},"options_json":{"type":["string","null"]},"min_value":{"type":["number","null"]},"max_value":{"type":["number","null"]},"qualification_rules_json":{"type":["string","null"]},"created_at":{"type":"string"}},"required":["id","screener_id","question_text","question_type","required","sort_order","options_json","min_value","max_value","qualification_rules_json","created_at"]}}},"required":["screener","questions"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/screeners/{screenerId}":{"get":{"operationId":"screenerGet","tags":["Screeners"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"screenerId path parameter"},"required":true,"description":"screenerId path parameter","name":"screenerId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"screener":{"type":"object","properties":{"id":{"type":"string"},"project_id":{"type":"string"},"title":{"type":"string"},"description":{"type":["string","null"]},"handle":{"type":"string"},"slug":{"type":"string"},"status":{"type":"string"},"auto_managed":{"type":"number"},"max_participants":{"type":["number","null"]},"incentive_type":{"type":"string"},"incentive_value_cents":{"type":"number"},"incentive_description":{"type":["string","null"]},"logo_r2_key":{"type":["string","null"]},"brand_color":{"type":"string"},"welcome_message":{"type":["string","null"]},"thank_you_message":{"type":"string"},"disqualified_message":{"type":"string"},"consent_text":{"type":"string"},"complete_count":{"type":"number"},"qualified_count":{"type":"number"},"disqualified_count":{"type":"number"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","project_id","title","description","handle","slug","status","auto_managed","max_participants","incentive_type","incentive_value_cents","incentive_description","logo_r2_key","brand_color","welcome_message","thank_you_message","disqualified_message","consent_text","complete_count","qualified_count","disqualified_count","created_at","updated_at"]},"questions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"screener_id":{"type":"string"},"question_text":{"type":"string"},"question_type":{"type":"string"},"required":{"type":"number"},"sort_order":{"type":"number"},"options_json":{"type":["string","null"]},"min_value":{"type":["number","null"]},"max_value":{"type":["number","null"]},"qualification_rules_json":{"type":["string","null"]},"created_at":{"type":"string"}},"required":["id","screener_id","question_text","question_type","required","sort_order","options_json","min_value","max_value","qualification_rules_json","created_at"]}},"responses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"screener_id":{"type":"string"},"participant_name":{"type":["string","null"]},"participant_email":{"type":["string","null"]},"qualified":{"type":["number","null"]},"qualification_reason":{"type":["string","null"]},"answers_json":{"type":"string"},"session_id":{"type":["string","null"]},"utm_source":{"type":["string","null"]},"utm_medium":{"type":["string","null"]},"utm_campaign":{"type":["string","null"]},"consent_given":{"type":"number"},"created_at":{"type":"string"}},"required":["id","screener_id","participant_name","participant_email","qualified","qualification_reason","answers_json","session_id","utm_source","utm_medium","utm_campaign","consent_given","created_at"]}}},"required":["screener","questions","responses"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"patch":{"operationId":"screenerPatch","tags":["Screeners"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"screenerId path parameter"},"required":true,"description":"screenerId path parameter","name":"screenerId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":["string","null"]},"handle":{"type":"string"},"slug":{"type":"string"},"status":{"type":"string"},"auto_managed":{"type":"number"},"max_participants":{"type":"number"},"incentive_type":{"type":"string"},"incentive_value_cents":{"type":"number"},"incentive_description":{"type":["string","null"]},"logo_r2_key":{"type":["string","null"]},"brand_color":{"type":"string"},"welcome_message":{"type":["string","null"]},"thank_you_message":{"type":["string","null"]},"disqualified_message":{"type":["string","null"]},"consent_text":{"type":"string"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"screener":{"type":"object","properties":{"id":{"type":"string"},"project_id":{"type":"string"},"title":{"type":"string"},"description":{"type":["string","null"]},"handle":{"type":"string"},"slug":{"type":"string"},"status":{"type":"string"},"auto_managed":{"type":"number"},"max_participants":{"type":["number","null"]},"incentive_type":{"type":"string"},"incentive_value_cents":{"type":"number"},"incentive_description":{"type":["string","null"]},"logo_r2_key":{"type":["string","null"]},"brand_color":{"type":"string"},"welcome_message":{"type":["string","null"]},"thank_you_message":{"type":"string"},"disqualified_message":{"type":"string"},"consent_text":{"type":"string"},"complete_count":{"type":"number"},"qualified_count":{"type":"number"},"disqualified_count":{"type":"number"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","project_id","title","description","handle","slug","status","auto_managed","max_participants","incentive_type","incentive_value_cents","incentive_description","logo_r2_key","brand_color","welcome_message","thank_you_message","disqualified_message","consent_text","complete_count","qualified_count","disqualified_count","created_at","updated_at"]}},"required":["screener"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"delete":{"operationId":"screenerDelete","tags":["Screeners"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"screenerId path parameter"},"required":true,"description":"screenerId path parameter","name":"screenerId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSuccessResponse"}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/screeners/{screenerId}/questions":{"post":{"operationId":"screenerQuestionCreate","tags":["Screeners"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"screenerId path parameter"},"required":true,"description":"screenerId path parameter","name":"screenerId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"question_text":{"type":"string"},"question_type":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"string"}},"min_value":{"type":"number"},"max_value":{"type":"number"},"qualification_rules":{"type":["object","null"],"additionalProperties":{}}},"required":["question_text","question_type"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiScreenerQuestionResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"put":{"operationId":"screenerSetQuestions","tags":["Screeners"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"screenerId path parameter"},"required":true,"description":"screenerId path parameter","name":"screenerId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"questions":{"type":"array","items":{"type":"object","properties":{"question_text":{"type":"string"},"question_type":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"string"}},"min_value":{"type":"number"},"max_value":{"type":"number"},"qualification_rules":{"type":["object","null"],"additionalProperties":{}}},"required":["question_text","question_type"]}}},"required":["questions"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiScreenerQuestionsReorderResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/screeners/{screenerId}/questions/{questionId}":{"patch":{"operationId":"screenerQuestionPatch","tags":["Screeners"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"screenerId path parameter"},"required":true,"description":"screenerId path parameter","name":"screenerId","in":"path"},{"schema":{"type":"string","description":"questionId path parameter"},"required":true,"description":"questionId path parameter","name":"questionId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"question_text":{"type":"string"},"question_type":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"string"}},"min_value":{"type":"number"},"max_value":{"type":"number"},"qualification_rules":{"type":["object","null"],"additionalProperties":{}}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiScreenerQuestionResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"delete":{"operationId":"screenerQuestionDelete","tags":["Screeners"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"screenerId path parameter"},"required":true,"description":"screenerId path parameter","name":"screenerId","in":"path"},{"schema":{"type":"string","description":"questionId path parameter"},"required":true,"description":"questionId path parameter","name":"questionId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSuccessResponse"}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/screeners/{screenerId}/questions/reorder":{"post":{"operationId":"screenerQuestionReorder","tags":["Screeners"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"screenerId path parameter"},"required":true,"description":"screenerId path parameter","name":"screenerId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"question_ids":{"type":"array","items":{"type":"string"}}},"required":["question_ids"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiScreenerQuestionsReorderResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/screeners/{screenerId}/responses/{responseId}":{"get":{"operationId":"screenerResponseGet","tags":["Screeners"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"screenerId path parameter"},"required":true,"description":"screenerId path parameter","name":"screenerId","in":"path"},{"schema":{"type":"string","description":"responseId path parameter"},"required":true,"description":"responseId path parameter","name":"responseId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"response":{"type":"object","properties":{"id":{"type":"string"},"screener_id":{"type":"string"},"participant_name":{"type":["string","null"]},"participant_email":{"type":["string","null"]},"qualified":{"type":["number","null"]},"qualification_reason":{"type":["string","null"]},"answers_json":{"type":"string"},"session_id":{"type":["string","null"]},"utm_source":{"type":["string","null"]},"utm_medium":{"type":["string","null"]},"utm_campaign":{"type":["string","null"]},"consent_given":{"type":"number"},"created_at":{"type":"string"},"answers":{}},"required":["id","screener_id","participant_name","participant_email","qualified","qualification_reason","answers_json","session_id","utm_source","utm_medium","utm_campaign","consent_given","created_at"]}},"required":["response"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"patch":{"operationId":"screenerResponsePatch","tags":["Screeners"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"screenerId path parameter"},"required":true,"description":"screenerId path parameter","name":"screenerId","in":"path"},{"schema":{"type":"string","description":"responseId path parameter"},"required":true,"description":"responseId path parameter","name":"responseId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"qualified":{"type":"boolean"},"reason":{"type":"string"}},"required":["qualified"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"response":{"type":"object","properties":{"id":{"type":"string"},"screener_id":{"type":"string"},"participant_name":{"type":["string","null"]},"participant_email":{"type":["string","null"]},"qualified":{"type":["number","null"]},"qualification_reason":{"type":["string","null"]},"answers_json":{"type":"string"},"session_id":{"type":["string","null"]},"utm_source":{"type":["string","null"]},"utm_medium":{"type":["string","null"]},"utm_campaign":{"type":["string","null"]},"consent_given":{"type":"number"},"created_at":{"type":"string"}},"required":["id","screener_id","participant_name","participant_email","qualified","qualification_reason","answers_json","session_id","utm_source","utm_medium","utm_campaign","consent_given","created_at"]}},"required":["response"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/sdk/screeners":{"get":{"operationId":"screenerSDKList","tags":["Screeners"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"screeners":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"handle":{"type":"string"},"title":{"type":"string"},"brand_color":{"type":"string"},"welcome_message":{"type":["string","null"]}},"required":["id","handle","title","brand_color","welcome_message"]}}},"required":["screeners"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/sdk/screener/{screenerId}":{"get":{"operationId":"screenerSDKGet","tags":["Screeners"],"parameters":[{"schema":{"type":"string","description":"screenerId path parameter"},"required":true,"description":"screenerId path parameter","name":"screenerId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"screener":{"type":"object","properties":{"id":{"type":"string"},"handle":{"type":"string"},"title":{"type":"string"},"description":{"type":["string","null"]},"brand_color":{"type":"string"},"welcome_message":{"type":["string","null"]},"incentive_type":{"type":"string"},"incentive_description":{"type":["string","null"]},"consent_text":{"type":"string"}},"required":["id","handle","title","description","brand_color","welcome_message","incentive_type","incentive_description","consent_text"]},"questions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"question_text":{"type":"string"},"question_type":{"type":"string"},"required":{"type":"number"},"options":{"type":["array","null"],"items":{"type":"string"}},"min_value":{"type":["number","null"]},"max_value":{"type":["number","null"]}},"required":["id","question_text","question_type","required","options","min_value","max_value"]}}},"required":["screener","questions"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/sdk/screener/{screenerId}/respond":{"post":{"operationId":"screenerSDKRespond","tags":["Screeners"],"parameters":[{"schema":{"type":"string","description":"screenerId path parameter"},"required":true,"description":"screenerId path parameter","name":"screenerId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"participant_name":{"type":"string"},"participant_email":{"type":"string"},"answers":{"type":"object","additionalProperties":{}},"consent_given":{"type":"boolean"},"consent_recording":{"type":"boolean"},"consent_analytics":{"type":"boolean"},"consent_followup":{"type":"boolean"},"utm_source":{"type":"string"},"utm_medium":{"type":"string"},"utm_campaign":{"type":"string"}},"required":["answers"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"qualified":{"type":"boolean"},"session_id":{"type":"string"},"session_token":{"type":"string"},"study_id":{"type":["string","null"]},"study_handle":{"type":["string","null"]},"message":{"type":"string"}},"required":["qualified","message"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/studies":{"get":{"operationId":"studiesList","tags":["Studies"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"studies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"handle":{"type":"string"},"project_id":{"type":"string"},"title":{"type":"string"},"description":{"type":["string","null"]},"status":{"type":"string"},"goals_json":{"type":["string","null"]},"script_json":{"type":["string","null"]},"settings_json":{"type":["string","null"]},"allowed_selectors":{"type":["string","null"]},"allowed_origins":{"type":["string","null"]},"screener_id":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","handle","project_id","title","description","status","goals_json","script_json","settings_json","allowed_selectors","allowed_origins","screener_id","created_at","updated_at"]}},"activity":{"type":"object","additionalProperties":{"type":"object","properties":{"sessions":{"type":"number"},"new_this_week":{"type":"number"},"signals":{"type":"number"},"latest":{"type":["string","null"]}},"required":["sessions","new_this_week","signals","latest"]}}},"required":["studies"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"post":{"operationId":"studyCreate","tags":["Studies"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string"},"handle":{"type":"string"},"description":{"type":["string","null"]},"goals":{},"script":{},"settings":{},"allowed_selectors":{"type":"array","items":{"type":"string"}},"allowed_origins":{"type":"array","items":{"type":"string"}},"screener_id":{"type":["string","null"]},"auto_create_screener":{"type":"boolean"}},"required":["title"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiStudyResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/studies/{studyId}":{"get":{"operationId":"studyGet","tags":["Studies"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"studyId path parameter"},"required":true,"description":"studyId path parameter","name":"studyId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiStudyResponse"}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"patch":{"operationId":"studyPatch","tags":["Studies"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"studyId path parameter"},"required":true,"description":"studyId path parameter","name":"studyId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string"},"handle":{"type":"string"},"description":{"type":["string","null"]},"goals":{},"script":{},"settings":{},"allowed_selectors":{"type":"array","items":{"type":"string"}},"allowed_origins":{"type":"array","items":{"type":"string"}},"screener_id":{"type":["string","null"]},"auto_create_screener":{"type":"boolean"},"status":{"type":"string"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"study":{"type":"object","properties":{"id":{"type":"string"},"handle":{"type":"string"},"project_id":{"type":"string"},"title":{"type":"string"},"description":{"type":["string","null"]},"status":{"type":"string"},"goals_json":{"type":["string","null"]},"script_json":{"type":["string","null"]},"settings_json":{"type":["string","null"]},"allowed_selectors":{"type":["string","null"]},"allowed_origins":{"type":["string","null"]},"screener_id":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","handle","project_id","title","description","status","goals_json","script_json","settings_json","allowed_selectors","allowed_origins","screener_id","created_at","updated_at"]},"screener_status_changed":{"type":"boolean"},"warning":{"type":"string"}},"required":["study"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"delete":{"operationId":"studyDelete","tags":["Studies"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"studyId path parameter"},"required":true,"description":"studyId path parameter","name":"studyId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSuccessResponse"}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/studies/{studyId}/review-script":{"post":{"operationId":"studyReviewScript","tags":["Studies"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"studyId path parameter"},"required":true,"description":"studyId path parameter","name":"studyId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"script":{}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"valid":{"type":"boolean"},"errors":{"type":"array","items":{"type":"string"}},"summary":{"type":"object","properties":{"segment_count":{"type":"number"},"goal_count":{"type":"number"},"modes":{"type":"array","items":{"type":"string"}}},"required":["segment_count","goal_count","modes"]}},"required":["valid"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/sdk/study/{studyId}":{"get":{"operationId":"studySDKGet","tags":["Studies"],"parameters":[{"schema":{"type":"string","description":"studyId path parameter"},"required":true,"description":"studyId path parameter","name":"studyId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"study":{"type":"object","properties":{"id":{"type":"string"},"handle":{"type":"string"},"title":{"type":"string"},"goals":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"description":{"type":"string"}},"required":["id","description"]}},"script":{},"settings":{"type":"object","additionalProperties":{}},"allowed_selectors":{"type":"array","items":{"type":"string"}},"allowed_origins":{"type":"array","items":{"type":"string"}}},"required":["id","handle","title","goals","settings","allowed_selectors","allowed_origins"]},"widget_capabilities":{"type":"object","properties":{"realtime_reasoning":{"type":"boolean"},"realtime_tracing":{"type":"boolean"},"realtime_sideband":{"type":"boolean"},"realtime_mcp_connectors":{"type":"boolean"},"realtime_analysis":{"type":"boolean"},"realtime_duplex":{"type":"boolean"},"realtime_page_context":{"type":"boolean"},"realtime_visual_snapshots":{"type":"boolean"},"realtime_visual_guidance":{"type":"boolean"},"realtime_same_origin_navigation":{"type":"boolean"}},"required":["realtime_reasoning","realtime_tracing","realtime_sideband","realtime_mcp_connectors","realtime_analysis","realtime_duplex","realtime_page_context","realtime_visual_snapshots","realtime_visual_guidance","realtime_same_origin_navigation"]}},"required":["study","widget_capabilities"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/sdk/widget/availability":{"post":{"operationId":"sdkWidgetAvailability","tags":["SDK"],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"screener_id":{"type":"string","minLength":1}},"required":["screener_id"],"additionalProperties":false},{"type":"object","properties":{"study_id":{"type":"string","minLength":1}},"required":["study_id"],"additionalProperties":false}]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"available":{"type":"boolean"},"reason":{"type":"string","enum":["inactive","capacity_reached","linked_study_unavailable","runtime_unavailable"]}},"required":["available"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/sdk/sessions":{"post":{"operationId":"sdkSessionCreate","tags":["SDK"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"participant_name":{"type":"string"},"participant_email":{"type":"string"},"interview_mode":{"type":"string","enum":["voice","text","async"]},"study_id":{"type":"string"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"session_id":{"type":"string"},"session_token":{"type":"string"}},"required":["session_id","session_token"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/sdk/sessions/{sessionId}/runtime-token":{"post":{"operationId":"sdkSessionRuntimeToken","tags":["SDK"],"parameters":[{"schema":{"type":"string","description":"sessionId path parameter"},"required":true,"description":"sessionId path parameter","name":"sessionId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"session_token":{"type":"string"}},"required":["session_token"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/sdk/sessions/{sessionId}/consent":{"post":{"operationId":"sdkSessionConsent","tags":["SDK"],"parameters":[{"schema":{"type":"string","description":"sessionId path parameter"},"required":true,"description":"sessionId path parameter","name":"sessionId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"consent_copy_version":{"type":"string","minLength":1,"maxLength":64}},"required":["consent_copy_version"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]}},"required":["success"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/sdk/widget/install-beacon":{"post":{"operationId":"sdkWidgetInstallBeacon","tags":["SDK"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"last_seen_at":{"type":"string"}},"required":["success","last_seen_at"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/sdk/audio/upload":{"post":{"operationId":"sdkAudioUpload","tags":["SDK"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/sdk/sessions/{sessionId}/recording-state":{"get":{"operationId":"sdkRecordingState","tags":["SDK"],"parameters":[{"schema":{"type":"string","description":"sessionId path parameter"},"required":true,"description":"sessionId path parameter","name":"sessionId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"next_sequence":{"type":"object","properties":{"audio":{"type":"integer","minimum":0},"screen":{"type":"integer","minimum":0}},"required":["audio","screen"]},"next_capture_at_ms":{"type":"integer","minimum":0,"default":0}},"required":["next_sequence"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/sdk/sessions/{sessionId}/recording-health":{"post":{"operationId":"sdkRecordingHealthReport","tags":["SDK"],"parameters":[{"schema":{"type":"string","description":"sessionId path parameter"},"required":true,"description":"sessionId path parameter","name":"sessionId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["recovering_integrity","degraded","recovered"]},"stream":{"type":"string","enum":["audio","screen"]},"sequence":{"type":"integer","minimum":0},"attempts":{"type":"integer","exclusiveMinimum":0},"retryable":{"type":"boolean"},"message":{"type":"string"},"http_status":{"type":"integer"},"error_code":{"type":"string"}},"required":["status","stream","sequence","attempts","retryable","message"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSuccessResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/sdk/screen/upload-session/start":{"post":{"operationId":"sdkUploadStart","tags":["SDK"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"session_id":{"type":"string"}},"required":["session_id"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"upload_session_id":{"type":"string"}},"required":["upload_session_id"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/sdk/screen/upload-session/upload-part":{"post":{"operationId":"sdkUploadPart","tags":["SDK"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"part_number":{"type":"number"},"etag":{"type":"string"}},"required":["part_number","etag"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/sdk/screen/upload-session/finalize":{"post":{"operationId":"sdkUploadFinalize","tags":["SDK"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"session_id":{"type":"string"}},"required":["session_id"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"r2_key":{"type":"string"}},"required":["r2_key"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/settings":{"get":{"operationId":"settingsGet","tags":["Settings"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiProjectSettingsResponse"}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"patch":{"operationId":"settingsPatch","tags":["Settings"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiProjectSettingsResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/settings/validate":{"post":{"operationId":"settingsValidate","tags":["Settings"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"valid":{"type":"boolean"},"error":{"type":"string"}},"required":["valid"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/settings/key-health":{"get":{"operationId":"settingsKeyHealth","tags":["Settings"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"key_health":{"type":"object","properties":{"openai_api_key":{"type":["object","null"],"properties":{"status":{"type":"string","enum":["ok","warning","error","unknown"]},"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"},"checked_at":{"type":"string"},"remaining_balance_usd":{"type":"number"}},"required":["status","code","message","retryable","checked_at"]}},"required":["openai_api_key"]}},"required":["key_health"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/github-app/installations":{"get":{"operationId":"githubAppInstallations","tags":["GitHub App"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"installations":{"type":"array","items":{"type":"object","additionalProperties":{}}}},"required":["installations"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/github-app/select-installation":{"post":{"operationId":"githubAppSelectInstallation","tags":["GitHub App"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"installation_id":{"type":"string"}},"required":["installation_id"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSuccessResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/github-app/repos":{"get":{"operationId":"githubAppRepos","tags":["GitHub App"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"repos":{"type":"array","items":{"type":"object","properties":{"full_name":{"type":"string"},"html_url":{"type":"string"},"default_branch":{"type":"string"},"description":{"type":["string","null"]},"private":{"type":"boolean"}},"required":["full_name","html_url","default_branch","description","private"]}},"hasMore":{"type":"boolean"}},"required":["repos","hasMore"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/github-app/select-repo":{"post":{"operationId":"githubAppSelectRepo","tags":["GitHub App"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"repo_url":{"type":"string"},"default_branch":{"type":"string"}},"required":["repo_url"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"project":{"type":"object","properties":{"id":{"type":"string"},"handle":{"type":"string"},"name":{"type":"string"},"description":{"type":["string","null"]},"organization_id":{"type":"string"},"org_handle":{"type":["string","null"]},"project_handle":{"type":"string"},"project_ref":{"type":["string","null"]},"canonical_path":{"type":["string","null"]},"owner_id":{"type":"number"},"github_repo_url":{"type":["string","null"]},"github_default_branch":{"type":"string"},"github_installation_id":{"type":["string","null"]},"linear_team_id":{"type":["string","null"]},"widget_install_last_seen_at":{"type":["string","null"]},"public_key":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","handle","name","description","organization_id","org_handle","project_handle","project_ref","canonical_path","owner_id","github_repo_url","github_default_branch","github_installation_id","linear_team_id","widget_install_last_seen_at","public_key","created_at","updated_at"]}},"required":["success","project"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/github-app/install":{"get":{"operationId":"githubAppInstall","tags":["GitHub App"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/github/app/setup":{"get":{"operationId":"githubAppSetup","tags":["GitHub App"],"parameters":[{"schema":{"type":"string"},"required":false,"name":"installation_id","in":"query"},{"schema":{"type":"string"},"required":false,"name":"setup_action","in":"query"},{"schema":{"type":"string"},"required":false,"name":"state","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/linear/connect":{"get":{"operationId":"linearConnect","tags":["Linear"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string"},"required":false,"name":"return_to","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/linear/claim":{"get":{"operationId":"linearClaim","tags":["Linear"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string"},"required":false,"name":"return_to","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/linear/callback":{"get":{"operationId":"linearCallback","tags":["Linear"],"parameters":[{"schema":{"type":"string"},"required":false,"name":"code","in":"query"},{"schema":{"type":"string"},"required":false,"name":"state","in":"query"},{"schema":{"type":"string"},"required":false,"name":"error","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/linear/connection":{"get":{"operationId":"linearConnectionStatus","tags":["Linear"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"connected":{"type":"boolean"},"workspaceName":{"type":"string"},"workspaceUrlKey":{"type":"string"},"status":{"type":"string"}},"required":["connected"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"delete":{"operationId":"linearDisconnect","tags":["Linear"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"unlinkedOrg":{"type":"boolean"},"revokedInstallation":{"type":"boolean"},"remainingActiveOrgLinks":{"type":"integer","minimum":0}},"required":["success","unlinkedOrg","revokedInstallation","remainingActiveOrgLinks"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/linear/teams":{"get":{"operationId":"linearTeams","tags":["Linear"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"key":{"type":"string"}},"required":["id","name","key"]}}},"required":["teams"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/linear/select-team":{"post":{"operationId":"linearSelectTeam","tags":["Linear"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"team_id":{"type":"string"}},"required":["team_id"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSuccessResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/tasks/{taskId}/push/linear":{"post":{"operationId":"linearTaskPush","tags":["Linear"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"taskId path parameter"},"required":true,"description":"taskId path parameter","name":"taskId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"taskId":{"type":"string"},"provider":{"type":"string","enum":["linear"]},"issueUrl":{"type":"string"},"issueIdentifier":{"type":"string"},"status":{"type":"string"},"pushed":{"type":"boolean"},"alreadyPushed":{"type":"boolean"}},"required":["taskId","provider","issueUrl","issueIdentifier","status","pushed","alreadyPushed"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/linear/webhook/status":{"get":{"operationId":"linearWebhookStatus","tags":["Linear"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"registered":{"type":"boolean"},"webhookId":{"type":["string","null"]}},"required":["registered","webhookId"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/overview":{"get":{"operationId":"overview","tags":["Overview"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"sessions":{"type":"object","properties":{"total":{"type":"number"},"active":{"type":"number"},"completed":{"type":"number"},"by_status":{"type":"object","additionalProperties":{"type":"number"}},"failed_extraction":{"type":"number"},"with_evidence":{"type":"number"},"needs_attention":{"type":"number"},"by_review_state":{"type":"object","additionalProperties":{"type":"number"}}},"required":["total","active","completed","by_status","failed_extraction","with_evidence","needs_attention","by_review_state"]},"signals":{"type":"object","properties":{"total":{"type":"number"},"by_type":{"type":"object","additionalProperties":{"type":"number"}}},"required":["total","by_type"]},"tasks":{"type":"object","properties":{"total":{"type":"number"},"by_status":{"type":"object","additionalProperties":{"type":"number"}}},"required":["total","by_status"]},"attention":{"type":"object","properties":{"recent_sessions_with_evidence":{"type":"number"},"active_evidence":{"type":"number"},"tasks_awaiting_handoff":{"type":"number"},"tasks_in_linear":{"type":"number"},"recurrence_candidates":{"type":"number"}},"required":["recent_sessions_with_evidence","active_evidence","tasks_awaiting_handoff","tasks_in_linear","recurrence_candidates"]},"screeners":{"type":"object","properties":{"total":{"type":"number"},"active":{"type":"number"},"total_completed":{"type":"number"},"total_qualified":{"type":"number"}},"required":["total","active","total_completed","total_qualified"]},"recent_sessions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"project_id":{"type":"string"},"study_id":{"type":["string","null"]},"screener_id":{"type":["string","null"]},"screener_response_id":{"type":["string","null"]},"participant_name":{"type":["string","null"]},"participant_email":{"type":["string","null"]},"status":{"type":"string","enum":["pending","active","completed","abandoned","error"]},"interview_mode":{"type":"string","enum":["voice","text","async"]},"current_phase":{"type":["string","null"]},"phase_started_at":{"type":["string","null"]},"started_at":{"type":["string","null"]},"completed_at":{"type":["string","null"]},"duration_seconds":{"type":["number","null"]},"transcript_key":{"type":["string","null"]},"voice_vtt_key":{"type":["string","null"]},"actions_vtt_key":{"type":["string","null"]},"session_vtt_key":{"type":["string","null"]},"snapshot_index_key":{"type":["string","null"]},"timeline_key":{"type":["string","null"]},"enriched_timeline_key":{"type":["string","null"]},"audio_media_key":{"type":["string","null"]},"screen_media_key":{"type":["string","null"]},"signals_key":{"type":["string","null"]},"summary":{"type":["string","null"]},"analysis_summary":{"type":["string","null"]},"signal_count":{"type":"number"},"talk_ratio":{"type":["number","null"]},"quality_score":{"type":["number","null"]},"consent_recording":{"type":"number"},"consent_analytics":{"type":"number"},"consent_followup":{"type":"number"},"cost_audio_cents":{"type":"number"},"cost_transcription_cents":{"type":"number"},"cost_analysis_cents":{"type":"number"},"deleted_at":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"},"interview_state":{"type":"object","properties":{"capture_state":{"type":"string","enum":["not_started","in_progress","completed","ended_early","interrupted","connection_warning"]},"results_state":{"type":"string","enum":["not_applicable","pending","processing","ready","failed"]},"review_state":{"type":"string","enum":["in_progress","processing","ready_for_review","completed_no_evidence","needs_attention","ended_early"]},"label":{"type":"string"},"tone":{"type":"string","enum":["neutral","info","success","warning","danger"]},"primary_action":{"type":"string","enum":["open","wait","review","retry","inspect"]}},"required":["capture_state","results_state","review_state","label","tone","primary_action"]}},"required":["id","project_id","study_id","screener_id","screener_response_id","participant_name","participant_email","status","interview_mode","current_phase","phase_started_at","started_at","completed_at","duration_seconds","transcript_key","voice_vtt_key","actions_vtt_key","session_vtt_key","snapshot_index_key","timeline_key","enriched_timeline_key","audio_media_key","screen_media_key","signals_key","summary","analysis_summary","signal_count","talk_ratio","quality_score","consent_recording","consent_analytics","consent_followup","cost_audio_cents","cost_transcription_cents","cost_analysis_cents","deleted_at","created_at","updated_at"]}},"top_tasks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"project_id":{"type":"string"},"title":{"type":"string"},"description":{"type":["string","null"]},"task_type":{"type":"string"},"target_surface":{"type":"string","enum":["product_under_test","usertold_widget_interview","interviewer_conductor_behavior","ambiguous_needs_review"]},"status":{"type":"string","enum":["backlog","ready","in_progress","done","wont_fix"]},"priority_score":{"type":"number"},"priority_label":{"type":"string"},"effort_estimate":{"type":["string","null"]},"signal_count":{"type":"number"},"session_count":{"type":"number"},"implementation_branch":{"type":["string","null"]},"implementation_pr_url":{"type":["string","null"]},"implementation_pr_number":{"type":["number","null"]},"deployed_at":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","project_id","title","description","task_type","target_surface","status","priority_score","priority_label","effort_estimate","signal_count","session_count","implementation_branch","implementation_pr_url","implementation_pr_number","deployed_at","created_at","updated_at"]}},"setup":{"type":"object","properties":{"has_api_keys":{"type":"boolean"},"can_start_interviews":{"type":"boolean"},"start_blocker":{"type":["string","null"],"enum":["insufficient_credits","openai_key_missing","byok_key_unavailable","billing_error",null]},"has_active_study":{"type":"boolean"},"has_active_screener":{"type":"boolean"},"has_linked_active_screener":{"type":"boolean"},"has_sessions":{"type":"boolean"}},"required":["has_api_keys","can_start_interviews","start_blocker","has_active_study","has_active_screener","has_linked_active_screener","has_sessions"]}},"required":["sessions","signals","tasks","attention","screeners","recent_sessions","top_tasks","setup"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/sdk/conductor/{sessionId}/start":{"post":{"operationId":"conductorStart","tags":["Conductor"],"parameters":[{"schema":{"type":"string","description":"sessionId path parameter"},"required":true,"description":"sessionId path parameter","name":"sessionId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"ws_url":{"type":"string"}},"required":["ws_url"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/sdk/conductor/{sessionId}/checkpoint":{"post":{"operationId":"conductorCheckpoint","tags":["Conductor"],"parameters":[{"schema":{"type":"string","description":"sessionId path parameter"},"required":true,"description":"sessionId path parameter","name":"sessionId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"trigger":{"type":"string","enum":["pagehide","beforeunload"]},"recorder_state":{"type":["string","null"],"enum":["idle","ready","recording","paused","stopped","error",null]},"transition":{"type":"object","properties":{"id":{"type":"string"},"source":{"type":"string","enum":["study_navigation","page_reload"]},"fromUrl":{"type":"string"},"fromTitle":{"type":"string"},"targetUrl":{"type":"string"},"ts":{"type":"number"}},"required":["id","source","fromUrl","ts"]},"widget_events":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":64},"ts":{"type":"number"},"data":{"type":"object","additionalProperties":{}}},"required":["name","ts","data"]},"maxItems":8},"transcription_usage":{"type":"object","properties":{"sequence":{"type":"integer","minimum":0},"audioSeconds":{"type":"number","exclusiveMinimum":0},"keySourceToken":{"type":"string","minLength":1}},"required":["sequence","audioSeconds"]}},"required":["trigger"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"checkpointed":{"type":"boolean"}},"required":["success","checkpointed"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Origin rejected by conductor runtime guard","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiConductorOriginGuardErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/sdk/conductor/{sessionId}/ws":{"get":{"operationId":"conductorWs","summary":"WebSocket upgrade for conductor session","tags":["Conductor"],"parameters":[{"schema":{"type":"string","description":"sessionId path parameter"},"required":true,"description":"sessionId path parameter","name":"sessionId","in":"path"}],"responses":{"101":{"description":"WebSocket upgrade successful — no JSON body"},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Origin rejected by conductor runtime guard","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiConductorOriginGuardErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"426":{"description":"Upgrade Required — request must include Upgrade: websocket header","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/sdk/conductor/{sessionId}/transcription-secret":{"post":{"operationId":"conductorTranscriptionSecret","tags":["Conductor"],"parameters":[{"schema":{"type":"string","description":"sessionId path parameter"},"required":true,"description":"sessionId path parameter","name":"sessionId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"client_secret":{"type":"string"},"expires_at":{"type":"number"},"language":{"type":"string"},"manual_commit":{"type":"boolean"},"usage_token":{"type":"string"}},"required":["client_secret","expires_at","language"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Origin rejected by conductor runtime guard","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiConductorOriginGuardErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/sdk/conductor/{sessionId}/sts-secret":{"post":{"operationId":"conductorSTSSecret","tags":["Conductor"],"parameters":[{"schema":{"type":"string","description":"sessionId path parameter"},"required":true,"description":"sessionId path parameter","name":"sessionId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"segment_id":{"type":"string","minLength":1}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"client_secret":{"type":"string"},"expires_at":{"type":"number"},"model":{"type":"string"},"voice":{"type":"string"},"reasoning_enabled":{"type":"boolean"},"mcp_connectors_enabled":{"type":"boolean"}},"required":["client_secret","expires_at","model","voice","reasoning_enabled"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Origin rejected by conductor runtime guard","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiConductorOriginGuardErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/sdk/conductor/{sessionId}/realtime-call":{"post":{"operationId":"conductorRealtimeCall","tags":["Conductor"],"parameters":[{"schema":{"type":"string","description":"sessionId path parameter"},"required":true,"description":"sessionId path parameter","name":"sessionId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"sdp":{"type":"string","minLength":1}},"required":["sdp"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"sdp":{"type":"string"},"call_id":{"type":["string","null"]},"model":{"type":"string"},"reasoning_enabled":{"type":"boolean"},"sideband_enabled":{"type":"boolean"},"mcp_connectors_enabled":{"type":"boolean"}},"required":["sdp","call_id","model","reasoning_enabled","sideband_enabled","mcp_connectors_enabled"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Origin rejected by conductor runtime guard","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiConductorOriginGuardErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/sdk/conductor/{sessionId}/end":{"post":{"operationId":"conductorEnd","tags":["Conductor"],"parameters":[{"schema":{"type":"string","description":"sessionId path parameter"},"required":true,"description":"sessionId path parameter","name":"sessionId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"already_completed":{"type":"boolean"},"queued":{"type":"boolean"}},"required":["success","already_completed","queued"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Origin rejected by conductor runtime guard","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiConductorOriginGuardErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/implementations":{"get":{"operationId":"implementationsList","tags":["Providers"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string"},"required":false,"name":"status","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"implementations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"task_id":{"type":"string"},"project_id":{"type":"string"},"spec_json":{"type":["string","null"]},"relevant_files_json":{"type":["string","null"]},"status":{"type":"string"},"attempt_number":{"type":"number"},"branch_name":{"type":["string","null"]},"commit_sha":{"type":["string","null"]},"pr_url":{"type":["string","null"]},"pr_number":{"type":["number","null"]},"pr_state":{"type":["string","null"]},"pr_merged_at":{"type":["string","null"]},"started_at":{"type":["string","null"]},"completed_at":{"type":["string","null"]},"error_message":{"type":["string","null"]},"changes_summary":{"type":["string","null"]},"files_changed_json":{"type":["string","null"]},"is_dry_run":{"type":"number"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","task_id","project_id","spec_json","relevant_files_json","status","attempt_number","branch_name","commit_sha","pr_url","pr_number","pr_state","pr_merged_at","started_at","completed_at","error_message","changes_summary","files_changed_json","is_dry_run","created_at","updated_at"]}}},"required":["implementations"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/implementations/{implId}":{"get":{"operationId":"implementationGet","tags":["Providers"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"implId path parameter"},"required":true,"description":"implId path parameter","name":"implId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"implementation":{"type":"object","properties":{"id":{"type":"string"},"task_id":{"type":"string"},"project_id":{"type":"string"},"spec_json":{"type":["string","null"]},"relevant_files_json":{"type":["string","null"]},"status":{"type":"string"},"attempt_number":{"type":"number"},"branch_name":{"type":["string","null"]},"commit_sha":{"type":["string","null"]},"pr_url":{"type":["string","null"]},"pr_number":{"type":["number","null"]},"pr_state":{"type":["string","null"]},"pr_merged_at":{"type":["string","null"]},"started_at":{"type":["string","null"]},"completed_at":{"type":["string","null"]},"error_message":{"type":["string","null"]},"changes_summary":{"type":["string","null"]},"files_changed_json":{"type":["string","null"]},"is_dry_run":{"type":"number"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","task_id","project_id","spec_json","relevant_files_json","status","attempt_number","branch_name","commit_sha","pr_url","pr_number","pr_state","pr_merged_at","started_at","completed_at","error_message","changes_summary","files_changed_json","is_dry_run","created_at","updated_at"]}},"required":["implementation"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/tasks/{taskId}/provider-state":{"get":{"operationId":"taskProviderState","tags":["Providers"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"taskId path parameter"},"required":true,"description":"taskId path parameter","name":"taskId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"providers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"task_id":{"type":"string"},"project_id":{"type":"string"},"provider":{"type":"string"},"external_id":{"type":["string","null"]},"external_url":{"type":["string","null"]},"external_status":{"type":["string","null"]},"metadata_json":{"type":["string","null"]},"synced_at":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","task_id","project_id","provider","external_id","external_url","external_status","metadata_json","synced_at","created_at","updated_at"]}}},"required":["providers"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/tasks/{taskId}/push":{"post":{"operationId":"taskPush","tags":["Providers"],"parameters":[{"schema":{"type":"string","description":"orgHandle path parameter"},"required":true,"description":"orgHandle path parameter","name":"orgHandle","in":"path"},{"schema":{"type":"string","description":"projectHandle path parameter"},"required":true,"description":"projectHandle path parameter","name":"projectHandle","in":"path"},{"schema":{"type":"string","description":"taskId path parameter"},"required":true,"description":"taskId path parameter","name":"taskId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"taskId":{"type":"string"},"provider":{"type":"string"},"issueUrl":{"type":["string","null"]},"issueNumber":{"type":["string","null"]},"status":{"type":["string","null"]},"pushed":{"type":"boolean"},"alreadyPushed":{"type":"boolean"}},"required":["taskId","provider","issueUrl","issueNumber","status","pushed","alreadyPushed"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/billing":{"get":{"operationId":"billingStatus","tags":["Billing"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"credit_balance_cents":{"type":"number"},"available_interview_count":{"type":"number"},"has_payment_method":{"type":"boolean"},"interview_count":{"type":"number"},"total_usage_cents":{"type":"number"},"polar_configured":{"type":"boolean"},"project_billing_modes":{"type":"array","items":{"type":"object","properties":{"project_id":{"type":"string"},"project_name":{"type":"string"},"project_handle":{"type":"string"},"org_handle":{"type":["string","null"]},"project_ref":{"type":["string","null"]},"canonical_path":{"type":["string","null"]},"billing_mode":{"type":"string","enum":["usertold_credits","openai_direct"]}},"required":["project_id","project_name","project_handle","org_handle","project_ref","canonical_path","billing_mode"]}}},"required":["credit_balance_cents","available_interview_count","has_payment_method","interview_count","total_usage_cents","polar_configured","project_billing_modes"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/billing/events":{"get":{"operationId":"billingEvents","tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string"},"required":false,"name":"offset","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"events":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"user_id":{"type":"number"},"session_id":{"type":"string"},"project_id":{"type":"string"},"event_type":{"type":"string"},"display_label":{"type":"string"},"display_kind":{"type":"string","enum":["purchase","bonus","usage","other"]},"amount_direction":{"type":"string","enum":["credit","debit","neutral"]},"amount_cents":{"type":"number"},"signed_amount_cents":{"type":"number"},"polar_synced":{"type":"number"},"created_at":{"type":"string"}},"required":["id","user_id","session_id","project_id","event_type","display_label","display_kind","amount_direction","amount_cents","signed_amount_cents","polar_synced","created_at"]}},"total":{"type":"number"}},"required":["events","total"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/billing/usage":{"get":{"operationId":"billingUsage","tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string"},"required":false,"name":"offset","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"total_cents":{"type":"number"},"session_count":{"type":"number"},"sessions":{"type":"array","items":{"type":"object","properties":{"session_id":{"type":"string"},"project_id":{"type":"string"},"cost_cents":{"type":"number"},"event_count":{"type":"number"},"last_used_at":{"type":"string"}},"required":["session_id","project_id","cost_cents","event_count","last_used_at"]}}},"required":["total_cents","session_count","sessions"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/billing/checkout":{"post":{"operationId":"billingCheckout","tags":["Billing"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"success_url":{"type":"string"},"pack":{"type":"number"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"}},"required":["url"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/admin/embed-backfill":{"post":{"operationId":"adminEmbedBackfill","tags":["Admin"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"signals_processed":{"type":"number"},"tasks_processed":{"type":"number"},"signals_failed":{"type":"number"},"tasks_failed":{"type":"number"}},"required":["signals_processed","tasks_processed","signals_failed","tasks_failed"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/admin/credits/grant":{"post":{"operationId":"adminCreditsGrant","tags":["Admin"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email"},"credits":{"type":"integer","exclusiveMinimum":0,"maximum":100000},"reason":{"type":"string","minLength":1,"maxLength":160},"grant_id":{"type":"string","minLength":1,"maxLength":160}},"required":["email","credits","reason"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"user_id":{"type":"number"},"email":{"type":"string"},"credits":{"type":"number"},"amount_cents":{"type":"number"},"event_type":{"type":"string","enum":["credits.bonus"]},"grant_key":{"type":"string"},"reason":{"type":"string"},"applied":{"type":"boolean"},"credit_balance_cents":{"type":"number"},"available_interview_count":{"type":"number"}},"required":["user_id","email","credits","amount_cents","event_type","grant_key","reason","applied","credit_balance_cents","available_interview_count"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/admin/agent-providers":{"get":{"operationId":"adminAgentProvidersList","tags":["Admin"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"providers":{"type":"array","items":{"$ref":"#/components/schemas/ApiAdminAgentProvider"}}},"required":["providers"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"post":{"operationId":"adminAgentProvidersCreate","tags":["Admin"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"issuer":{"type":"string","minLength":1},"display_name":{"type":"string","minLength":1,"maxLength":160},"jwks_uri":{"type":"string","minLength":1},"allowed_audiences":{"type":"array","items":{"type":"string","minLength":1},"minItems":1},"status":{"type":"string","enum":["active","disabled"]},"notes":{"type":["string","null"],"maxLength":1000}},"required":["issuer","display_name","jwks_uri","allowed_audiences"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiAdminAgentProvider"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/admin/agent-providers/{issuer}":{"patch":{"operationId":"adminAgentProvidersUpdate","tags":["Admin"],"parameters":[{"schema":{"type":"string","description":"issuer path parameter"},"required":true,"description":"issuer path parameter","name":"issuer","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"display_name":{"type":"string","minLength":1,"maxLength":160},"jwks_uri":{"type":"string","minLength":1},"allowed_audiences":{"type":"array","items":{"type":"string","minLength":1},"minItems":1},"status":{"type":"string","enum":["active","disabled"]},"notes":{"type":["string","null"],"maxLength":1000}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiAdminAgentProvider"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"delete":{"operationId":"adminAgentProvidersDelete","tags":["Admin"],"parameters":[{"schema":{"type":"string","description":"issuer path parameter"},"required":true,"description":"issuer path parameter","name":"issuer","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/admin/email/test":{"post":{"operationId":"adminEmailTest","tags":["Admin"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"to":{"type":"string","format":"email"},"subject":{"type":"string","minLength":1,"maxLength":200},"body":{"type":"string","minLength":1,"maxLength":4000}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"message_id":{"type":"string"},"to":{"type":"string"},"from":{"type":"string"},"subject":{"type":"string"},"sent_at":{"type":"string"}},"required":["message_id","to","from","subject","sent_at"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}}},"webhooks":{}}