{"openapi":"3.1.0","info":{"title":"UserTold.ai API","version":"1.0.0"},"components":{"schemas":{},"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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/.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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/.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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/api/oauth/register":{"post":{"operationId":"oauthRegister","tags":["OAuth"],"requestBody":{"content":{"application/json":{"schema":{"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"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"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"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"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"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}},"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":{"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"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"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"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}},"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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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"},"needs_org_handle_review":{"type":"boolean"},"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","needs_org_handle_review","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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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"},"needs_org_handle_review":{"type":"boolean"},"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","needs_org_handle_review","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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}},"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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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"]},"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","public_key","created_at","updated_at"]}}},"required":["projects"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}},"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":{"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"]},"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","public_key","created_at","updated_at"]}},"required":["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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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"]},"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","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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}},"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":{"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"]},"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","public_key","created_at","updated_at"]}},"required":["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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}},"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":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"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"]}},"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"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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"]}},"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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"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"]}},"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"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}},"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":{"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"]}},"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"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}},"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":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"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"]}},"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"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"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"]}},"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"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"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"]}},"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"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"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"]}},"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"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"success":{"type":"boolean"}},"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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/api/orgs/{orgHandle}/projects/{projectHandle}/signals/bulk-delete":{"post":{"operationId":"signalsBulkDelete","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}},"required":["signal_ids"]}}}},"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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}},"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":{"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"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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"]}},"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"]}}},"required":["task","signals"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}},"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":{"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"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}},"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":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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"},"view_count":{"type":"number"},"start_count":{"type":"number"},"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","view_count","start_count","complete_count","qualified_count","disqualified_count","created_at","updated_at"]}}},"required":["screeners"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}},"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"},"view_count":{"type":"number"},"start_count":{"type":"number"},"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","view_count","start_count","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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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"},"view_count":{"type":"number"},"start_count":{"type":"number"},"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","view_count","start_count","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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}},"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"},"view_count":{"type":"number"},"start_count":{"type":"number"},"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","view_count","start_count","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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}},"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":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"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"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}},"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":{"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"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"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"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}},"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":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"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"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}},"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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}},"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":{"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_auto_created":{"type":"boolean"},"screener_id":{"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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"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_auto_created":{"type":"boolean"},"screener_id":{"type":"string"}},"required":["study"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}},"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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}},"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":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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"]}},"required":["study"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":["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":{"type":"object","properties":{"success":{"type":"boolean"}},"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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"settings":{"type":"object","additionalProperties":{"type":"string"}}},"required":["settings"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}},"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":{"type":"object","properties":{"settings":{"type":"object","additionalProperties":{"type":"string"}}},"required":["settings"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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"},"checked_at":{"type":"string"},"remaining_balance_usd":{"type":"number"}},"required":["status","code","message","checked_at"]}},"required":["openai_api_key"]}},"required":["key_health"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"success":{"type":"boolean"}},"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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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"]},"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","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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}},"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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"success":{"type":"boolean"}},"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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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_views":{"type":"number"},"total_qualified":{"type":"number"}},"required":["total","active","total_views","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"]},"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","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"},"has_active_study":{"type":"boolean"},"has_active_screener":{"type":"boolean"},"has_linked_active_screener":{"type":"boolean"},"has_sessions":{"type":"boolean"}},"required":["has_api_keys","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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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}},"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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Origin rejected by conductor runtime guard","content":{"application/json":{"schema":{"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"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Origin rejected by conductor runtime guard","content":{"application/json":{"schema":{"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"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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"}},"required":["client_secret","expires_at","language"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Origin rejected by conductor runtime guard","content":{"application/json":{"schema":{"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"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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"}],"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"}},"required":["client_secret","expires_at","model","voice","reasoning_enabled"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Origin rejected by conductor runtime guard","content":{"application/json":{"schema":{"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"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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"}},"required":["sdp","call_id","model","reasoning_enabled","sideband_enabled"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Origin rejected by conductor runtime guard","content":{"application/json":{"schema":{"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"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/api/sdk/conductor/{sessionId}/direct-realtime-call-started":{"post":{"operationId":"conductorDirectRealtimeCallStarted","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":{"model":{"type":"string","minLength":1},"reasoning_enabled":{"type":"boolean"}},"required":["model","reasoning_enabled"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"call_id":{"type":"string"}},"required":["ok","call_id"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Origin rejected by conductor runtime guard","content":{"application/json":{"schema":{"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"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Origin rejected by conductor runtime guard","content":{"application/json":{"schema":{"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"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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"},"grace_debt_cents":{"type":"number"},"grace_debt_limit_cents":{"type":"number"},"has_payment_method":{"type":"boolean"},"accrued_usage_cents":{"type":"number"},"spending_cap_cents":{"type":"number"},"interview_count":{"type":"number"},"total_usage_cents":{"type":"number"},"polar_configured":{"type":"boolean"}},"required":["credit_balance_cents","available_interview_count","grace_debt_cents","grace_debt_limit_cents","has_payment_method","accrued_usage_cents","spending_cap_cents","interview_count","total_usage_cents","polar_configured"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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"},"grace_debt_cents":{"type":"number"}},"required":["user_id","email","credits","amount_cents","event_type","grant_key","reason","applied","credit_balance_cents","available_interview_count","grace_debt_cents"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/api/admin/agent-providers":{"get":{"operationId":"adminAgentProvidersList","tags":["Admin"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"providers":{"type":"array","items":{"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"]}}},"required":["providers"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}},"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":{"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"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"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"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}},"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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}},"/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":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"422":{"description":"Domain error (non-retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}},"503":{"description":"Domain error (retryable)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"action":{"type":"string"}},"required":["error"]}}}}}}}},"webhooks":{}}