{"openapi":"3.1.0","info":{"title":"ReadyMojo API","description":"API for ReadyMojo platform","version":"1.0.0"},"paths":{"/v1/jobs":{"get":{"tags":["Jobs"],"summary":"List jobs","description":"Retrieve a list of jobs with pagination and filtering support.\n\nReturns a list of jobs sorted by posted date in descending order.\nUse the next_token for pagination to retrieve more results.\n\nSupports filtering by:\n- search: Search by job title or company name\n- status: Filter by job status (ACTIVE, PAUSED, CLOSED)\n- department: Filter by department/category\n- location: Filter by job location\n\nWhen obscure=True, company names will be replaced with dummy names based on\nthe first letter of the real company name, and company names in descriptions\nwill also be replaced.","operationId":"get_jobs_v1_jobs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Maximum number of jobs to return","default":5,"title":"Limit"},"description":"Maximum number of jobs to return"},{"name":"next_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pagination token","title":"Next Token"},"description":"Pagination token"},{"name":"obscure","in":"query","required":false,"schema":{"type":"boolean","description":"Obscure company names and descriptions","default":false,"title":"Obscure"},"description":"Obscure company names and descriptions"},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search by job title or company name","title":"Search"},"description":"Search by job title or company name"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by job status (ACTIVE, PAUSED, CLOSED)","title":"Status"},"description":"Filter by job status (ACTIVE, PAUSED, CLOSED)"},{"name":"department","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by department","title":"Department"},"description":"Filter by department"},{"name":"location","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by location","title":"Location"},"description":"Filter by location"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/jobs/search":{"get":{"tags":["Jobs"],"summary":"Search jobs","description":"Search jobs using OpenSearch with filters and pagination.\n\nArgs:\n    q: Free text search query\n    location: Location filter\n    company: Company name filter\n    experience_level: Experience level filter (ENTRY_LEVEL, MID_LEVEL, SENIOR_LEVEL, EXECUTIVE_LEVEL)\n    work_type: Work type filter (REMOTE, ON_SITE, HYBRID)\n    skills: List of skills to filter by\n    page: Page number (1-based)\n    per_page: Number of results per page\n\nReturns:\n    Jobs in the same format as get_jobs endpoint with jobs array, count, and pagination info","operationId":"search_jobs_endpoint_v1_jobs_search_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search query","title":"Q"},"description":"Search query"},{"name":"location","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Location filter","title":"Location"},"description":"Location filter"},{"name":"company","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Company filter","title":"Company"},"description":"Company filter"},{"name":"experience_level","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Experience level filter","title":"Experience Level"},"description":"Experience level filter"},{"name":"work_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Work type filter","title":"Work Type"},"description":"Work type filter"},{"name":"skills","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Skills filter","title":"Skills"},"description":"Skills filter"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Items per page","default":10,"title":"Per Page"},"description":"Items per page"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Search Jobs Endpoint V1 Jobs Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/jobs/{job_id}":{"get":{"tags":["Jobs"],"summary":"Get job by ID","description":"Retrieve detailed information about a specific job by its ID.\n\nReturns all available information about the job including:\n- Basic job details (title, company, location)\n- Full description\n- Qualifications and responsibilities\n- Skills required\n- Application statistics\n- Share link information (when include_share=True)","operationId":"get_job_v1_jobs__job_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"include_share","in":"query","required":false,"schema":{"type":"boolean","description":"Include share link info","default":false,"title":"Include Share"},"description":"Include share link info"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Job V1 Jobs  Job Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Jobs"],"summary":"Delete job by ID","description":"Delete a job by its ID.\nRemoves the job from the database if it exists.","operationId":"delete_job_v1_jobs__job_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Job V1 Jobs  Job Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Jobs"],"summary":"Update job details","description":"Update job details by ID (manual override endpoint).\n\nCurrently supports updating:\n- title: Job title\n- company_logo: URL to the company logo image\n- description: Full job description text\n- salary_range: Salary range as string\n- scenario_sim_interviewer_id: AI interviewer for scenario simulation (manual override - NO auto-generation)\n- scenario_sim_introduction_message: Introduction message for scenario simulation (manual override)\n- scenario_id: Scenario ID for the job\n\nNOTE: This endpoint does NOT trigger automatic AI generation.\nUse POST /v1/jobs/{job_id}/update-scenario-interviewer for automatic AI generation.\n\nReturns the updated job details.","operationId":"update_job_v1_jobs__job_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Job V1 Jobs  Job Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Jobs"],"summary":"Update job (full update)","description":"Full update of a job record.\n\nUpdates all provided fields for the job. This is different from PATCH\nwhich only updates specific fields.","operationId":"update_job_full_v1_jobs__job_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Job Update"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Job Full V1 Jobs  Job Id  Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/jobs/{job_id}/share":{"post":{"tags":["Jobs"],"summary":"Create share link for job","description":"Create a share link for an existing job.\n\nGenerates a new share link for practicing with the job, even if one already exists.\nUses Claude API to generate personalized content based on job details.\nThe share link will have a male role assigned for the roleplay.\n\nReturns the created share link details.","operationId":"create_job_share_v1_jobs__job_id__share_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Job Share V1 Jobs  Job Id  Share Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/jobs/{job_id}/scenario_share":{"post":{"tags":["Jobs"],"summary":"Create share link for job scenario","description":"Create or retrieve a share link for an existing job with a specific scenario template.\n\nFirst checks if a share with pattern {job_id}_{scenario_id} already exists:\n- If exists: Returns the existing share using its stored company_id and persona_id\n- If not exists: Creates a new share with specified or default persona\n\nUses Claude API to generate personalized content based on persona and scenario instructions.\nThe scenario instruction is combined with the default system message template.\n\nParameters:\n- job_id: The job ID to associate with the scenario share\n- scenario_request: Contains the scenario_template_id to use\n- persona_id (optional): Specific persona ID to use for NEW shares. Ignored if share already exists.\n- language: Language code for content generation\n\nReturns the existing or newly created share link details.","operationId":"create_job_scenario_share_v1_jobs__job_id__scenario_share_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"language","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Language code for content generation (en, ko, zh)","default":"en","title":"Language"},"description":"Language code for content generation (en, ko, zh)"},{"name":"persona_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Persona ID to use for the scenario (uses company default if not specified)","title":"Persona Id"},"description":"Persona ID to use for the scenario (uses company default if not specified)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioShareRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Job Scenario Share V1 Jobs  Job Id  Scenario Share Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/jobs/{job_id}/assessment-metrics/bulk-update":{"patch":{"tags":["Jobs"],"summary":"Update and reorder assessment metrics","description":"Update content and reorder assessment metrics for a job in a single operation.\n\nThis endpoint allows the UI to update metric content (name, description, questions, weight)\nand reorder them simultaneously. Only provided fields will be updated for each metric.\n\nArgs:\n    job_id: The job ID containing the metrics to update\n    update_data: List of metric updates with optional content changes and priority values\n    \nReturns:\n    Updated metrics list in the new order","operationId":"update_and_reorder_job_assessment_metrics_v1_jobs__job_id__assessment_metrics_bulk_update_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssessmentMetricsUpdateAndReorderRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/jobs/{job_id}/similar":{"get":{"tags":["Jobs"],"summary":"Get similar jobs","description":"Get jobs similar to the specified job.\n\nArgs:\n    job_id: The job ID to find similar jobs for\n    limit: Number of similar jobs to return\n\nReturns:\n    Jobs in the same format as get_jobs endpoint with jobs array and count","operationId":"get_similar_jobs_v1_jobs__job_id__similar_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":20,"minimum":1,"description":"Number of similar jobs to return","default":5,"title":"Limit"},"description":"Number of similar jobs to return"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Similar Jobs V1 Jobs  Job Id  Similar Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/jobs/{job_id}/candidates":{"get":{"tags":["Jobs"],"summary":"Get candidates for a specific job","description":"Get all candidates who have applied to a specific job with filtering options.\nSupports filtering by stages and searching by name/email.","operationId":"get_job_candidates_v1_jobs__job_id__candidates_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID from Clerk","title":"User Id"},"description":"User ID from Clerk"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Maximum candidates to return","default":20,"title":"Limit"},"description":"Maximum candidates to return"},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search by candidate name or email","title":"Search"},"description":"Search by candidate name or email"},{"name":"stages","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Filter by candidate stages","title":"Stages"},"description":"Filter by candidate stages"},{"name":"next_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pagination token","title":"Next Token"},"description":"Pagination token"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Job Candidates V1 Jobs  Job Id  Candidates Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/jobs/{job_id}/stats":{"get":{"tags":["Jobs"],"summary":"Get applicant statistics for a specific job","description":"Get detailed applicant statistics for a specific job including stage breakdown,\nrecent applications, and conversion rates.","operationId":"get_job_applicant_stats_v1_jobs__job_id__stats_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID from Clerk","title":"User Id"},"description":"User ID from Clerk"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Job Applicant Stats V1 Jobs  Job Id  Stats Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/jobs/{job_id}/status":{"patch":{"tags":["Jobs"],"summary":"Update job status","description":"Update only the status of a job.\n\nValid statuses: ACTIVE, PAUSED, CLOSED","operationId":"update_job_status_v1_jobs__job_id__status_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Status Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Job Status V1 Jobs  Job Id  Status Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/jobs/{job_id}/duplicate":{"post":{"tags":["Jobs"],"summary":"Duplicate a job","description":"Create a duplicate of an existing job.\n\nOptionally modify certain fields in the duplicate by providing them in the request body.","operationId":"duplicate_job_v1_jobs__job_id__duplicate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Duplicate Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Duplicate Job V1 Jobs  Job Id  Duplicate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/jobs/{job_id}/screening":{"put":{"tags":["Jobs"],"summary":"Set job screening association","description":"Set or update the screening association for a job.\n\nThis endpoint creates a bidirectional association:\n1. Updates the job's screening_id field\n2. Updates the job's share_id field (for backward compatibility)\n3. Updates the screening's job_id field (bidirectional association)\n4. Validates that both job and screening exist\n\nArgs:\n    job_id: The ID of the job to update\n    screening_data: Contains the screening_id to associate\n\nReturns:\n    Success message with updated job information","operationId":"set_job_screening_v1_jobs__job_id__screening_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobScreeningUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Set Job Screening V1 Jobs  Job Id  Screening Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Jobs"],"summary":"Remove job screening association","description":"Remove the screening association from a job.\n\nThis endpoint removes the bidirectional association:\n1. Removes the job's screening_id field\n2. Removes the job's share_id field (for backward compatibility)\n3. Removes the screening's job_id field (bidirectional removal)\n4. Validates that the job exists\n\nArgs:\n    job_id: The ID of the job to update\n\nReturns:\n    Success message confirming removal","operationId":"remove_job_screening_v1_jobs__job_id__screening_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Remove Job Screening V1 Jobs  Job Id  Screening Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/jobs/{job_id}/assessment-metrics":{"get":{"tags":["Jobs"],"summary":"Get assessment metrics for a job","description":"Retrieve all assessment metrics configured for a specific job.\n\nReturns the metrics used by the AI interviewer to evaluate candidates,\nincluding the metric names, descriptions, sample questions, and weights.","operationId":"get_job_assessment_metrics_v1_jobs__job_id__assessment_metrics_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssessmentMetricsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Jobs"],"summary":"Create assessment metric for a job","description":"Create a new assessment metric for a job.\n\nDefines what aspects the AI interviewer should evaluate during interviews.\nThe sample questions guide the AI but don't constrain it to a script.","operationId":"create_job_assessment_metric_v1_jobs__job_id__assessment_metrics_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssessmentMetricCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssessmentMetricResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Jobs"],"summary":"Delete all assessment metrics","description":"Delete all assessment metrics for a job.\n\nUse with caution as this removes the entire assessment framework.","operationId":"delete_all_job_assessment_metrics_v1_jobs__job_id__assessment_metrics_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/jobs/{job_id}/assessment-metrics/regenerate-prompts":{"post":{"tags":["Jobs"],"summary":"Regenerate evaluation prompts for job metrics","description":"Regenerate evaluation prompts for all assessment metrics in a job.\n\nThis endpoint is a backward-compatible proxy to the share regenerate endpoint.\nIt triggers a background job to update the evaluation_prompt field for each metric.\nThe job runs asynchronously - use the share status endpoint to check progress.\n\nFor status checking, use: GET /v1/shares/{job_id}/assessment-metrics/prompts-status\n\nReturns:\n    200 OK - Job triggered successfully","operationId":"regenerate_metrics_evaluation_prompts_endpoint_v1_jobs__job_id__assessment_metrics_regenerate_prompts_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/jobs/{job_id}/assessment-metrics/bulk":{"post":{"tags":["Jobs"],"summary":"Create multiple assessment metrics","description":"Create multiple assessment metrics for a job at once.\n\nUseful for setting up a complete assessment framework in one request.\nAll metrics are created atomically.","operationId":"create_job_assessment_metrics_bulk_v1_jobs__job_id__assessment_metrics_bulk_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssessmentMetricsBulkCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssessmentMetricsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/jobs/{job_id}/assessment-metrics/reorder":{"patch":{"tags":["Jobs"],"summary":"Reorder assessment metrics","description":"Reorder assessment metrics for a job by updating their priority values.\n\nThis endpoint allows the UI to update the display order of metrics without\naffecting any other data. All metrics in the request will have their priorities\nupdated according to the provided values.\n\nArgs:\n    job_id: The job ID containing the metrics to reorder\n    reorder_data: List of metric IDs with their new priority values\n    \nReturns:\n    Updated metrics list in the new order","operationId":"reorder_job_assessment_metrics_v1_jobs__job_id__assessment_metrics_reorder_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssessmentMetricsReorderRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/jobs/{job_id}/assessment-metrics/{metric_id}":{"get":{"tags":["Jobs"],"summary":"Get specific assessment metric","description":"Retrieve a specific assessment metric for a job.","operationId":"get_job_assessment_metric_v1_jobs__job_id__assessment_metrics__metric_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"metric_id","in":"path","required":true,"schema":{"type":"string","title":"Metric Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssessmentMetricResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Jobs"],"summary":"Update assessment metric","description":"Update an existing assessment metric.\n\nOnly provided fields will be updated.","operationId":"update_job_assessment_metric_v1_jobs__job_id__assessment_metrics__metric_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"metric_id","in":"path","required":true,"schema":{"type":"string","title":"Metric Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssessmentMetricUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssessmentMetricResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Jobs"],"summary":"Delete assessment metric","description":"Delete a specific assessment metric from a job.","operationId":"delete_job_assessment_metric_v1_jobs__job_id__assessment_metrics__metric_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"metric_id","in":"path","required":true,"schema":{"type":"string","title":"Metric Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/jobs/assessment-metrics/generate":{"post":{"tags":["Jobs"],"summary":"Generate AI assessment metrics","description":"Generate assessment metrics from plain text job description.\n\nThis endpoint generates appropriate assessment metrics from the provided\njob description. The generated metrics can be previewed and edited before\nincluding them in job creation.\n\nReturns the generated metrics with temporary IDs for preview.","operationId":"generate_assessment_metrics_v1_jobs_assessment_metrics_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobMetricsGenerationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssessmentMetricsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/jobs/interview-questions/generate":{"post":{"tags":["Jobs"],"summary":"Generate AI interview question","description":"Generate a single AI-powered interview question based on job context and type.\n\nThis endpoint creates either conversation-based or action-based interview questions\nusing AI, customized for the specific job requirements and role type.\n\nReturns a structured interview question with evaluation signals and duration.","operationId":"generate_interview_question_endpoint_v1_jobs_interview_questions_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterviewQuestionGenerationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterviewQuestionGenerationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/jobs/{job_id}/interview-questions":{"get":{"tags":["Jobs"],"summary":"Get stored interview questions","description":"Get stored interview questions for a specific job.\n\nReturns an empty questions array if no questions have been saved yet.\nReturns 404 if the job doesn't exist.","operationId":"get_interview_questions_v1_jobs__job_id__interview_questions_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetInterviewQuestionsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Jobs"],"summary":"Save interview questions","description":"Save interview questions for a specific job.\n\nOverwrites any existing questions for the job.\nReturns 404 if the job doesn't exist.","operationId":"save_interview_questions_v1_jobs__job_id__interview_questions_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaveInterviewQuestionsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaveInterviewQuestionsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/jobs/{job_id}/scenario":{"get":{"tags":["Jobs"],"summary":"Get Job Scenario","description":"Get the scenario assigned to a job.\n\nReturns the scenario_id if one is assigned, null otherwise.","operationId":"get_job_scenario_v1_jobs__job_id__scenario_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/models__job__ScenarioResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Jobs"],"summary":"Assign Job Scenario","description":"Assign a scenario to a job.\n\nAssociates the given scenario_id with the job. The scenario_id should reference\na scenario from the frontend scenario library.","operationId":"assign_job_scenario_v1_jobs__job_id__scenario_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioAssignRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/models__job__ScenarioResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Jobs"],"summary":"Remove Job Scenario","description":"Remove the scenario assignment from a job.\n\nClears the scenario_id field from the job.","operationId":"remove_job_scenario_v1_jobs__job_id__scenario_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/models__job__ScenarioResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/jobs/{job_id}/update-scenario-interviewer":{"post":{"tags":["Jobs"],"summary":"Update scenario interviewer and auto-generate introduction message","description":"Primary endpoint for updating scenario interviewer with automatic AI introduction generation.\n\nThis is an atomic operation that:\n1. Updates scenario_sim_interviewer_id \n2. Automatically generates and saves introduction message\n3. Returns complete updated job object plus the message for immediate display\n\nThis endpoint should be used by the frontend instead of PATCH when selecting interviewers\nto ensure AI generation happens automatically.","operationId":"update_job_scenario_interviewer_v1_jobs__job_id__update_scenario_interviewer_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateScenarioInterviewerRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateScenarioInterviewerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/jobs/{job_id}/generate-scenario-introduction":{"post":{"tags":["Jobs"],"summary":"Generate scenario simulation introduction message","description":"Generate an AI-powered introduction message for scenario simulation interviews.\n\nThis endpoint:\n1. Retrieves job and persona data\n2. Uses Claude AI to generate a contextual introduction message\n3. Updates the job with the generated message\n4. Returns the generated message\n\nThe message is specifically designed for scenario simulation interviews (not intro conversations).","operationId":"generate_job_scenario_introduction_v1_jobs__job_id__generate_scenario_introduction_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioIntroductionGenerationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioIntroductionGenerationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/jobs/{job_id}/regenerate-scenario-introduction":{"post":{"tags":["Jobs"],"summary":"Regenerate scenario simulation introduction message","description":"Regenerate the scenario simulation introduction message using current job state.\n\nThis endpoint uses the currently selected interviewer ID and scenario ID (if any) \nto regenerate a fresh introduction message.","operationId":"regenerate_job_scenario_introduction_v1_jobs__job_id__regenerate_scenario_introduction_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioIntroductionRegenerateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioIntroductionGenerationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/jobs/{job_id}/custom-tabs":{"get":{"tags":["Jobs"],"summary":"Get custom tabs for a job","description":"Retrieve all custom tabs configured for a specific job.\n\nReturns the list of user-created interview tabs with their associated\nscenario share links.","operationId":"get_job_custom_tabs_v1_jobs__job_id__custom_tabs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomTabsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Jobs"],"summary":"Create custom tab for a job","description":"Create a new custom tab for a job.\n\nThis endpoint saves the tab metadata only. The frontend should call\nPOST /v1/jobs/{job_id}/scenario_share separately to create the scenario share.\n\nThe share_id is computed as: {job_id}_{scenario_template_id}","operationId":"create_job_custom_tab_v1_jobs__job_id__custom_tabs_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomTabCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomTabResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/jobs/{job_id}/custom-tabs/{tab_id}":{"patch":{"tags":["Jobs"],"summary":"Update custom tab","description":"Update a custom tab's label and/or scenario_template_id.\n\nWhen scenario_template_id is updated, share_id is automatically recalculated\nas {job_id}_{scenario_template_id}.","operationId":"update_job_custom_tab_v1_jobs__job_id__custom_tabs__tab_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"tab_id","in":"path","required":true,"schema":{"type":"string","title":"Tab Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomTabUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomTabResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Jobs"],"summary":"Delete custom tab","description":"Delete a custom tab from a job.\n\nNote: This only deletes the tab metadata. The associated scenario share\nremains active and can be accessed directly if needed.","operationId":"delete_job_custom_tab_v1_jobs__job_id__custom_tabs__tab_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"tab_id","in":"path","required":true,"schema":{"type":"string","title":"Tab Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/practice-sessions":{"get":{"tags":["Practice Sessions"],"summary":"List Practice Sessions","description":"List practice sessions with optional filtering.\n\nReturns a paginated list of practice sessions that can be filtered by various criteria:\n- user_id: Filter by specific user ID\n- email: Filter by specific email address (exact match)\n- mode: Filter by session mode (practice or interview)\n- status: Filter by session status (in_progress, completed, etc.)\n- template_id: Filter by practice template ID\n- share_prefix: Filter by share ID prefix\n\nThe limit parameter specifies the number of items to return in the response.\nThe function will continue fetching pages from DynamoDB until it has enough valid items\nto fill the response limit, or until there are no more pages to fetch.\n\nSessions with null or empty email addresses are automatically filtered out.","operationId":"list_practice_sessions_v1_practice_sessions_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter sessions by user ID","title":"User Id"},"description":"Filter sessions by user ID"},{"name":"email","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter sessions by email address","title":"Email"},"description":"Filter sessions by email address"},{"name":"mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by session mode (practice or interview)","title":"Mode"},"description":"Filter by session mode (practice or interview)"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/PracticeStatus"},{"type":"null"}],"description":"Filter by session status","title":"Status"},"description":"Filter by session status"},{"name":"template_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by template ID","title":"Template Id"},"description":"Filter by template ID"},{"name":"share_prefix","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter sessions by share prefix","title":"Share Prefix"},"description":"Filter sessions by share prefix"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of items to return in response","default":10,"title":"Limit"},"description":"Number of items to return in response"},{"name":"last_evaluated_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pagination token","title":"Last Evaluated Key"},"description":"Pagination token"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeSessionListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/shares/email/{email}/practice-sessions":{"get":{"tags":["Shared Practice Sessions"],"summary":"List Practice Sessions By Email","description":"List practice sessions associated with an email address.\nResults are ordered by creation timestamp (newest first).","operationId":"list_practice_sessions_by_email_v1_shares_email__email__practice_sessions_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"email","in":"path","required":true,"schema":{"type":"string","title":"Email"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of items per page","default":10,"title":"Limit"},"description":"Number of items per page"},{"name":"last_evaluated_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pagination token","title":"Last Evaluated Key"},"description":"Pagination token"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeSessionListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/shares":{"post":{"tags":["Shared Practice Sessions"],"summary":"Create Share Link","description":"Create a shareable link for a practice session.\nDefault expiration is set to 1 week from creation if not specified.","operationId":"create_share_link_v1_shares_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeShareLinkCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeShareLinkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Shared Practice Sessions"],"summary":"List Share Links","description":"List share links with optional filtering.","operationId":"list_share_links_v1_shares_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"email","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by recipient email","title":"Email"},"description":"Filter by recipient email"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ShareLinkStatus"},{"type":"null"}],"description":"Filter by link status","title":"Status"},"description":"Filter by link status"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of items per page","default":10,"title":"Limit"},"description":"Number of items per page"},{"name":"last_evaluated_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pagination token","title":"Last Evaluated Key"},"description":"Pagination token"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShareLinkListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/shares/{share_id}":{"get":{"tags":["Shared Practice Sessions"],"summary":"Get Session By Share Link","description":"Get details about a share link.\n\nThis endpoint provides information about a share link without retrieving the full practice session.\nIt also updates the status of the share link if it's being used for the first time.","operationId":"get_session_by_share_link_v1_shares__share_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"share_id","in":"path","required":true,"schema":{"type":"string","title":"Share Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShareLinkDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Shared Practice Sessions"],"summary":"Delete Share Link","description":"Delete a share link.\n\nThis endpoint completely removes the share link from the database.\nReturns 204 on success with no content.","operationId":"delete_share_link_v1_shares__share_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"share_id","in":"path","required":true,"schema":{"type":"string","title":"Share Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Shared Practice Sessions"],"summary":"Update Share Link","description":"Update a share link with new data.\n\nThis endpoint allows updating one or more fields of a share link.\nReturns the updated share link on success.","operationId":"update_share_link_v1_shares__share_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"share_id","in":"path","required":true,"schema":{"type":"string","title":"Share Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeShareLinkUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeShareLinkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Shared Practice Sessions"],"summary":"Patch Share Link","description":"Update a share link with new data (PATCH method alias for PUT).\n\nThis endpoint allows updating one or more fields of a share link.\nReturns the updated share link on success.","operationId":"patch_share_link_v1_shares__share_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"share_id","in":"path","required":true,"schema":{"type":"string","title":"Share Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeShareLinkUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeShareLinkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/shares/{share_id}/expiration":{"put":{"tags":["Shared Practice Sessions"],"summary":"Update Share Link Expiration","description":"Update the expiration date of a share link.\n\nThis endpoint allows updating when a share link will expire.\nReturns the updated share link on success.","operationId":"update_share_link_expiration_v1_shares__share_id__expiration_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"share_id","in":"path","required":true,"schema":{"type":"string","title":"Share Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShareLinkUpdateExpiration"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeShareLinkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/shares/{share_id}/instructions":{"put":{"tags":["Shared Practice Sessions"],"summary":"Update Share Link Messages","description":"Update the system and welcome messages of a share link.\n\nThis endpoint allows updating the system and/or welcome messages associated with a share link.\nReturns the updated share link on success.","operationId":"update_share_link_messages_v1_shares__share_id__instructions_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"share_id","in":"path","required":true,"schema":{"type":"string","title":"Share Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShareLinkUpdateMessages"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeShareLinkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/shares/{share_id}/practice-sessions":{"post":{"tags":["Shared Practice Sessions"],"summary":"Create Practice Session Record","description":"Create a record of a practice session associated with a share link.\nSupports both live sessions and uploaded audio files.","operationId":"create_practice_session_record_v1_shares__share_id__practice_sessions_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"share_id","in":"path","required":true,"schema":{"type":"string","title":"Share Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeSessionCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeSessionRecord"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Shared Practice Sessions"],"summary":"List Practice Sessions By Share Id","description":"List practice sessions associated with a share link.\nResults are ordered by creation timestamp (newest first).","operationId":"list_practice_sessions_by_share_id_v1_shares__share_id__practice_sessions_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"share_id","in":"path","required":true,"schema":{"type":"string","title":"Share Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of items per page","default":10,"title":"Limit"},"description":"Number of items per page"},{"name":"last_evaluated_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pagination token","title":"Last Evaluated Key"},"description":"Pagination token"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeSessionListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/shares/{share_id}/practice-sessions/{practice_session_id}":{"delete":{"tags":["Shared Practice Sessions"],"summary":"Delete Practice Session","description":"Delete a specific practice session associated with a share link.\n\nThis endpoint completely removes the practice session from the database.\nReturns 204 on success with no content.","operationId":"delete_practice_session_v1_shares__share_id__practice_sessions__practice_session_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"share_id","in":"path","required":true,"schema":{"type":"string","title":"Share Id"}},{"name":"practice_session_id","in":"path","required":true,"schema":{"type":"string","title":"Practice Session Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Shared Practice Sessions"],"summary":"Get Practice Session","description":"Get details of a specific practice session.\n\nThis endpoint retrieves a single practice session by ID.","operationId":"get_practice_session_v1_shares__share_id__practice_sessions__practice_session_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"share_id","in":"path","required":true,"schema":{"type":"string","title":"Share Id"}},{"name":"practice_session_id","in":"path","required":true,"schema":{"type":"string","title":"Practice Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeSessionRecord"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/shares/{share_id}/practice-sessions/{practice_session_id}/status":{"put":{"tags":["Shared Practice Sessions"],"summary":"Update Practice Session Status","description":"Update the status of a practice session.\n\nThis endpoint allows changing the status of a practice session (e.g., to IN_PROGRESS, COMPLETED).\nReturns the updated practice session record.","operationId":"update_practice_session_status_v1_shares__share_id__practice_sessions__practice_session_id__status_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"share_id","in":"path","required":true,"schema":{"type":"string","title":"Share Id"}},{"name":"practice_session_id","in":"path","required":true,"schema":{"type":"string","title":"Practice Session Id"}},{"name":"application_id","in":"query","required":false,"schema":{"type":"string","description":"Application ID for tracking and status updates","title":"Application Id"},"description":"Application ID for tracking and status updates"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeSessionStatusUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeSessionRecord"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/shares/{share_id}/practice-sessions/{practice_session_id}/screen-recording":{"get":{"tags":["Shared Practice Sessions"],"summary":"Get Screen Recording","description":"Get the screen recording for a practice session.\n\nThis endpoint retrieves the screen recording URL for a practice session by:\n1. Getting the practice session to retrieve the sandbox_id\n2. Using the sandbox_id to find the screen recording in S3\n3. Generating a presigned URL for download","operationId":"get_screen_recording_v1_shares__share_id__practice_sessions__practice_session_id__screen_recording_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"share_id","in":"path","required":true,"schema":{"type":"string","title":"Share Id"}},{"name":"practice_session_id","in":"path","required":true,"schema":{"type":"string","title":"Practice Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/shares/{share_id}/practice-sessions/{practice_session_id}/manager-evaluation":{"get":{"tags":["Shared Practice Sessions"],"summary":"Get Practice Session Manager Evaluation","description":"Get or generate manager evaluation for a practice session.\n\nThis endpoint will:\n1. Check if manager evaluation exists (unless force_refresh is True)\n2. If not found or force_refresh is True, generate using dynamic evaluation based on job assessment metrics\n3. Falls back to static evaluation if no job metrics are configured\n4. Save to S3 and database, then return the results\n\nUses claude-sonnet-4-5-20250929 for evaluation generation.","operationId":"get_practice_session_manager_evaluation_v1_shares__share_id__practice_sessions__practice_session_id__manager_evaluation_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"share_id","in":"path","required":true,"schema":{"type":"string","title":"Share Id"}},{"name":"practice_session_id","in":"path","required":true,"schema":{"type":"string","title":"Practice Session Id"}},{"name":"force_refresh","in":"query","required":false,"schema":{"type":"boolean","description":"Force regenerate the manager evaluation report","default":false,"title":"Force Refresh"},"description":"Force regenerate the manager evaluation report"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/shares/{share_id}/practice-sessions/{practice_session_id}/evaluation":{"get":{"tags":["Shared Practice Sessions"],"summary":"Get Practice Session Evaluation","description":"Get or generate evaluation for a practice session (universal endpoint for all demos).\n\nThis endpoint intelligently chooses the evaluation method:\n- If job has assessment metrics with prompts: Uses job-specific dynamic evaluation\n- Otherwise: Falls back to sales-specific evaluation\n\nThis endpoint will:\n1. If section is specified, only evaluate/return that specific section (sales mode only)\n2. If section is null, evaluate/return full evaluation\n3. Check if evaluation exists (unless force_refresh is True)\n4. If not found or force_refresh is True, generate using Claude 3.7 Sonnet\n5. Save to the database and return the results\n\nAvailable sections (sales mode only):\n- 'overall': Overall performance, key strengths, and priority development areas\n- 'communication': Communication effectiveness: clarity, listening, and empathy\n- 'sales_technique': Sales technique: discovery, value proposition, and objection handling\n- 'presence_next_steps': Professional presence and recommended next steps\n\nNote: This endpoint now works for ALL demo types. The /manager-evaluation endpoint\nreturns only manager scores, while this endpoint returns full evaluation feedback.","operationId":"get_practice_session_evaluation_v1_shares__share_id__practice_sessions__practice_session_id__evaluation_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"share_id","in":"path","required":true,"schema":{"type":"string","title":"Share Id"}},{"name":"practice_session_id","in":"path","required":true,"schema":{"type":"string","title":"Practice Session Id"}},{"name":"force_refresh","in":"query","required":false,"schema":{"type":"boolean","description":"Force regenerate the evaluation report","default":false,"title":"Force Refresh"},"description":"Force regenerate the evaluation report"},{"name":"section","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Specific section to evaluate: 'overall', 'communication', 'sales_technique', 'presence_next_steps', or null for full evaluation","title":"Section"},"description":"Specific section to evaluate: 'overall', 'communication', 'sales_technique', 'presence_next_steps', or null for full evaluation"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/shares/{share_id}/practice-sessions/{practice_session_id}/messages":{"get":{"tags":["Shared Practice Sessions"],"summary":"Get Practice Session Messages","description":"Get the message JSON content for a specific practice session.\nReturns the raw message JSON stored in S3, or an empty array if not found.","operationId":"get_practice_session_messages_v1_shares__share_id__practice_sessions__practice_session_id__messages_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"share_id","in":"path","required":true,"schema":{"type":"string","title":"Share Id"}},{"name":"practice_session_id","in":"path","required":true,"schema":{"type":"string","title":"Practice Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/shares/{share_id}/practice-sessions/{practice_session_id}/recording":{"get":{"tags":["Shared Practice Sessions"],"summary":"Get Practice Session Recording","description":"Get the recording URL for a specific practice session.\nReturns a pre-signed URL for the recording file stored in S3.\nWorks for both live sessions (Livekit recordings) and uploaded audio files.\nAlso returns OGG audio file URL if available.\nReturns response if either MP4 recording or OGG audio exists.\nIf no recording is found, returns a 404 error.","operationId":"get_practice_session_recording_v1_shares__share_id__practice_sessions__practice_session_id__recording_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"share_id","in":"path","required":true,"schema":{"type":"string","title":"Share Id"}},{"name":"practice_session_id","in":"path","required":true,"schema":{"type":"string","title":"Practice Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/shares/{share_id}/practice-sessions/{practice_session_id}/evaluate-audio":{"post":{"tags":["Shared Practice Sessions"],"summary":"Evaluate Audio For Practice Session","description":"Evaluate audio using AssemblyAI transcription and Claude evaluation for a specific practice session.\n\nThis endpoint will:\n1. Find the recording file in S3 using the same logic as get_practice_session_recording\n2. Check if evaluation exists (unless force_refresh is True)\n3. If not found or force_refresh is True, transcribe audio using AssemblyAI\n4. Generate evaluation using Claude 3.7 Sonnet\n5. Perform speech analysis (pace and patterns)\n6. Save results to S3 and return the evaluation\n\nArgs:\n    share_id: Share ID for the practice session\n    practice_session_id: Practice session ID\n    force_refresh: Force regenerate the evaluation report\n    section: Specific section to evaluate\n    language_code: Language code for transcription (default: en)\n\nReturns:\n    AudioEvaluationResponse containing transcript and evaluation","operationId":"evaluate_audio_for_practice_session_v1_shares__share_id__practice_sessions__practice_session_id__evaluate_audio_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"share_id","in":"path","required":true,"schema":{"type":"string","title":"Share Id"}},{"name":"practice_session_id","in":"path","required":true,"schema":{"type":"string","title":"Practice Session Id"}},{"name":"force_refresh","in":"query","required":false,"schema":{"type":"boolean","description":"Force regenerate the evaluation report","default":false,"title":"Force Refresh"},"description":"Force regenerate the evaluation report"},{"name":"section","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Specific section to evaluate","title":"Section"},"description":"Specific section to evaluate"},{"name":"language_code","in":"query","required":false,"schema":{"type":"string","description":"Language code for transcription (default: en)","default":"en","title":"Language Code"},"description":"Language code for transcription (default: en)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioEvaluationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/shares/from-template":{"post":{"tags":["Shared Practice Sessions"],"summary":"Create Share From Template","description":"Create a share link from an interview template.","operationId":"create_share_from_template_v1_shares_from_template_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"template_id","in":"query","required":true,"schema":{"type":"string","title":"Template Id"}},{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID for authentication","title":"User Id"},"description":"User ID for authentication"}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ShareOverrides"},{"type":"null"}],"title":"Overrides"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeShareLinkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/shares/{share_id}/template":{"get":{"tags":["Shared Practice Sessions"],"summary":"Get Share Template","description":"Get template information for a share link.","operationId":"get_share_template_v1_shares__share_id__template_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"share_id","in":"path","required":true,"schema":{"type":"string","title":"Share Id"}},{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID for authentication","title":"User Id"},"description":"User ID for authentication"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/shares/{share_id}/persona":{"put":{"tags":["Shared Practice Sessions"],"summary":"Update Share Persona","description":"Update the interviewer persona for a share link.","operationId":"update_share_persona_v1_shares__share_id__persona_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"share_id","in":"path","required":true,"schema":{"type":"string","title":"Share Id"}},{"name":"persona_id","in":"query","required":true,"schema":{"type":"string","title":"Persona Id"}},{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID for authentication","title":"User Id"},"description":"User ID for authentication"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeShareLinkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/shares/{share_id}/language":{"put":{"tags":["Shared Practice Sessions"],"summary":"Update Share Language","description":"Update the language preference for a share link.\nThis updates both the interview_language field and retrieves the persona's localized messages for the new language.","operationId":"update_share_language_v1_shares__share_id__language_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"share_id","in":"path","required":true,"schema":{"type":"string","title":"Share Id"}},{"name":"interview_language","in":"query","required":true,"schema":{"type":"string","description":"Language code for content generation (en, ko, zh, es)","title":"Interview Language"},"description":"Language code for content generation (en, ko, zh, es)"},{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID for authentication","title":"User Id"},"description":"User ID for authentication"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeShareLinkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/shares/{share_id}/duplicate":{"post":{"tags":["Shared Practice Sessions"],"summary":"Duplicate Share Link","description":"Duplicate an existing share link with a new ID.\nCreates a copy of the share link with all its configuration but generates a new share_id.","operationId":"duplicate_share_link_v1_shares__share_id__duplicate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"share_id","in":"path","required":true,"schema":{"type":"string","title":"Share Id"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeShareLinkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/shares/{share_id}/practice-sessions/{practice_session_id}/highlights/status":{"get":{"tags":["Shared Practice Sessions"],"summary":"Get Highlights Job Status","description":"Check status of highlights generation job.\n\nReturns the current status of the AWS Batch job and highlights availability.\n\nPossible statuses:\n- NOT_STARTED: No job has been submitted yet\n- SUBMITTED: Job submitted to AWS Batch\n- PENDING: Job queued, waiting for resources\n- RUNNABLE: Job ready to run\n- STARTING: Job starting up\n- RUNNING: Job actively processing\n- SUCCEEDED: Job completed successfully\n- FAILED: Job failed (see error field)\n\nReturns:\n    Job status and highlights availability","operationId":"get_highlights_job_status_v1_shares__share_id__practice_sessions__practice_session_id__highlights_status_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"share_id","in":"path","required":true,"schema":{"type":"string","title":"Share Id"}},{"name":"practice_session_id","in":"path","required":true,"schema":{"type":"string","title":"Practice Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/shares/{share_id}/practice-sessions/{practice_session_id}/highlights":{"get":{"tags":["Shared Practice Sessions"],"summary":"Get Practice Session Highlights","description":"Get highlights for a practice session.\nReturns cached highlights from S3 if available, including:\n- Individual highlights with original timestamps\n- Presigned URL for stitched highlights video (highlights_short.mp4)\n- Metadata with updated timestamps for the stitched video\n\nUse POST endpoint to generate highlights if they don't exist yet.","operationId":"get_practice_session_highlights_v1_shares__share_id__practice_sessions__practice_session_id__highlights_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"share_id","in":"path","required":true,"schema":{"type":"string","title":"Share Id"}},{"name":"practice_session_id","in":"path","required":true,"schema":{"type":"string","title":"Practice Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HighlightsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Shared Practice Sessions"],"summary":"Generate Practice Session Highlights","description":"Submit AWS Batch job to generate highlights for a practice session.\n\nThis endpoint submits a background job and returns immediately with a job_id.\nThe job will process transcripts and generate highlights asynchronously.\n\nUse GET /highlights endpoint to retrieve results once job completes.\n\nReturns:\n    Job submission details with job_id for tracking","operationId":"generate_practice_session_highlights_v1_shares__share_id__practice_sessions__practice_session_id__highlights_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"share_id","in":"path","required":true,"schema":{"type":"string","title":"Share Id"}},{"name":"practice_session_id","in":"path","required":true,"schema":{"type":"string","title":"Practice Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/shares/{share_id}/assessment-metrics":{"get":{"tags":["Share Assessment Metrics"],"summary":"Get assessment metrics for a share","description":"Retrieve all assessment metrics configured for a specific share link.\n\nReturns the metrics used by the AI interviewer to evaluate candidates for this share,\nincluding the metric names, descriptions, sample questions, and weights.\n\nIf no share-level metrics exist, this will return an empty list (not job metrics).\nUse the evaluation endpoint to get metrics with job-level fallback.","operationId":"get_share_assessment_metrics_v1_shares__share_id__assessment_metrics_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"share_id","in":"path","required":true,"schema":{"type":"string","title":"Share Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssessmentMetricsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Share Assessment Metrics"],"summary":"Create assessment metric for a share","description":"Create a new assessment metric for a share link.\n\nDefines what aspects the AI interviewer should evaluate during interviews for this specific share.\nThe sample questions guide the AI but don't constrain it to a script.\n\nShare-level metrics override job-level metrics during evaluation.","operationId":"create_share_assessment_metric_v1_shares__share_id__assessment_metrics_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"share_id","in":"path","required":true,"schema":{"type":"string","title":"Share Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssessmentMetricCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssessmentMetricResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Share Assessment Metrics"],"summary":"Delete all assessment metrics","description":"Delete all assessment metrics for a share.\n\nReturns the number of metrics deleted.","operationId":"delete_all_share_assessment_metrics_v1_shares__share_id__assessment_metrics_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"share_id","in":"path","required":true,"schema":{"type":"string","title":"Share Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/shares/{share_id}/assessment-metrics/bulk":{"post":{"tags":["Share Assessment Metrics"],"summary":"Create multiple assessment metrics","description":"Create multiple assessment metrics for a share link at once.\n\nUseful for setting up a complete evaluation framework in one request.\nMaximum 5 metrics can be created at once.","operationId":"create_share_assessment_metrics_bulk_v1_shares__share_id__assessment_metrics_bulk_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"share_id","in":"path","required":true,"schema":{"type":"string","title":"Share Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssessmentMetricsBulkCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssessmentMetricsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/shares/{share_id}/assessment-metrics/{metric_id}":{"patch":{"tags":["Share Assessment Metrics"],"summary":"Update assessment metric","description":"Update an existing assessment metric for a share.\n\nOnly provided fields will be updated. Omitted fields remain unchanged.","operationId":"update_share_assessment_metric_v1_shares__share_id__assessment_metrics__metric_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"share_id","in":"path","required":true,"schema":{"type":"string","title":"Share Id"}},{"name":"metric_id","in":"path","required":true,"schema":{"type":"string","title":"Metric Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssessmentMetricUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssessmentMetricResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Share Assessment Metrics"],"summary":"Delete assessment metric","description":"Delete a specific assessment metric from a share.","operationId":"delete_share_assessment_metric_v1_shares__share_id__assessment_metrics__metric_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"share_id","in":"path","required":true,"schema":{"type":"string","title":"Share Id"}},{"name":"metric_id","in":"path","required":true,"schema":{"type":"string","title":"Metric Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/shares/{share_id}/assessment-metrics/bulk-update":{"patch":{"tags":["Share Assessment Metrics"],"summary":"Update and reorder assessment metrics","description":"Update content and reorder assessment metrics for a share in a single operation.\n\nThis endpoint allows the UI to update metric content (name, description, questions, weight)\nand reorder them simultaneously. Only provided fields will be updated for each metric.\n\nArgs:\n    share_id: The share ID containing the metrics to update\n    update_data: List of metric updates with optional content changes and priority values\n\nReturns:\n    Updated metrics list in the new order","operationId":"update_and_reorder_share_assessment_metrics_v1_shares__share_id__assessment_metrics_bulk_update_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"share_id","in":"path","required":true,"schema":{"type":"string","title":"Share Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssessmentMetricsUpdateAndReorderRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/shares/{share_id}/assessment-metrics/regenerate-prompts":{"post":{"tags":["Share Assessment Metrics"],"summary":"Regenerate evaluation prompts for share metrics","description":"Trigger regeneration of evaluation prompts for all assessment metrics in a share.\n\nThis endpoint triggers a background job to update the evaluation_prompt field for each metric.\nThe job runs asynchronously - use the status endpoint to check progress.\n\nReturns:\n    200 OK - Job triggered successfully","operationId":"regenerate_share_metrics_evaluation_prompts_v1_shares__share_id__assessment_metrics_regenerate_prompts_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"share_id","in":"path","required":true,"schema":{"type":"string","title":"Share Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/shares/{share_id}/assessment-metrics/prompts-status":{"get":{"tags":["Share Assessment Metrics"],"summary":"Check prompts regeneration status","description":"Check the status of evaluation prompts regeneration for a share.\n\nReturns the current status of the background job and any error messages if failed.\n\nStatus values:\n- pending: Job queued but not started\n- processing: Job currently running\n- completed: Job finished successfully\n- failed: Job encountered an error","operationId":"get_prompts_regeneration_status_v1_shares__share_id__assessment_metrics_prompts_status_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"share_id","in":"path","required":true,"schema":{"type":"string","title":"Share Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/shares/assessment-metrics/generate":{"post":{"tags":["Share Assessment Metrics"],"summary":"Generate assessment metrics from text","description":"Generate assessment metrics from a plain text description.\n\nThis is a stateless endpoint that generates metrics without creating them.\nUseful for previewing metrics before creating a share or for generating\nmetrics from interview requirements/job descriptions.\n\nThe generated metrics can then be created via the bulk create endpoint.\n\nNote: This endpoint reuses the job metrics generation logic since the\ngeneration algorithm is the same regardless of whether metrics are for\na job or a share.","operationId":"generate_share_assessment_metrics_from_text_v1_shares_assessment_metrics_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobMetricsGenerationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssessmentMetricsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/interviews":{"post":{"tags":["Interviews"],"summary":"Create Interview","description":"Create a new interview (maps to POST /v1/shares).\nClean interview-focused terminology for creating shareable interview links.","operationId":"create_interview_v1_interviews_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeShareLinkCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeShareLinkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Interviews"],"summary":"List Interviews","description":"List interviews with optional filtering (maps to GET /v1/shares).","operationId":"list_interviews_v1_interviews_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"email","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by recipient email","title":"Email"},"description":"Filter by recipient email"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ShareLinkStatus"},{"type":"null"}],"description":"Filter by interview status","title":"Status"},"description":"Filter by interview status"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of items per page","default":10,"title":"Limit"},"description":"Number of items per page"},{"name":"last_evaluated_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pagination token","title":"Last Evaluated Key"},"description":"Pagination token"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShareLinkListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/interviews/{interview_id}":{"get":{"tags":["Interviews"],"summary":"Get Interview","description":"Get details about a specific interview (maps to GET /v1/shares/{share_id}).","operationId":"get_interview_v1_interviews__interview_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"interview_id","in":"path","required":true,"schema":{"type":"string","title":"Interview Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShareLinkDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Interviews"],"summary":"Update Interview","description":"Update an interview with new data (maps to PUT /v1/shares/{share_id}).","operationId":"update_interview_v1_interviews__interview_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"interview_id","in":"path","required":true,"schema":{"type":"string","title":"Interview Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeShareLinkUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeShareLinkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Interviews"],"summary":"Delete Interview","description":"Delete an interview (maps to DELETE /v1/shares/{share_id}).","operationId":"delete_interview_v1_interviews__interview_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"interview_id","in":"path","required":true,"schema":{"type":"string","title":"Interview Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/interviews/{interview_id}/sessions":{"post":{"tags":["Interviews"],"summary":"Create Interview Session","description":"Create a new interview session (maps to POST /v1/shares/{share_id}/practice-sessions).","operationId":"create_interview_session_v1_interviews__interview_id__sessions_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"interview_id","in":"path","required":true,"schema":{"type":"string","title":"Interview Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeSessionCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeSessionRecord"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Interviews"],"summary":"List Interview Sessions","description":"List interview sessions for a specific interview (maps to GET /v1/shares/{share_id}/practice-sessions).","operationId":"list_interview_sessions_v1_interviews__interview_id__sessions_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"interview_id","in":"path","required":true,"schema":{"type":"string","title":"Interview Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of items per page","default":10,"title":"Limit"},"description":"Number of items per page"},{"name":"last_evaluated_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pagination token","title":"Last Evaluated Key"},"description":"Pagination token"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeSessionListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/interviews/{interview_id}/sessions/{session_id}":{"get":{"tags":["Interviews"],"summary":"Get Interview Session","description":"Get details of a specific interview session (maps to GET /v1/shares/{share_id}/practice-sessions/{session_id}).","operationId":"get_interview_session_v1_interviews__interview_id__sessions__session_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"interview_id","in":"path","required":true,"schema":{"type":"string","title":"Interview Id"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeSessionRecord"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/interviews/{interview_id}/sessions/{session_id}/evaluation":{"get":{"tags":["Interviews"],"summary":"Get Interview Session Evaluation","description":"Get evaluation for an interview session (maps to GET /v1/shares/{share_id}/practice-sessions/{session_id}/evaluation).","operationId":"get_interview_session_evaluation_v1_interviews__interview_id__sessions__session_id__evaluation_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"interview_id","in":"path","required":true,"schema":{"type":"string","title":"Interview Id"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"force_refresh","in":"query","required":false,"schema":{"type":"boolean","description":"Force regenerate the evaluation report","default":false,"title":"Force Refresh"},"description":"Force regenerate the evaluation report"},{"name":"section","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Specific section to evaluate","title":"Section"},"description":"Specific section to evaluate"},{"name":"manager_evaluation","in":"query","required":false,"schema":{"type":"boolean","description":"Generate manager evaluation only","default":false,"title":"Manager Evaluation"},"description":"Generate manager evaluation only"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/interviews/{interview_id}/sessions/{session_id}/recording":{"get":{"tags":["Interviews"],"summary":"Get Interview Session Recording","description":"Get recording URL for an interview session (maps to GET /v1/shares/{share_id}/practice-sessions/{session_id}/recording).","operationId":"get_interview_session_recording_v1_interviews__interview_id__sessions__session_id__recording_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"interview_id","in":"path","required":true,"schema":{"type":"string","title":"Interview Id"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/interviews/{interview_id}/sessions/{session_id}/transcript":{"get":{"tags":["Interviews"],"summary":"Get Interview Session Transcript","description":"Get transcript for an interview session (maps to GET /v1/shares/{share_id}/practice-sessions/{session_id}/transcript).","operationId":"get_interview_session_transcript_v1_interviews__interview_id__sessions__session_id__transcript_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"interview_id","in":"path","required":true,"schema":{"type":"string","title":"Interview Id"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/interviews/email/{email}/sessions":{"get":{"tags":["Interviews"],"summary":"List Interview Sessions By Email","description":"List interview sessions by email (maps to GET /v1/shares/email/{email}/practice-sessions).","operationId":"list_interview_sessions_by_email_v1_interviews_email__email__sessions_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"email","in":"path","required":true,"schema":{"type":"string","title":"Email"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of items per page","default":10,"title":"Limit"},"description":"Number of items per page"},{"name":"last_evaluated_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pagination token","title":"Last Evaluated Key"},"description":"Pagination token"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeSessionListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/interviews/bulk-create":{"post":{"tags":["Interviews"],"summary":"Bulk Create Interviews","description":"Bulk create interviews for migration from localStorage to API-based storage.","operationId":"bulk_create_interviews_v1_interviews_bulk_create_post","requestBody":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PracticeShareLinkCreate"},"type":"array","title":"Interviews"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PracticeShareLinkResponse"},"type":"array","title":"Response Bulk Create Interviews V1 Interviews Bulk Create Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/companies/{company_id}/screenings":{"post":{"tags":["AI Screenings"],"summary":"Create Screening","description":"Create a new AI screening with enhanced job and persona integration.\n\nThis endpoint:\n1. Fetches job details using the provided job_id\n2. Fetches interviewer persona using the provided persona_id\n3. Uses LLM to generate personalized system_message and welcome_message\n4. Creates the screening share link with generated content","operationId":"create_screening_v1_companies__company_id__screenings_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"company_id","in":"path","required":true,"schema":{"type":"string","title":"Company Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreeningCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeShareLinkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["AI Screenings"],"summary":"List Screenings","description":"List AI screenings with optional filtering for a specific company.","operationId":"list_screenings_v1_companies__company_id__screenings_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"company_id","in":"path","required":true,"schema":{"type":"string","title":"Company Id"}},{"name":"email","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by candidate email","title":"Email"},"description":"Filter by candidate email"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ShareLinkStatus"},{"type":"null"}],"description":"Filter by screening status","title":"Status"},"description":"Filter by screening status"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of items per page","default":10,"title":"Limit"},"description":"Number of items per page"},{"name":"last_evaluated_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pagination token","title":"Last Evaluated Key"},"description":"Pagination token"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShareLinkListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{company_id}/screenings/{screening_id}":{"get":{"tags":["AI Screenings"],"summary":"Get Screening","description":"Get details of a specific AI screening.\n\nThis endpoint retrieves detailed information about a screening including\nits configuration, status, and metadata.","operationId":"get_screening_v1_companies__company_id__screenings__screening_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"company_id","in":"path","required":true,"schema":{"type":"string","title":"Company Id"}},{"name":"screening_id","in":"path","required":true,"schema":{"type":"string","title":"Screening Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShareLinkDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{company_id}/screenings/{screening_id}/duplicate":{"post":{"tags":["AI Screenings"],"summary":"Duplicate Screening","description":"Duplicate an existing AI screening (maps to POST /v1/shares/{share_id}/duplicate).\nCreates a copy of the screening with a new ID.","operationId":"duplicate_screening_v1_companies__company_id__screenings__screening_id__duplicate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"screening_id","in":"path","required":true,"schema":{"type":"string","title":"Screening Id"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeShareLinkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{company_id}/screenings/{screening_id}/sessions":{"post":{"tags":["AI Screenings"],"summary":"Create Screening Session","description":"Create a new screening session (maps to POST /v1/shares/{share_id}/practice-sessions).","operationId":"create_screening_session_v1_companies__company_id__screenings__screening_id__sessions_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"screening_id","in":"path","required":true,"schema":{"type":"string","title":"Screening Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeSessionCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeSessionRecord"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["AI Screenings"],"summary":"List Screening Sessions","description":"List screening sessions for a specific screening (maps to GET /v1/shares/{share_id}/practice-sessions).","operationId":"list_screening_sessions_v1_companies__company_id__screenings__screening_id__sessions_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"screening_id","in":"path","required":true,"schema":{"type":"string","title":"Screening Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of items per page","default":10,"title":"Limit"},"description":"Number of items per page"},{"name":"last_evaluated_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pagination token","title":"Last Evaluated Key"},"description":"Pagination token"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeSessionListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{company_id}/screenings/{screening_id}/sessions/{session_id}":{"get":{"tags":["AI Screenings"],"summary":"Get Screening Session","description":"Get details of a specific screening session (maps to GET /v1/shares/{share_id}/practice-sessions/{session_id}).","operationId":"get_screening_session_v1_companies__company_id__screenings__screening_id__sessions__session_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"screening_id","in":"path","required":true,"schema":{"type":"string","title":"Screening Id"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeSessionRecord"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["AI Screenings"],"summary":"Delete Screening Session","description":"Delete a screening session (maps to DELETE /v1/shares/{share_id}/practice-sessions/{session_id}).","operationId":"delete_screening_session_v1_companies__company_id__screenings__screening_id__sessions__session_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"screening_id","in":"path","required":true,"schema":{"type":"string","title":"Screening Id"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{company_id}/screenings/{screening_id}/sessions/{session_id}/status":{"put":{"tags":["AI Screenings"],"summary":"Update Screening Session Status","description":"Update the status of a screening session (maps to PUT /v1/shares/{share_id}/practice-sessions/{session_id}/status).","operationId":"update_screening_session_status_v1_companies__company_id__screenings__screening_id__sessions__session_id__status_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"screening_id","in":"path","required":true,"schema":{"type":"string","title":"Screening Id"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeSessionStatusUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeSessionRecord"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{company_id}/screenings/{screening_id}/sessions/{session_id}/evaluation":{"get":{"tags":["AI Screenings"],"summary":"Get Screening Session Evaluation","description":"Get evaluation for a screening session (maps to GET /v1/shares/{share_id}/practice-sessions/{session_id}/evaluation).","operationId":"get_screening_session_evaluation_v1_companies__company_id__screenings__screening_id__sessions__session_id__evaluation_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"screening_id","in":"path","required":true,"schema":{"type":"string","title":"Screening Id"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"force_refresh","in":"query","required":false,"schema":{"type":"boolean","description":"Force regenerate the evaluation report","default":false,"title":"Force Refresh"},"description":"Force regenerate the evaluation report"},{"name":"section","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Specific section to evaluate","title":"Section"},"description":"Specific section to evaluate"},{"name":"manager_evaluation","in":"query","required":false,"schema":{"type":"boolean","description":"Generate manager evaluation only","default":false,"title":"Manager Evaluation"},"description":"Generate manager evaluation only"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{company_id}/screenings/{screening_id}/sessions/{session_id}/recording":{"get":{"tags":["AI Screenings"],"summary":"Get Screening Session Recording","description":"Get recording URL for a screening session (maps to GET /v1/shares/{share_id}/practice-sessions/{session_id}/recording).","operationId":"get_screening_session_recording_v1_companies__company_id__screenings__screening_id__sessions__session_id__recording_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"screening_id","in":"path","required":true,"schema":{"type":"string","title":"Screening Id"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{company_id}/screenings/{screening_id}/sessions/{session_id}/messages":{"get":{"tags":["AI Screenings"],"summary":"Get Screening Session Messages","description":"Get messages/transcript for a screening session (maps to GET /v1/shares/{share_id}/practice-sessions/{session_id}/messages).","operationId":"get_screening_session_messages_v1_companies__company_id__screenings__screening_id__sessions__session_id__messages_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"screening_id","in":"path","required":true,"schema":{"type":"string","title":"Screening Id"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{company_id}/screenings/{screening_id}/sessions/{session_id}/evaluate-audio":{"post":{"tags":["AI Screenings"],"summary":"Evaluate Audio For Screening Session","description":"Evaluate audio for a screening session (maps to POST /v1/shares/{share_id}/practice-sessions/{session_id}/evaluate-audio).","operationId":"evaluate_audio_for_screening_session_v1_companies__company_id__screenings__screening_id__sessions__session_id__evaluate_audio_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"screening_id","in":"path","required":true,"schema":{"type":"string","title":"Screening Id"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{company_id}/screenings/email/{email}/sessions":{"get":{"tags":["AI Screenings"],"summary":"List Screening Sessions By Email","description":"List screening sessions by email (maps to GET /v1/shares/email/{email}/practice-sessions).","operationId":"list_screening_sessions_by_email_v1_companies__company_id__screenings_email__email__sessions_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"company_id","in":"path","required":true,"schema":{"type":"string","title":"Company Id"}},{"name":"email","in":"path","required":true,"schema":{"type":"string","title":"Email"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of items per page","default":10,"title":"Limit"},"description":"Number of items per page"},{"name":"last_evaluated_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pagination token","title":"Last Evaluated Key"},"description":"Pagination token"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeSessionListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{company_id}/screenings/{screening_id}/expiration":{"put":{"tags":["AI Screenings"],"summary":"Update Screening Expiration","description":"Update screening expiration date (maps to PUT /v1/shares/{share_id}/expiration).","operationId":"update_screening_expiration_v1_companies__company_id__screenings__screening_id__expiration_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"screening_id","in":"path","required":true,"schema":{"type":"string","title":"Screening Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShareLinkUpdateExpiration"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeShareLinkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{company_id}/screenings/{screening_id}/messages":{"put":{"tags":["AI Screenings"],"summary":"Update Screening Messages","description":"Update screening welcome and instruction messages (maps to PUT /v1/shares/{share_id}/instructions).","operationId":"update_screening_messages_v1_companies__company_id__screenings__screening_id__messages_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"screening_id","in":"path","required":true,"schema":{"type":"string","title":"Screening Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShareLinkUpdateMessages"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeShareLinkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{company_id}/screenings/bulk-create":{"post":{"tags":["AI Screenings"],"summary":"Bulk Create Screenings","description":"Bulk create AI screenings for migration from localStorage to API-based storage.","operationId":"bulk_create_screenings_v1_companies__company_id__screenings_bulk_create_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"company_id","in":"path","required":true,"schema":{"type":"string","title":"Company Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PracticeShareLinkCreate"},"title":"Screenings"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PracticeShareLinkResponse"},"title":"Response Bulk Create Screenings V1 Companies  Company Id  Screenings Bulk Create Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{company_id}/screenings/{screening_id}/regenerate":{"post":{"tags":["AI Screenings"],"summary":"Regenerate AI screening content","description":"Regenerate the AI screening content using existing share's persona and company data.\n\nThis endpoint:\n1. Fetches the existing screening/share link\n2. Uses the existing share's persona_id and company_id (no user_id lookup needed)\n3. Checks if share_id follows {job_id}_{known_scenario_id} pattern for scenario simulation\n4. For scenario simulation: regenerates content using scenario-specific path without job data\n5. For regular screenings: regenerates content using job and persona data\n6. Preserves existing language settings and other configuration","operationId":"regenerate_screening_v1_companies__company_id__screenings__screening_id__regenerate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"screening_id","in":"path","required":true,"schema":{"type":"string","title":"Screening Id"}},{"name":"language","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Language code for content generation (en, ko, zh, es)","default":"en","title":"Language"},"description":"Language code for content generation (en, ko, zh, es)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeShareLinkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/screenings/{screening_id}":{"get":{"tags":["Screenings"],"summary":"Get Screening By Id","description":"Get details of a specific AI screening by ID.\n\nThis endpoint retrieves detailed information about a screening including\nits configuration, status, and metadata. Does not require company_id.","operationId":"get_screening_by_id_v1_screenings__screening_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"screening_id","in":"path","required":true,"schema":{"type":"string","title":"Screening Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShareLinkDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Screenings"],"summary":"Update Screening By Id","description":"Update a specific AI screening by ID.","operationId":"update_screening_by_id_v1_screenings__screening_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"screening_id","in":"path","required":true,"schema":{"type":"string","title":"Screening Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Update Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Screenings"],"summary":"Delete Screening By Id","description":"Delete a specific AI screening by ID.","operationId":"delete_screening_by_id_v1_screenings__screening_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"screening_id","in":"path","required":true,"schema":{"type":"string","title":"Screening Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/personas":{"get":{"tags":["Personas"],"summary":"List Personas","description":"List all personas for a company. If no default persona exists, creates one automatically.\nRequires either user_id (to derive company_id) or company_id directly.","operationId":"list_personas_v1_personas_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"User ID for authentication (optional if company_id is provided)","title":"User Id"},"description":"User ID for authentication (optional if company_id is provided)"},{"name":"company_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Company ID (optional if user_id is provided)","title":"Company Id"},"description":"Company ID (optional if user_id is provided)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of items per page","default":10,"title":"Limit"},"description":"Number of items per page"},{"name":"last_evaluated_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pagination token","title":"Last Evaluated Key"},"description":"Pagination token"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InterviewerPersona"},"title":"Response List Personas V1 Personas Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Personas"],"summary":"Create Persona","description":"Create a new interviewer persona.","operationId":"create_persona_v1_personas_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID for authentication","title":"User Id"},"description":"User ID for authentication"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterviewerPersonaCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterviewerPersona"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/personas/{persona_id}":{"get":{"tags":["Personas"],"summary":"Get Persona","description":"Get a specific persona by ID.\nRequires either user_id (to derive company_id) or company_id directly.","operationId":"get_persona_v1_personas__persona_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"persona_id","in":"path","required":true,"schema":{"type":"string","title":"Persona Id"}},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"User ID for authentication (optional if company_id is provided)","title":"User Id"},"description":"User ID for authentication (optional if company_id is provided)"},{"name":"company_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Company ID (optional if user_id is provided)","title":"Company Id"},"description":"Company ID (optional if user_id is provided)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterviewerPersona"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Personas"],"summary":"Update Persona","description":"Update an existing persona.","operationId":"update_persona_v1_personas__persona_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"persona_id","in":"path","required":true,"schema":{"type":"string","title":"Persona Id"}},{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID for authentication","title":"User Id"},"description":"User ID for authentication"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterviewerPersonaCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterviewerPersona"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Personas"],"summary":"Patch Persona","description":"Partially update a persona (supports avatar_url, voice_id, language, and message updates).","operationId":"patch_persona_v1_personas__persona_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"persona_id","in":"path","required":true,"schema":{"type":"string","title":"Persona Id"}},{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID for authentication","title":"User Id"},"description":"User ID for authentication"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterviewerPersonaUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterviewerPersona"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Personas"],"summary":"Delete Persona","description":"Delete a persona.","operationId":"delete_persona_v1_personas__persona_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"persona_id","in":"path","required":true,"schema":{"type":"string","title":"Persona Id"}},{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID for authentication","title":"User Id"},"description":"User ID for authentication"},{"name":"company_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Company ID (optional, will be derived from user_id if not provided)","title":"Company Id"},"description":"Company ID (optional, will be derived from user_id if not provided)"}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/personas/linkedin":{"post":{"tags":["Personas"],"summary":"Extract Persona From Linkedin","description":"Create a persona from LinkedIn profile data using resume parsing.\nReturns both the created persona and the full parsed resume data.","operationId":"extract_persona_from_linkedin_v1_personas_linkedin_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID for authentication","title":"User Id"},"description":"User ID for authentication"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkedInProfileData"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkedInPersonaResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/personas/{persona_id}/avatar":{"post":{"tags":["Personas"],"summary":"Upload Persona Avatar","description":"Upload an avatar image for a persona.","operationId":"upload_persona_avatar_v1_personas__persona_id__avatar_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"persona_id","in":"path","required":true,"schema":{"type":"string","title":"Persona Id"}},{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID for authentication","title":"User Id"},"description":"User ID for authentication"}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_persona_avatar_v1_personas__persona_id__avatar_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterviewerPersona"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/personas/{persona_id}/analytics":{"get":{"tags":["Personas"],"summary":"Get Persona Analytics","description":"Get analytics for a specific persona.","operationId":"get_persona_analytics_v1_personas__persona_id__analytics_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"persona_id","in":"path","required":true,"schema":{"type":"string","title":"Persona Id"}},{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID for authentication","title":"User Id"},"description":"User ID for authentication"},{"name":"date_range","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Date range for analytics","default":"30d","title":"Date Range"},"description":"Date range for analytics"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonaAnalytics"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/scenarios/":{"get":{"tags":["Scenarios"],"summary":"List Scenarios","description":"List all scenarios from database with optional filtering","operationId":"list_scenarios_v1_scenarios__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by scenario group","title":"Group"},"description":"Filter by scenario group"},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ScenarioType"},{"type":"null"}],"description":"Filter by scenario type","title":"Type"},"description":"Filter by scenario type"},{"name":"enabled","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Filter by enabled status","title":"Enabled"},"description":"Filter by enabled status"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenariosResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Scenarios"],"summary":"Create Scenario","description":"Create a new scenario with auto-incremented version if not specified","operationId":"create_scenario_v1_scenarios__post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/models__scenario__ScenarioResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/scenarios/by-group":{"get":{"tags":["Scenarios"],"summary":"List Scenarios By Group","description":"List scenarios from database grouped by functional area","operationId":"list_scenarios_by_group_v1_scenarios_by_group_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"enabled","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Filter by enabled status","title":"Enabled"},"description":"Filter by enabled status"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenariosByGroupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/scenarios/{scenario_id}":{"get":{"tags":["Scenarios"],"summary":"Get Scenario","description":"Get a specific scenario by ID from database (returns latest version)","operationId":"get_scenario_v1_scenarios__scenario_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"scenario_id","in":"path","required":true,"schema":{"type":"string","title":"Scenario Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/models__scenario__ScenarioResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Scenarios"],"summary":"Update Scenario","description":"Update a scenario by creating a new version (preserves version history)","operationId":"update_scenario_v1_scenarios__scenario_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"scenario_id","in":"path","required":true,"schema":{"type":"string","title":"Scenario Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/models__scenario__ScenarioResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Scenarios"],"summary":"Delete Scenario","description":"Delete a scenario (idempotent operation).\n\nReturns 204 No Content whether the scenario exists or not, following REST idempotency principles.\nMultiple DELETE requests have the same effect: the scenario will not exist.","operationId":"delete_scenario_v1_scenarios__scenario_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"scenario_id","in":"path","required":true,"schema":{"type":"string","title":"Scenario Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/scenarios/{scenario_id}/versions":{"get":{"tags":["Scenarios"],"summary":"List Scenario Versions","description":"List all versions of a specific scenario, sorted by version number (newest first)","operationId":"list_scenario_versions_v1_scenarios__scenario_id__versions_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"scenario_id","in":"path","required":true,"schema":{"type":"string","title":"Scenario Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenariosResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/scenarios/{scenario_id}/versions/{version}":{"get":{"tags":["Scenarios"],"summary":"Get Scenario Version","description":"Get a specific version of a scenario by ID and version from database","operationId":"get_scenario_version_v1_scenarios__scenario_id__versions__version__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"scenario_id","in":"path","required":true,"schema":{"type":"string","title":"Scenario Id"}},{"name":"version","in":"path","required":true,"schema":{"type":"string","title":"Version"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/models__scenario__ScenarioResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/scenarios/{scenario_id}/rollback/{version}":{"post":{"tags":["Scenarios"],"summary":"Rollback Scenario","description":"Rollback scenario to a specific version by creating a new version with old data","operationId":"rollback_scenario_v1_scenarios__scenario_id__rollback__version__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"scenario_id","in":"path","required":true,"schema":{"type":"string","title":"Scenario Id"}},{"name":"version","in":"path","required":true,"schema":{"type":"string","title":"Version"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/models__scenario__ScenarioResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/scenarios/{scenario_id}/banner":{"post":{"tags":["Scenarios"],"summary":"Upload Scenario Banner","description":"Upload a banner image for a scenario.\nUpdates the latest version of the scenario with the banner URL.","operationId":"upload_scenario_banner_v1_scenarios__scenario_id__banner_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"scenario_id","in":"path","required":true,"schema":{"type":"string","title":"Scenario Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_scenario_banner_v1_scenarios__scenario_id__banner_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/models__scenario__ScenarioResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/caremojo/create-scenario":{"post":{"tags":["CareMojo"],"summary":"Create Scenario","description":"Create a CareMojo scenario in readymojo-api.\n\nMaps caremojo-admin scenario format to readymojo /v1/scenarios,\ncreates the scenario, and generates the AI patient system message.\n\nAlso syncs:\n- practice_share record with persona_id, company_id, voice_settings\n- persona record for peakmojo-livekit agent lookup\n\nReturns:\n    Created scenario ID, share reference, and generated system message","operationId":"create_scenario_v1_caremojo_create_scenario_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateScenarioRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateScenarioResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/caremojo/update-scenario":{"post":{"tags":["CareMojo"],"summary":"Update Scenario","description":"Update a CareMojo scenario in readymojo-api.\n\nMaps caremojo-admin scenario format to readymojo /v1/scenarios,\nupdates the scenario, and regenerates the AI patient system message.\n\nAlso re-syncs:\n- practice_share record with persona_id, company_id, voice_settings\n- persona record for peakmojo-livekit agent lookup\n\nReturns:\n    Updated scenario ID, share reference, and regenerated system message","operationId":"update_scenario_v1_caremojo_update_scenario_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateScenarioRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateScenarioResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/companies/{company_id}/voices":{"get":{"tags":["Voices"],"summary":"Get Company Voices","description":"Get voice library for a company - includes standard voices and company custom voices","operationId":"get_company_voices_v1_companies__company_id__voices_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"company_id","in":"path","required":true,"schema":{"type":"string","title":"Company Id"}},{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID for authentication","title":"User Id"},"description":"User ID for authentication"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceLibraryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Voices"],"summary":"Save Company Voice","description":"Save a voice to the company's voice library","operationId":"save_company_voice_v1_companies__company_id__voices_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"company_id","in":"path","required":true,"schema":{"type":"string","title":"Company Id"}},{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID for authentication","title":"User Id"},"description":"User ID for authentication"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceSaveRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Voice"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{company_id}/voices/{voice_id}":{"delete":{"tags":["Voices"],"summary":"Delete Company Voice","description":"Delete a voice from the company's voice library","operationId":"delete_company_voice_v1_companies__company_id__voices__voice_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"company_id","in":"path","required":true,"schema":{"type":"string","title":"Company Id"}},{"name":"voice_id","in":"path","required":true,"schema":{"type":"string","title":"Voice Id"}},{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID for authentication","title":"User Id"},"description":"User ID for authentication"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sandbox/create":{"post":{"tags":["Sandbox"],"summary":"Create Sandbox","description":"Create a new Desktop Sandbox (E2B or Self-Hosted) and associate it with a practice session","operationId":"create_sandbox_v1_sandbox_create_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SandboxCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SandboxResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/sandbox/{sandbox_id}/stream/start":{"post":{"tags":["Sandbox"],"summary":"Start Stream","description":"Start streaming for a sandbox","operationId":"start_stream_v1_sandbox__sandbox_id__stream_start_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sandbox_id","in":"path","required":true,"schema":{"type":"string","description":"Sandbox ID","title":"Sandbox Id"},"description":"Sandbox ID"},{"name":"server_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Server name for self-hosted sandbox","title":"Server Name"},"description":"Server name for self-hosted sandbox"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StreamStartRequest","default":{"require_auth":true}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StreamResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sandbox/{sandbox_id}/stream/url":{"get":{"tags":["Sandbox"],"summary":"Get Stream Url","description":"Get the stream URL for a sandbox","operationId":"get_stream_url_v1_sandbox__sandbox_id__stream_url_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sandbox_id","in":"path","required":true,"schema":{"type":"string","description":"Sandbox ID","title":"Sandbox Id"},"description":"Sandbox ID"},{"name":"view_only","in":"query","required":false,"schema":{"type":"boolean","description":"Generate view-only URL","default":false,"title":"View Only"},"description":"Generate view-only URL"},{"name":"server_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Server name for self-hosted sandbox","title":"Server Name"},"description":"Server name for self-hosted sandbox"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StreamResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sandbox/{sandbox_id}/pause":{"post":{"tags":["Sandbox"],"summary":"Pause Sandbox","description":"Pause a running sandbox to preserve its state.\n\nWhen paused, the sandbox's filesystem and memory state (including running processes,\nloaded variables, data, etc.) are preserved. The sandbox can be resumed later using\nthe resume endpoint.\n\nNote: Auto-pause is enabled by default, so sandboxes will automatically pause\nwhen they time out. Use this endpoint for explicit pausing before timeout.","operationId":"pause_sandbox_v1_sandbox__sandbox_id__pause_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sandbox_id","in":"path","required":true,"schema":{"type":"string","description":"Sandbox ID","title":"Sandbox Id"},"description":"Sandbox ID"},{"name":"server_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Server name for self-hosted sandbox","title":"Server Name"},"description":"Server name for self-hosted sandbox"},{"name":"region","in":"query","required":false,"schema":{"type":"string","description":"Region for self-hosted sandbox (us or asia)","default":"us","title":"Region"},"description":"Region for self-hosted sandbox (us or asia)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SandboxPauseResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sandbox/{sandbox_id}/resume":{"post":{"tags":["Sandbox"],"summary":"Resume Sandbox","description":"Resume a paused sandbox.\n\nRestores the sandbox's filesystem and memory state from when it was paused.","operationId":"resume_sandbox_v1_sandbox__sandbox_id__resume_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sandbox_id","in":"path","required":true,"schema":{"type":"string","description":"Sandbox ID","title":"Sandbox Id"},"description":"Sandbox ID"},{"name":"server_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Server name for self-hosted sandbox","title":"Server Name"},"description":"Server name for self-hosted sandbox"},{"name":"region","in":"query","required":false,"schema":{"type":"string","description":"Region for self-hosted sandbox (us or asia)","default":"us","title":"Region"},"description":"Region for self-hosted sandbox (us or asia)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SandboxPauseResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sandbox/{sandbox_id}":{"delete":{"tags":["Sandbox"],"summary":"Delete Sandbox","description":"Stop and delete a sandbox","operationId":"delete_sandbox_v1_sandbox__sandbox_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sandbox_id","in":"path","required":true,"schema":{"type":"string","description":"Sandbox ID","title":"Sandbox Id"},"description":"Sandbox ID"},{"name":"server_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Server name for self-hosted sandbox","title":"Server Name"},"description":"Server name for self-hosted sandbox"},{"name":"region","in":"query","required":false,"schema":{"type":"string","description":"Region for self-hosted sandbox (us or asia)","default":"us","title":"Region"},"description":"Region for self-hosted sandbox (us or asia)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sandbox/list":{"get":{"tags":["Sandbox"],"summary":"List Active Sandboxes","description":"List all active sandboxes for debugging","operationId":"list_active_sandboxes_v1_sandbox_list_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SandboxListResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/sandbox/health":{"get":{"tags":["Sandbox"],"summary":"Health Check","description":"Health check endpoint with sandbox status","operationId":"health_check_v1_sandbox_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthCheckResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/sandbox/{sandbox_id}/status":{"get":{"tags":["Sandbox"],"summary":"Get Sandbox Status","description":"Check if sandbox is alive and get its status.\nTests connectivity by attempting to connect and run a simple command.","operationId":"get_sandbox_status_v1_sandbox__sandbox_id__status_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sandbox_id","in":"path","required":true,"schema":{"type":"string","description":"Sandbox ID","title":"Sandbox Id"},"description":"Sandbox ID"},{"name":"server_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Server name for self-hosted sandbox","title":"Server Name"},"description":"Server name for self-hosted sandbox"},{"name":"region","in":"query","required":false,"schema":{"type":"string","description":"Region for self-hosted sandbox (us or asia)","default":"us","title":"Region"},"description":"Region for self-hosted sandbox (us or asia)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Sandbox Status V1 Sandbox  Sandbox Id  Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sandbox/{sandbox_id}/screenshot":{"get":{"tags":["Sandbox"],"summary":"Take Screenshot","description":"Take a screenshot of the sandbox screen","operationId":"take_screenshot_v1_sandbox__sandbox_id__screenshot_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sandbox_id","in":"path","required":true,"schema":{"type":"string","description":"Sandbox ID","title":"Sandbox Id"},"description":"Sandbox ID"},{"name":"format","in":"query","required":false,"schema":{"type":"string","description":"Screenshot format (png, jpeg)","default":"png","title":"Format"},"description":"Screenshot format (png, jpeg)"},{"name":"server_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Server name for self-hosted sandbox","title":"Server Name"},"description":"Server name for self-hosted sandbox"},{"name":"region","in":"query","required":false,"schema":{"type":"string","description":"Region for self-hosted sandbox (us or asia)","default":"us","title":"Region"},"description":"Region for self-hosted sandbox (us or asia)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreenshotResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sandbox/{sandbox_id}/describe-screen/cached":{"get":{"tags":["Sandbox"],"summary":"Describe Screen Cached","description":"Get the most recent cached screen description (instant retrieval).\nReturns screen description from DynamoDB cache without waiting for LLM processing.\n\nNOTE: This endpoint is preserved for future use but requires background processing to be enabled.","operationId":"describe_screen_cached_v1_sandbox__sandbox_id__describe_screen_cached_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sandbox_id","in":"path","required":true,"schema":{"type":"string","description":"Sandbox ID","title":"Sandbox Id"},"description":"Sandbox ID"},{"name":"max_age_seconds","in":"query","required":false,"schema":{"type":"integer","description":"Maximum age of screen description in seconds","default":10,"title":"Max Age Seconds"},"description":"Maximum age of screen description in seconds"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LatestScreenDescriptionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sandbox/{sandbox_id}/describe-screen":{"post":{"tags":["Sandbox"],"summary":"Describe Screen","description":"Get real-time screen description by taking a live screenshot and processing with LLM.\nThis endpoint captures a fresh screenshot and processes it immediately (4-5 second response time).\nBy default, does not include screenshot data in response.\n\nNOTE: This endpoint now proxies to /describe-screen/live for real-time processing.","operationId":"describe_screen_v1_sandbox__sandbox_id__describe_screen_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sandbox_id","in":"path","required":true,"schema":{"type":"string","description":"Sandbox ID","title":"Sandbox Id"},"description":"Sandbox ID"},{"name":"server_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Server name for self-hosted sandbox","title":"Server Name"},"description":"Server name for self-hosted sandbox"},{"name":"region","in":"query","required":false,"schema":{"type":"string","description":"Region for self-hosted sandbox (us or asia)","default":"us","title":"Region"},"description":"Region for self-hosted sandbox (us or asia)"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreenDescriptionRequest","default":{"prompt":"Describe what you see on this screen","include_screenshot":true}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreenDescriptionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sandbox/{sandbox_id}/describe-screen/live":{"get":{"tags":["Sandbox"],"summary":"Describe Screen Live","description":"Get real-time screen description by taking a live screenshot and processing with LLM.\nThis endpoint captures a fresh screenshot and processes it immediately (4-5 second response time).\nBy default, does not include screenshot data in response.","operationId":"describe_screen_live_v1_sandbox__sandbox_id__describe_screen_live_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sandbox_id","in":"path","required":true,"schema":{"type":"string","description":"Sandbox ID","title":"Sandbox Id"},"description":"Sandbox ID"},{"name":"prompt","in":"query","required":false,"schema":{"type":"string","description":"Custom prompt for LLM","default":"Describe what you see on this screen","title":"Prompt"},"description":"Custom prompt for LLM"},{"name":"include_screenshot","in":"query","required":false,"schema":{"type":"boolean","description":"Include base64 screenshot in response","default":false,"title":"Include Screenshot"},"description":"Include base64 screenshot in response"},{"name":"server_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Server name for self-hosted sandbox","title":"Server Name"},"description":"Server name for self-hosted sandbox"},{"name":"region","in":"query","required":false,"schema":{"type":"string","description":"Region for self-hosted sandbox (us or asia)","default":"us","title":"Region"},"description":"Region for self-hosted sandbox (us or asia)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreenDescriptionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sandbox/{sandbox_id}/screen-capture-log":{"get":{"tags":["Sandbox"],"summary":"Get Screen Capture Log","description":"Get the screen capture log from the sandbox for debugging.","operationId":"get_screen_capture_log_v1_sandbox__sandbox_id__screen_capture_log_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sandbox_id","in":"path","required":true,"schema":{"type":"string","description":"Sandbox ID","title":"Sandbox Id"},"description":"Sandbox ID"},{"name":"server_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Server name for self-hosted sandbox","title":"Server Name"},"description":"Server name for self-hosted sandbox"},{"name":"region","in":"query","required":false,"schema":{"type":"string","description":"Region for self-hosted sandbox (us or asia)","default":"us","title":"Region"},"description":"Region for self-hosted sandbox (us or asia)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sandbox/{sandbox_id}/screens/timeline":{"get":{"tags":["Sandbox"],"summary":"Get Screen Timeline","description":"Get timeline of screen thumbnails for visual scrubbing.\nReturns chronological list of screen captures with thumbnails and descriptions.","operationId":"get_screen_timeline_v1_sandbox__sandbox_id__screens_timeline_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sandbox_id","in":"path","required":true,"schema":{"type":"string","description":"Sandbox ID","title":"Sandbox Id"},"description":"Sandbox ID"},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Start timestamp (epoch seconds)","title":"Start Time"},"description":"Start timestamp (epoch seconds)"},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"End timestamp (epoch seconds)","title":"End Time"},"description":"End timestamp (epoch seconds)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"description":"Maximum number of screens to return","default":50,"title":"Limit"},"description":"Maximum number of screens to return"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreenTimelineResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sandbox/{sandbox_id}/screenshots":{"get":{"tags":["Sandbox"],"summary":"Get Screenshots","description":"Get list of all screenshots from S3 for a sandbox session.\nReturns presigned URLs for downloading each screenshot.\nScreenshots are stored at recordings/{sandbox_id}/screenshots/screenshot_YYYYMMDD_HHMMSS.png","operationId":"get_screenshots_v1_sandbox__sandbox_id__screenshots_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sandbox_id","in":"path","required":true,"schema":{"type":"string","description":"Sandbox ID","title":"Sandbox Id"},"description":"Sandbox ID"},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Start timestamp filter (epoch seconds)","title":"Start Time"},"description":"Start timestamp filter (epoch seconds)"},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"End timestamp filter (epoch seconds)","title":"End Time"},"description":"End timestamp filter (epoch seconds)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"description":"Maximum number of screenshots to return","default":200,"title":"Limit"},"description":"Maximum number of screenshots to return"},{"name":"expires_in","in":"query","required":false,"schema":{"type":"integer","description":"Presigned URL expiration time in seconds","default":3600,"title":"Expires In"},"description":"Presigned URL expiration time in seconds"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreenshotsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sandbox/{sandbox_id}/recording":{"get":{"tags":["Sandbox"],"summary":"Get Recording","description":"Get the HLS playlist URL for a sandbox recording from S3","operationId":"get_recording_v1_sandbox__sandbox_id__recording_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sandbox_id","in":"path","required":true,"schema":{"type":"string","description":"Sandbox ID","title":"Sandbox Id"},"description":"Sandbox ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/livekit/connection-details":{"post":{"tags":["LiveKit"],"summary":"Get Connection Details","description":"Generate connection details for LiveKit room\n\nArgs:\n    request (ConnectionRequest): Request containing practice_session_id and participant_name","operationId":"get_connection_details_v1_livekit_connection_details_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionDetails"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/tavus/conversations":{"post":{"tags":["Tavus"],"summary":"Create Conversation","description":"Create a new Tavus conversation with an AI persona\n\nArgs:\n    request (ConversationRequest): Request containing persona_id and optional parameters","operationId":"create_conversation_v1_tavus_conversations_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/tavus/conversations/{conversation_id}":{"delete":{"tags":["Tavus"],"summary":"End Conversation","description":"End a Tavus conversation\n\nArgs:\n    conversation_id (str): The conversation ID to end","operationId":"end_conversation_v1_tavus_conversations__conversation_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/video-recordings/start":{"post":{"summary":"Start Recording","description":"Start a new video recording session","operationId":"start_recording_v1_video_recordings_start_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideoRecordingStart"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideoRecordingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/video-recordings/{session_id}/stop":{"post":{"summary":"Stop Recording","description":"Stop a video recording session","operationId":"stop_recording_v1_video_recordings__session_id__stop_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","description":"Video recording session ID","title":"Session Id"},"description":"Video recording session ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideoRecordingStop"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideoRecordingStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/video-recordings/{session_id}/complete":{"post":{"summary":"Complete Recording","description":"Mark video recording as completed with upload info","operationId":"complete_recording_v1_video_recordings__session_id__complete_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","description":"Video recording session ID","title":"Session Id"},"description":"Video recording session ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideoRecordingComplete"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideoRecordingStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/video-recordings/{session_id}/error":{"post":{"summary":"Handle Recording Error","description":"Mark video recording as failed with error info","operationId":"handle_recording_error_v1_video_recordings__session_id__error_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","description":"Video recording session ID","title":"Session Id"},"description":"Video recording session ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideoRecordingError"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideoRecordingStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/video-recordings/{session_id}/status":{"get":{"summary":"Get Recording Status","description":"Get video recording session details","operationId":"get_recording_status_v1_video_recordings__session_id__status_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","description":"Video recording session ID","title":"Session Id"},"description":"Video recording session ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideoRecordingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/video-recordings/practice-session/{practice_session_id}":{"get":{"summary":"Get Session Recordings","description":"Get all video recordings for a practice session","operationId":"get_session_recordings_v1_video_recordings_practice_session__practice_session_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"practice_session_id","in":"path","required":true,"schema":{"type":"string","description":"Practice session ID","title":"Practice Session Id"},"description":"Practice session ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PracticeSessionRecordingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/interviews/{practice_session_id}/screen-recording":{"post":{"summary":"Upload Screen Recording","description":"Initiate screen recording upload for a practice session","operationId":"upload_screen_recording_v1_interviews__practice_session_id__screen_recording_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"practice_session_id","in":"path","required":true,"schema":{"type":"string","description":"Practice session ID","title":"Practice Session Id"},"description":"Practice session ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreenRecordingUpload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreenRecordingUploadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"Get Screen Recording Metadata","description":"Get screen recording metadata for a practice session","operationId":"get_screen_recording_metadata_v1_interviews__practice_session_id__screen_recording_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"practice_session_id","in":"path","required":true,"schema":{"type":"string","description":"Practice session ID","title":"Practice Session Id"},"description":"Practice session ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreenRecordingMetadata"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Delete Screen Recording","description":"Delete screen recording(s) for a practice session","operationId":"delete_screen_recording_v1_interviews__practice_session_id__screen_recording_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"practice_session_id","in":"path","required":true,"schema":{"type":"string","description":"Practice session ID","title":"Practice Session Id"},"description":"Practice session ID"},{"name":"upload_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Specific upload ID to delete","title":"Upload Id"},"description":"Specific upload ID to delete"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/interviews/{practice_session_id}/screen-recording/status":{"put":{"summary":"Update Screen Recording Status","description":"Update screen recording status","operationId":"update_screen_recording_status_v1_interviews__practice_session_id__screen_recording_status_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"practice_session_id","in":"path","required":true,"schema":{"type":"string","description":"Practice session ID","title":"Practice Session Id"},"description":"Practice session ID"},{"name":"upload_id","in":"query","required":true,"schema":{"type":"string","description":"Upload ID from upload initiation","title":"Upload Id"},"description":"Upload ID from upload initiation"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreenRecordingStatusUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/interviews/{practice_session_id}/screen-recording/complete":{"post":{"summary":"Complete Screen Recording","description":"Mark screen recording as completed and update practice session","operationId":"complete_screen_recording_v1_interviews__practice_session_id__screen_recording_complete_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"practice_session_id","in":"path","required":true,"schema":{"type":"string","description":"Practice session ID","title":"Practice Session Id"},"description":"Practice session ID"},{"name":"upload_id","in":"query","required":true,"schema":{"type":"string","description":"Upload ID from upload initiation","title":"Upload Id"},"description":"Upload ID from upload initiation"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreenRecordingComplete"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies":{"get":{"tags":["Companies"],"summary":"List all companies","description":"List all companies.\n\nReturns a list of all companies in the system with basic information.","operationId":"get_companies_v1_companies_get","security":[{"HTTPBearer":[]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompaniesResponse"}}}}}},"post":{"tags":["Companies"],"summary":"Create new company","description":"Create a new company.\n\nCreates a new company with the provided information.\nFor trial companies, regular users can create them and become company admin.\nOnly super admins can create invited companies.\n\nAn optional company ID can be provided in the request body. If not provided, \na UUID will be automatically generated.","operationId":"create_company_v1_companies_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID from Clerk","title":"User Id"},"description":"User ID from Clerk"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/my":{"get":{"tags":["Companies"],"summary":"Get current user's company","description":"Get the company information for the current user.\n\nReturns the company details that the user belongs to.","operationId":"get_my_company_v1_companies_my_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID from Clerk","title":"User Id"},"description":"User ID from Clerk"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{company_id}":{"get":{"tags":["Companies"],"summary":"Get company by ID","description":"Get company details by company ID.\n\nReturns the company details including logo display settings for proper frontend rendering.","operationId":"get_company_v1_companies__company_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"company_id","in":"path","required":true,"schema":{"type":"string","title":"Company Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Companies"],"summary":"Update company","description":"Update company information.\n\nAllows updating of company details including logo, website, and logo display settings.","operationId":"update_company_v1_companies__company_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"company_id","in":"path","required":true,"schema":{"type":"string","title":"Company Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{company_id}/logo":{"post":{"tags":["Companies"],"summary":"Upload company logo","description":"Upload a logo image for a company.\n\nUploads the logo to S3 and updates the company's logo URL.\nSupports various image formats (jpg, png, svg, webp).","operationId":"upload_company_logo_v1_companies__company_id__logo_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"company_id","in":"path","required":true,"schema":{"type":"string","title":"Company Id"}},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"User ID for authentication (optional)","title":"User Id"},"description":"User ID for authentication (optional)"}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_company_logo_v1_companies__company_id__logo_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{company_id}/users":{"post":{"tags":["Companies"],"summary":"Assign user to company","description":"Assign a user to a company.\n\nAssociates a user with a company and sets their role.","operationId":"assign_user_to_company_v1_companies__company_id__users_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"company_id","in":"path","required":true,"schema":{"type":"string","title":"Company Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyUserAssignment"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyUserAssignmentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{company_id}/users/{email}":{"delete":{"tags":["Companies"],"summary":"Remove user from company","description":"Remove a user from a company.\n\nRemoves the company association from a user.","operationId":"remove_user_from_company_v1_companies__company_id__users__email__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"company_id","in":"path","required":true,"schema":{"type":"string","title":"Company Id"}},{"name":"email","in":"path","required":true,"schema":{"type":"string","title":"Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{company_id}/jobs":{"get":{"tags":["Companies"],"summary":"Get jobs by company ID","description":"Retrieve jobs for a specific company using an efficient query.\n\nUses a dedicated company_jobs entity structure for optimal performance.\nThis endpoint is much more efficient than filtering the general jobs list.\n\nReturns jobs sorted by posted date in descending order.\nUse the next_token for pagination to retrieve more results.\n\nSupports filtering by:\n- status: Filter by job status (ACTIVE, PAUSED, CLOSED)\n\nWhen obscure=True, company names will be replaced with dummy names.","operationId":"get_company_jobs_v1_companies__company_id__jobs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"company_id","in":"path","required":true,"schema":{"type":"string","title":"Company Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Maximum number of jobs to return","default":10,"title":"Limit"},"description":"Maximum number of jobs to return"},{"name":"next_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pagination token","title":"Next Token"},"description":"Pagination token"},{"name":"obscure","in":"query","required":false,"schema":{"type":"boolean","description":"Obscure company names and descriptions","default":false,"title":"Obscure"},"description":"Obscure company names and descriptions"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by job status (ACTIVE, PAUSED, CLOSED)","title":"Status"},"description":"Filter by job status (ACTIVE, PAUSED, CLOSED)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Companies"],"summary":"Create job for company","description":"Create a new job for a specific company.\n\nCreates both a global job entity and a company-specific job entity for efficient querying.\nAutomatically sets the company_id for the job and validates that the company exists.\n\nThe job will be indexed in OpenSearch for search functionality.\n\nShare links and assessment metrics are NOT automatically created. Users should create them\nmanually in later steps using:\n- POST /v1/jobs/{job_id}/scenario_share for scenario-based shares\n- POST /v1/shares/{share_id}/assessment-metrics/bulk for assessment metrics\n\nAn optional job ID can be provided in the request body. If not provided,\na UUID will be automatically generated. If provided without the 'job_' prefix,\nthe prefix will be added automatically.","operationId":"create_company_job_v1_companies__company_id__jobs_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"company_id","in":"path","required":true,"schema":{"type":"string","title":"Company Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Company Job V1 Companies  Company Id  Jobs Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{company_id}/jobs/generate-structure":{"post":{"tags":["Companies"],"summary":"Generate basic job structure from text","description":"Generate basic job structure from plain text description.\n\nTakes a plain text job description and generates:\n- Basic job information (title, department, location, etc.)\n- Professional job description\n- Detailed requirements and responsibilities\n- Comprehensive skills list\n\nThis is the first step in the job creation process. Use the other endpoints\nto extract metadata and generate interview questions separately.","operationId":"generate_job_structure_v1_companies__company_id__jobs_generate_structure_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"company_id","in":"path","required":true,"schema":{"type":"string","title":"Company Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobGenerationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobStructureGenerationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{company_id}/jobs/extract-metadata":{"post":{"tags":["Companies"],"summary":"Extract job metadata","description":"Extract structured metadata from job information.\n\nAnalyzes job details and extracts:\n- Job type (FULL_TIME, PART_TIME, CONTRACT, etc.)\n- Experience level (ENTRY_LEVEL, MID_LEVEL, SENIOR_LEVEL, etc.)\n- Work type (REMOTE, HYBRID, ON_SITE)\n- Structured salary information\n- Structured location information\n\nThis provides standardized metadata for filtering and categorization.","operationId":"extract_job_metadata_endpoint_v1_companies__company_id__jobs_extract_metadata_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"company_id","in":"path","required":true,"schema":{"type":"string","title":"Company Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobMetadataExtractionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobMetadataExtractionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{company_id}/info":{"post":{"tags":["Companies"],"summary":"Upload company information","description":"Upload company information as text and/or files.\n\nAccepts:\n- Plain text via form field `info_text`\n- Multiple files (PDFs, images, text files) via `files`\n\nIf files are uploaded, triggers a background batch job to process them.\nProcessed text is stored in S3 and combined when loading the company.","operationId":"upload_company_info_v1_companies__company_id__info_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"company_id","in":"path","required":true,"schema":{"type":"string","title":"Company Id"}},{"name":"info_text","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Info Text"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_company_info_v1_companies__company_id__info_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyInfoUploadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Companies"],"summary":"Get company information text","description":"Get the company_info text field for a specific company.\n\nThis endpoint returns only the company_info field, which can be large.\nUse this for AI interviews and chatbot contexts where company information is needed.","operationId":"get_company_info_v1_companies__company_id__info_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"company_id","in":"path","required":true,"schema":{"type":"string","title":"Company Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyInfoResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{company_id}/personas/{persona_id}":{"get":{"tags":["Companies"],"summary":"Get persona by company and persona ID","description":"Get a specific persona by company ID and persona ID.\n\nThis endpoint allows direct access to a persona without requiring user_id authentication.\nThe persona must belong to the specified company.","operationId":"get_company_persona_v1_companies__company_id__personas__persona_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"company_id","in":"path","required":true,"schema":{"type":"string","title":"Company Id"}},{"name":"persona_id","in":"path","required":true,"schema":{"type":"string","title":"Persona Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterviewerPersona"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/by-company":{"get":{"tags":["Candidates"],"summary":"List candidates by company ID","description":"Get candidates for a specific company with various filtering options.\n\nThis endpoint does not require user authentication and lists candidates\ndirectly by company_id. Supports filtering by stages, job roles, Mojo score ranges,\ntags, date ranges, and aging candidates. Also supports search by name or email.","operationId":"get_candidates_by_company_v1_candidates_by_company_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"company_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"description":"Company ID to list candidates for","title":"Company Id"},"description":"Company ID to list candidates for"},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search by name or email","title":"Search"},"description":"Search by name or email"},{"name":"job_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by job ID (deprecated, use job_ids)","title":"Job Id"},"description":"Filter by job ID (deprecated, use job_ids)"},{"name":"job_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by job IDs (comma-separated)","title":"Job Ids"},"description":"Filter by job IDs (comma-separated)"},{"name":"stages","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/CandidateStage"}},{"type":"null"}],"description":"Filter by stages","title":"Stages"},"description":"Filter by stages"},{"name":"roles","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Filter by job roles/titles","title":"Roles"},"description":"Filter by job roles/titles"},{"name":"mojo_score","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/MojoScoreRange"},{"type":"null"}],"description":"Filter by Mojo score range","title":"Mojo Score"},"description":"Filter by Mojo score range"},{"name":"tags","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Filter by tags","title":"Tags"},"description":"Filter by tags"},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter from date (YYYY-MM-DD)","title":"Date From"},"description":"Filter from date (YYYY-MM-DD)"},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter to date (YYYY-MM-DD)","title":"Date To"},"description":"Filter to date (YYYY-MM-DD)"},{"name":"aging_only","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Show only aging candidates","default":false,"title":"Aging Only"},"description":"Show only aging candidates"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Maximum candidates to return","default":20,"title":"Limit"},"description":"Maximum candidates to return"},{"name":"next_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pagination token","title":"Next Token"},"description":"Pagination token"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidatesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates":{"get":{"tags":["Candidates"],"summary":"List candidates with filtering","description":"Get candidates with various filtering options.\n\nSupports filtering by stages, job roles, Mojo score ranges, tags, date ranges,\nand aging candidates. Also supports search by name or email.","operationId":"get_candidates_v1_candidates_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID from Clerk","title":"User Id"},"description":"User ID from Clerk"},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search by name or email","title":"Search"},"description":"Search by name or email"},{"name":"job_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by job ID (deprecated, use job_ids)","title":"Job Id"},"description":"Filter by job ID (deprecated, use job_ids)"},{"name":"job_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by job IDs (comma-separated)","title":"Job Ids"},"description":"Filter by job IDs (comma-separated)"},{"name":"stages","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/CandidateStage"}},{"type":"null"}],"description":"Filter by stages","title":"Stages"},"description":"Filter by stages"},{"name":"roles","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Filter by job roles/titles","title":"Roles"},"description":"Filter by job roles/titles"},{"name":"mojo_score","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/MojoScoreRange"},{"type":"null"}],"description":"Filter by Mojo score range","title":"Mojo Score"},"description":"Filter by Mojo score range"},{"name":"tags","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Filter by tags","title":"Tags"},"description":"Filter by tags"},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter from date (YYYY-MM-DD)","title":"Date From"},"description":"Filter from date (YYYY-MM-DD)"},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter to date (YYYY-MM-DD)","title":"Date To"},"description":"Filter to date (YYYY-MM-DD)"},{"name":"aging_only","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Show only aging candidates","default":false,"title":"Aging Only"},"description":"Show only aging candidates"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Maximum candidates to return","default":20,"title":"Limit"},"description":"Maximum candidates to return"},{"name":"next_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pagination token","title":"Next Token"},"description":"Pagination token"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidatesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/company/{company_id}/candidate/{candidate_id}":{"get":{"tags":["Candidates"],"summary":"Get candidate by ID with company in path","description":"Get detailed information about a specific candidate including their notes.\nThis endpoint includes company_id in the path and does not check for user's associated company.","operationId":"get_candidate_by_company_v1_candidates_company__company_id__candidate__candidate_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"company_id","in":"path","required":true,"schema":{"type":"string","title":"Company Id"}},{"name":"candidate_id","in":"path","required":true,"schema":{"type":"string","title":"Candidate Id"}},{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID from Clerk","title":"User Id"},"description":"User ID from Clerk"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/{candidate_id}":{"get":{"tags":["Candidates"],"summary":"Get candidate by ID","description":"Get detailed information about a specific candidate including their notes.","operationId":"get_candidate_v1_candidates__candidate_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"candidate_id","in":"path","required":true,"schema":{"type":"string","title":"Candidate Id"}},{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID from Clerk","title":"User Id"},"description":"User ID from Clerk"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Candidates"],"summary":"Update candidate details","description":"Update candidate information.","operationId":"update_candidate_v1_candidates__candidate_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"candidate_id","in":"path","required":true,"schema":{"type":"string","title":"Candidate Id"}},{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID from Clerk","title":"User Id"},"description":"User ID from Clerk"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Candidates"],"summary":"Reject/delete candidate","description":"Reject a candidate (move to rejected stage) or permanently delete.\n\nBy default (permanent=False), this moves the candidate to rejected stage (soft delete).\nSet permanent=True to permanently delete the candidate from the database.","operationId":"delete_candidate_v1_candidates__candidate_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"candidate_id","in":"path","required":true,"schema":{"type":"string","title":"Candidate Id"}},{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID from Clerk","title":"User Id"},"description":"User ID from Clerk"},{"name":"permanent","in":"query","required":false,"schema":{"type":"boolean","description":"If true, permanently delete the candidate. If false, move to rejected stage.","default":false,"title":"Permanent"},"description":"If true, permanently delete the candidate. If false, move to rejected stage."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/{candidate_id}/stage":{"patch":{"tags":["Candidates"],"summary":"Update candidate stage","description":"Move a candidate to a different pipeline stage.","operationId":"update_candidate_stage_v1_candidates__candidate_id__stage_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"candidate_id","in":"path","required":true,"schema":{"type":"string","title":"Candidate Id"}},{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID from Clerk","title":"User Id"},"description":"User ID from Clerk"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateStageUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/{candidate_id}/notes":{"post":{"tags":["Candidates"],"summary":"Add note to candidate","description":"Add a note to a candidate.","operationId":"add_candidate_note_v1_candidates__candidate_id__notes_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"candidate_id","in":"path","required":true,"schema":{"type":"string","title":"Candidate Id"}},{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID from Clerk","title":"User Id"},"description":"User ID from Clerk"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateNoteCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateNote"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/pipeline/columns":{"get":{"tags":["Candidates"],"summary":"Get pipeline columns for Kanban view","description":"Get pipeline data structured for Kanban board display.","operationId":"get_pipeline_columns_v1_candidates_pipeline_columns_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID from Clerk","title":"User Id"},"description":"User ID from Clerk"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PipelineResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/stats":{"get":{"tags":["Candidates"],"summary":"Get candidate statistics and counts","description":"Get candidate statistics and counts by stage for the user's company.\nThis endpoint returns accurate counts without loading all candidate data.","operationId":"get_candidate_stats_v1_candidates_stats_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID from Clerk","title":"User Id"},"description":"User ID from Clerk"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/by-company/{company_id}/stats":{"get":{"tags":["Candidates"],"summary":"Get candidate statistics for specific company","description":"Get candidate statistics and counts by stage for a specific company.\nThis endpoint returns accurate counts without loading all candidate data.","operationId":"get_company_candidate_stats_v1_candidates_by_company__company_id__stats_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"company_id","in":"path","required":true,"schema":{"type":"string","title":"Company Id"}},{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID from Clerk","title":"User Id"},"description":"User ID from Clerk"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/export-to-s3":{"post":{"tags":["Candidates"],"summary":"Export candidates to S3 and optionally email download link","description":"Export all candidates to CSV, store in S3, and optionally send download link via email.\n\nThis endpoint:\n1. Fetches all candidates for the company\n2. Generates a CSV file with full candidate data and metadata (all stages included)\n3. Uploads the CSV to S3\n4. Generates a presigned download URL (expires in 7 days)\n5. Optionally sends the download link to specified email addresses via Loops.so\n\nArgs:\n    user_id: User ID from Clerk authentication\n    export_request: Optional request body with email recipients\n\nReturns:\n    CandidateExportResponse with download URL, S3 key, and email status","operationId":"export_candidates_to_s3_v1_candidates_export_to_s3_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID from Clerk","title":"User Id"},"description":"User ID from Clerk"}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CandidateExportRequest"},{"type":"null"}],"title":"Export Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateExportResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/chat/message":{"post":{"tags":["Chat"],"summary":"Chat Message","description":"Proxy endpoint for Claude chat messages with tool support.\n\nThis endpoint forwards chat requests to the Claude API and returns responses\nwith optional tool use actions that the frontend can execute.\n\nArgs:\n    request: ChatMessageRequest containing messages, context, system prompt, and tools\n    user_id: User ID from Clerk (passed as query parameter)\n    token: Bearer token for authentication (from Authorization header)\n\nReturns:\n    ChatMessageResponse with text content and any tool use actions\n\nRaises:\n    HTTPException: For authentication, authorization, or API errors","operationId":"chat_message_v1_chat_message_post","security":[{"HTTPBearer":[]},{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID from Clerk","title":"User Id"},"description":"User ID from Clerk"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatMessageRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatMessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/settings/company":{"get":{"tags":["Settings"],"summary":"Get company settings","description":"Get company settings for the specified company.\n\nReturns configuration settings for the company including hiring process stages,\nnotification preferences, branding, and other customizations.","operationId":"get_company_settings_v1_settings_company_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"company_id","in":"query","required":true,"schema":{"type":"string","description":"Company ID","title":"Company Id"},"description":"Company ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanySettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Settings"],"summary":"Update company settings","description":"Update company settings.\n\nUpdates configuration settings for the specified company.","operationId":"update_company_settings_v1_settings_company_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"company_id","in":"query","required":true,"schema":{"type":"string","description":"Company ID","title":"Company Id"},"description":"Company ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanySettingsUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanySettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/settings/user":{"get":{"tags":["Settings"],"summary":"Get user settings","description":"Get user-specific settings and preferences.\n\nReturns personalization settings for the user including notification preferences,\ndashboard layout, theme, and other user-specific configurations.","operationId":"get_user_settings_v1_settings_user_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID from Clerk","title":"User Id"},"description":"User ID from Clerk"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Settings"],"summary":"Update user settings","description":"Update user-specific settings and preferences.\n\nUpdates personalization settings for the current user.","operationId":"update_user_settings_v1_settings_user_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID from Clerk","title":"User Id"},"description":"User ID from Clerk"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSettingsUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/analytics/dashboard":{"get":{"tags":["Analytics"],"summary":"Get dashboard analytics","description":"Get comprehensive dashboard analytics for the company.\n\nReturns metrics including pipeline statistics, time-based metrics,\nsource effectiveness, job performance, and team statistics.","operationId":"get_dashboard_analytics_v1_analytics_dashboard_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID from Clerk","title":"User Id"},"description":"User ID from Clerk"},{"name":"period","in":"query","required":false,"schema":{"type":"string","description":"Time period (7d, 30d, 90d, 1y)","default":"30d","title":"Period"},"description":"Time period (7d, 30d, 90d, 1y)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/invites":{"post":{"tags":["invitations"],"summary":"Create Invitation","description":"Create a new invitation","operationId":"create_invitation_v1_invites_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvitationCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvitationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["invitations"],"summary":"List Invitations","description":"List invitations for a company","operationId":"list_invitations_v1_invites_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"company_id","in":"query","required":true,"schema":{"type":"string","description":"Company ID filter","title":"Company Id"},"description":"Company ID filter"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Status filter","title":"Status"},"description":"Status filter"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Items per page","default":20,"title":"Limit"},"description":"Items per page"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvitationListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/invites/{token}":{"get":{"tags":["invitations"],"summary":"Validate Invitation","description":"Validate an invitation token","operationId":"validate_invitation_v1_invites__token__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","description":"Invitation token","title":"Token"},"description":"Invitation token"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvitationValidation"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/invites/{invitation_id}":{"delete":{"tags":["invitations"],"summary":"Revoke Invitation","description":"Revoke an invitation","operationId":"revoke_invitation_v1_invites__invitation_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"invitation_id","in":"path","required":true,"schema":{"type":"string","description":"Invitation ID","title":"Invitation Id"},"description":"Invitation ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/invites/{invitation_id}/resend":{"put":{"tags":["invitations"],"summary":"Resend Invitation","description":"Resend an invitation email","operationId":"resend_invitation_v1_invites__invitation_id__resend_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"invitation_id","in":"path","required":true,"schema":{"type":"string","description":"Invitation ID","title":"Invitation Id"},"description":"Invitation ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/invites/{invitation_id}/fix-status":{"put":{"tags":["invitations"],"summary":"Fix Invitation Status","description":"Fix invitation status - debug endpoint to manually mark invitation as accepted","operationId":"fix_invitation_status_v1_invites__invitation_id__fix_status_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"invitation_id","in":"path","required":true,"schema":{"type":"string","description":"Invitation ID","title":"Invitation Id"},"description":"Invitation ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/referrals":{"get":{"tags":["referrals"],"summary":"List Referrals","description":"List referrals for the user's company","operationId":"list_referrals_v1_referrals_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID from Clerk","title":"User Id"},"description":"User ID from Clerk"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by status","title":"Status"},"description":"Filter by status"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Items per page","default":20,"title":"Limit"},"description":"Items per page"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReferralListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["referrals"],"summary":"Create Referral","description":"Create a new referral","operationId":"create_referral_v1_referrals_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID from Clerk","title":"User Id"},"description":"User ID from Clerk"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReferralCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReferralResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/referrals/{referral_id}":{"delete":{"tags":["referrals"],"summary":"Revoke Referral","description":"Revoke a referral","operationId":"revoke_referral_v1_referrals__referral_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"referral_id","in":"path","required":true,"schema":{"type":"string","description":"Referral ID","title":"Referral Id"},"description":"Referral ID"},{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID from Clerk","title":"User Id"},"description":"User ID from Clerk"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/referrals/{referral_id}/resend":{"put":{"tags":["referrals"],"summary":"Resend Referral","description":"Resend a referral email","operationId":"resend_referral_v1_referrals__referral_id__resend_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"referral_id","in":"path","required":true,"schema":{"type":"string","description":"Referral ID","title":"Referral Id"},"description":"Referral ID"},{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID from Clerk","title":"User Id"},"description":"User ID from Clerk"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/referrals/token/{referral_token}":{"get":{"tags":["referrals"],"summary":"Get Referral By Token Endpoint","description":"Get referral information by token (for signup page)","operationId":"get_referral_by_token_endpoint_v1_referrals_token__referral_token__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"referral_token","in":"path","required":true,"schema":{"type":"string","description":"Referral token (referral ID)","title":"Referral Token"},"description":"Referral token (referral ID)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/referrals/{referral_id}/test-accept":{"post":{"tags":["referrals"],"summary":"Test Accept Referral","description":"Test endpoint to manually accept a referral","operationId":"test_accept_referral_v1_referrals__referral_id__test_accept_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"referral_id","in":"path","required":true,"schema":{"type":"string","description":"Referral ID to accept","title":"Referral Id"},"description":"Referral ID to accept"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/referrals/{referral_id}/complete-signup":{"post":{"tags":["referrals"],"summary":"Complete Signup Via Referral","description":"Mark referral as accepted when user completes signup via referral link","operationId":"complete_signup_via_referral_v1_referrals__referral_id__complete_signup_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"referral_id","in":"path","required":true,"schema":{"type":"string","description":"Referral ID","title":"Referral Id"},"description":"Referral ID"},{"name":"user_email","in":"query","required":true,"schema":{"type":"string","description":"Email of user who completed signup","title":"User Email"},"description":"Email of user who completed signup"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/onboarding-status":{"get":{"tags":["authentication","onboarding"],"summary":"Get Simple Onboarding Status","description":"Get simple onboarding status for trial company flow.\n\nReturns:\n- has_company: boolean indicating if user has a company\n- available_companies: array of companies user can join\n- user_id: the user's ID","operationId":"get_simple_onboarding_status_v1_auth_onboarding_status_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID from Clerk","title":"User Id"},"description":"User ID from Clerk"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/claim-invite":{"post":{"tags":["authentication","onboarding"],"summary":"Claim Invitation","description":"Claim an invitation during user signup","operationId":"claim_invitation_v1_auth_claim_invite_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaimInviteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaimInviteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/auth/users/{user_id}/onboarding-status":{"get":{"tags":["authentication","onboarding"],"summary":"Get Onboarding Status","description":"Get user onboarding status","operationId":"get_onboarding_status_v1_auth_users__user_id__onboarding_status_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","description":"User ID","title":"User Id"},"description":"User ID"},{"name":"requesting_user_id","in":"query","required":true,"schema":{"type":"string","description":"ID of user making request","title":"Requesting User Id"},"description":"ID of user making request"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OnboardingStatus"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/users/{user_id}/complete-onboarding":{"post":{"tags":["authentication","onboarding"],"summary":"Complete Onboarding","description":"Complete user onboarding","operationId":"complete_onboarding_v1_auth_users__user_id__complete_onboarding_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","description":"User ID","title":"User Id"},"description":"User ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompleteOnboardingRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompleteOnboardingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/request-access":{"post":{"tags":["authentication","onboarding"],"summary":"Request Company Access","description":"Request access to a company","operationId":"request_company_access_v1_auth_request_access_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID","title":"User Id"},"description":"User ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessRequestCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessRequestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/company-discovery/search":{"get":{"tags":["company-discovery"],"summary":"Search Companies","description":"Search for companies that users can discover and join","operationId":"search_companies_v1_company_discovery_search_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"domain","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Email domain to search","title":"Domain"},"description":"Email domain to search"},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Company name to search","title":"Name"},"description":"Company name to search"},{"name":"allow_join","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Filter companies that allow joining","title":"Allow Join"},"description":"Filter companies that allow joining"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/company-discovery/{company_id}/access-requests":{"get":{"tags":["company-discovery"],"summary":"List Company Access Requests","description":"List access requests for a company (admin only)","operationId":"list_company_access_requests_v1_company_discovery__company_id__access_requests_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"company_id","in":"path","required":true,"schema":{"type":"string","description":"Company ID","title":"Company Id"},"description":"Company ID"},{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID making the request","title":"User Id"},"description":"User ID making the request"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by status","title":"Status"},"description":"Filter by status"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessRequestListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/company-discovery/access-requests/{request_id}/review":{"put":{"tags":["company-discovery"],"summary":"Review Access Request","description":"Review (approve/reject) an access request","operationId":"review_access_request_v1_company_discovery_access_requests__request_id__review_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"string","description":"Access request ID","title":"Request Id"},"description":"Access request ID"},{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID of reviewer","title":"User Id"},"description":"User ID of reviewer"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessRequestReview"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessRequestReviewResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/company-discovery/{company_id}/settings":{"get":{"tags":["company-discovery"],"summary":"Get Company Join Settings","description":"Get company settings related to joining and invitations","operationId":"get_company_join_settings_v1_company_discovery__company_id__settings_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"company_id","in":"path","required":true,"schema":{"type":"string","description":"Company ID","title":"Company Id"},"description":"Company ID"},{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID making the request","title":"User Id"},"description":"User ID making the request"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["company-discovery"],"summary":"Update Company Join Settings","description":"Update company settings related to joining and invitations","operationId":"update_company_join_settings_v1_company_discovery__company_id__settings_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"company_id","in":"path","required":true,"schema":{"type":"string","description":"Company ID","title":"Company Id"},"description":"Company ID"},{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"User ID making the request","title":"User Id"},"description":"User ID making the request"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Settings"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/users":{"get":{"tags":["Users"],"summary":"Get Users","description":"Retrieve users with optional email filtering.\n\n    When no email is provided, returns a list of all users.\n    When email is provided, returns a single user if found, or an empty list if no match.","operationId":"get_users_v1_users_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"email","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter users by email address","title":"Email"},"description":"Filter users by email address"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/UsersResponse"},{"$ref":"#/components/schemas/UserResponse"}],"title":"Response Get Users V1 Users Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Users"],"summary":"Create User","description":"Create a new user with the provided details.","operationId":"create_user_v1_users_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreate","description":"User details"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"409":{"description":"User with this email already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/users/{user_id}":{"get":{"tags":["Users"],"summary":"Get User","operationId":"get_user_v1_users__user_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Users"],"summary":"Update User","description":"Update user details by ID. Can update name, email, and role.","operationId":"update_user_v1_users__user_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","description":"ID of the user to update","title":"User Id"},"description":"ID of the user to update"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Updated user details","title":"User Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"404":{"description":"User not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"User with this email already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Users"],"summary":"Patch User","description":"Partially update user details by ID. Allows updating any user field.","operationId":"patch_user_v1_users__user_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","description":"ID of the user to update","title":"User Id"},"description":"ID of the user to update"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserUpdate","description":"Fields to update"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"404":{"description":"User not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"User with this email already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Invalid input or no valid fields to update","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/users/{user_id}/stats":{"get":{"tags":["Users"],"summary":"Get User Stats","operationId":"get_user_stats_v1_users__user_id__stats_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserStatsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/users/stats":{"post":{"tags":["Users"],"summary":"Update User Stats","operationId":"update_user_stats_v1_users_stats_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserStatsUpdateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserStatsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/email/validate":{"post":{"tags":["Email Validation"],"summary":"Validate Email Address","description":"Validate an email address using the Usebouncer API service.\n\n    This endpoint checks the deliverability, validity, and other properties\n    of an email address including:\n    - Email deliverability status (deliverable, undeliverable, unknown)\n    - Domain information (disposable, free provider, accepts all)\n    - Account information (role-based, disabled, full mailbox)\n    - DNS records and validation score\n\n    The validation service may suggest corrections for invalid email addresses.","operationId":"validate_email_v1_email_validate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailValidationRequest","description":"Email to validate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailValidationResponseWrapper"}}}},"408":{"description":"Request timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Email validation service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Missing email field","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/applications":{"get":{"tags":["Applications"],"summary":"List Job Applications","description":"Retrieve a list of job applications with optional filtering and pagination.\n\n    Query Parameters:\n    - status: Filter by application status\n    - user_email: Filter by user's email address\n    - limit: Maximum number of applications to return\n    - next_token: Token for pagination to get the next set of results","operationId":"get_applications_v1_applications_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by status","title":"Status"},"description":"Filter by status"},{"name":"user_email","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by user's email address","title":"User Email"},"description":"Filter by user's email address"},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum number of applications to return","default":10,"title":"Limit"},"description":"Maximum number of applications to return"},{"name":"next_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pagination token for getting the next set of results","title":"Next Token"},"description":"Pagination token for getting the next set of results"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Applications"],"summary":"Create Job Application","description":"Create a new job application with the provided details.","operationId":"create_application_v1_applications_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationCreate","description":"Application details"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/applications/{app_id}":{"get":{"tags":["Applications"],"summary":"Get Job Application","description":"Retrieve details of a specific job application by its ID.","operationId":"get_application_v1_applications__app_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","description":"ID of the application to retrieve","title":"App Id"},"description":"ID of the application to retrieve"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Applications"],"summary":"Update Job Application","description":"Update an existing job application with new details.\n\n    The update can include:\n    - Basic application details (company, position, etc.)\n    - Status changes (which will be recorded in status history)\n    - Interview information\n    - Tags and other metadata","operationId":"update_application_v1_applications__app_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","description":"ID of the application to update","title":"App Id"},"description":"ID of the application to update"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationUpdate","description":"Updated application details"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Applications"],"summary":"Delete Job Application","description":"Delete a specific job application by its ID.","operationId":"delete_application_v1_applications__app_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","description":"ID of the application to delete","title":"App Id"},"description":"ID of the application to delete"}],"responses":{"200":{"description":"Application successfully deleted","content":{"application/json":{"schema":{},"example":{"message":"Application deleted successfully"}}}},"404":{"description":"Application not found","content":{"application/json":{"example":{"error":"Application not found"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/applications/{app_id}/send-reminder-email":{"post":{"tags":["Applications"],"summary":"Send Reminder Email to Candidate","description":"Send a reminder email to a candidate for their job application.\n    \n    This endpoint sends a reminder email using the Loops transactional email template\n    with the same data variables as the interview invitation emails.\n    \n    Required request body fields:\n    - user_email: Candidate's email address\n    - job_id: ID of the job the application is for\n    - application_id: ID of the application (should match the app_id in the URL)\n    \n    Optional fields for email personalization:\n    - position: Job title\n    - first_name: Candidate's first name\n    - company_shortname: Company identifier","operationId":"send_application_reminder_email_v1_applications__app_id__send_reminder_email_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","description":"ID of the application to send reminder for","title":"App Id"},"description":"ID of the application to send reminder for"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Email reminder data including user_email, job_id, and application_id","title":"Reminder Data"}}}},"responses":{"200":{"description":"Reminder email sent successfully","content":{"application/json":{"schema":{},"example":{"message":"Reminder email sent successfully","email":"candidate@example.com","transactional_id":"cmercwzon05knv10iuhj1ak5w"}}}},"400":{"description":"Missing required fields","content":{"application/json":{"example":{"error":"user_email is required"}}}},"500":{"description":"Failed to send email","content":{"application/json":{"example":{"error":"LOOPS_API_KEY not configured"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/files/download":{"get":{"tags":["File Management"],"summary":"Get File Download URL","description":"Generate a presigned URL for downloading a file from S3 using its s3_key and optionally a specific bucket_name.","operationId":"get_file_download_url_v1_files_download_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"s3_key","in":"query","required":true,"schema":{"type":"string","description":"S3 key of the file to download","title":"S3 Key"},"description":"S3 key of the file to download"},{"name":"bucket_name","in":"query","required":false,"schema":{"type":"string","description":"Optional bucket name. If not provided, default bucket will be used","title":"Bucket Name"},"description":"Optional bucket name. If not provided, default bucket will be used"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileDownloadUrlResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/files/upload/{user_id}":{"post":{"tags":["File Management"],"summary":"Initiate Upload","description":"Initiate a file upload by generating a presigned URL","operationId":"initiate_upload_v1_files_upload__user_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","description":"User ID","title":"User Id"},"description":"User ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_initiate_upload_v1_files_upload__user_id__post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileUploadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/files/upload/{user_id}/complete":{"post":{"tags":["File Management"],"summary":"Complete Upload","description":"Complete the file upload by storing metadata","operationId":"complete_upload_v1_files_upload__user_id__complete_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileUploadCompletionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/files/lists/{user_id}":{"post":{"tags":["File Management"],"summary":"Create List","description":"Create a new list","operationId":"create_list_v1_files_lists__user_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateListRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["File Management"],"summary":"Get User Lists","description":"Get all lists for a user with file metadata","operationId":"get_user_lists_v1_files_lists__user_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FileListWithMetadata"},"title":"Response Get User Lists V1 Files Lists  User Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/files/lists/{user_id}/{list_id}":{"delete":{"tags":["File Management"],"summary":"Delete List","description":"Delete a list","operationId":"delete_list_v1_files_lists__user_id___list_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"list_id","in":"path","required":true,"schema":{"type":"string","title":"List Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/files/lists/{user_id}/add-file":{"post":{"tags":["File Management"],"summary":"Add File To List","description":"Add a file to a list","operationId":"add_file_to_list_v1_files_lists__user_id__add_file_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddFileToListRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/files/lists/{user_id}/remove-file":{"post":{"tags":["File Management"],"summary":"Remove File From List","description":"Remove a file from a list","operationId":"remove_file_from_list_v1_files_lists__user_id__remove_file_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveFileFromListRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/files/{user_id}":{"get":{"tags":["File Management"],"summary":"Get User Files","description":"Get all files for a user","operationId":"get_user_files_v1_files__user_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FileMetadata"},"title":"Response Get User Files V1 Files  User Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/files/{user_id}/{file_id}":{"delete":{"tags":["File Management"],"summary":"Delete User File","description":"Delete a file","operationId":"delete_user_file_v1_files__user_id___file_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/files/lists/{user_id}/{list_id}/files":{"get":{"tags":["File Management"],"summary":"Get List Files","description":"Get all files in a specific list","operationId":"get_list_files_v1_files_lists__user_id___list_id__files_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"list_id","in":"path","required":true,"schema":{"type":"string","title":"List Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FileMetadata"},"title":"Response Get List Files V1 Files Lists  User Id   List Id  Files Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/files/multipart/{user_id}/initiate":{"post":{"tags":["File Management"],"summary":"Initiate Multipart Upload Endpoint","description":"Initiate a multipart upload","operationId":"initiate_multipart_upload_endpoint_v1_files_multipart__user_id__initiate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MultipartUploadInitRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MultipartUploadInitResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/files/multipart/{user_id}/presigned-urls":{"get":{"tags":["File Management"],"summary":"Get Multipart Presigned Urls","description":"Get presigned URLs for each part of a multipart upload","operationId":"get_multipart_presigned_urls_v1_files_multipart__user_id__presigned_urls_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"file_id","in":"query","required":true,"schema":{"type":"string","description":"File ID","title":"File Id"},"description":"File ID"},{"name":"upload_id","in":"query","required":true,"schema":{"type":"string","description":"Upload ID","title":"Upload Id"},"description":"Upload ID"},{"name":"part_count","in":"query","required":true,"schema":{"type":"integer","maximum":10000,"exclusiveMinimum":0,"description":"Number of parts","title":"Part Count"},"description":"Number of parts"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PresignedUrlPart"},"title":"Response Get Multipart Presigned Urls V1 Files Multipart  User Id  Presigned Urls Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/files/multipart/{user_id}/complete":{"post":{"tags":["File Management"],"summary":"Complete Multipart Upload Endpoint","description":"Complete a multipart upload","operationId":"complete_multipart_upload_endpoint_v1_files_multipart__user_id__complete_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MultipartUploadCompleteRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/files/multipart/{user_id}/abort":{"post":{"tags":["File Management"],"summary":"Abort Multipart Upload Endpoint","description":"Abort a multipart upload","operationId":"abort_multipart_upload_endpoint_v1_files_multipart__user_id__abort_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MultipartUploadAbortRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/files/resumes/{email}/view":{"get":{"summary":"Get Resume Pdf View","description":"Get resume PDF content for inline viewing (not download)\n\nThis endpoint serves PDF files with proper headers for browser display:\n- Content-Type: application/pdf  \n- Content-Disposition: inline (not attachment)\n- Cache-Control: private, max-age=3600\n\nSupports authentication via:\n1. Authorization header: Authorization: Bearer TOKEN\n2. Query parameter: ?token=TOKEN (for iframe compatibility)\n\nPerfect for iframe embedding:\n<iframe src=\"/v1/files/resumes/john@example.com/view?token=YOUR_TOKEN\" />","operationId":"get_resume_pdf_view_v1_files_resumes__email__view_get","parameters":[{"name":"email","in":"path","required":true,"schema":{"type":"string","description":"Email address to get resume for","title":"Email"},"description":"Email address to get resume for"},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional user ID for multi-tenant access","title":"User Id"},"description":"Optional user ID for multi-tenant access"},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API token for iframe compatibility","title":"Token"},"description":"API token for iframe compatibility"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/files/{user_id}/{file_id}/view":{"get":{"tags":["File Management"],"summary":"Get File View Url","description":"Get a presigned URL for viewing a file","operationId":"get_file_view_url_v1_files__user_id___file_id__view_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileViewUrlResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/files/single-upload":{"post":{"tags":["File Management"],"summary":"Simple file upload with auto-analysis","description":"Upload a file to S3 storage with optional bucket specification. PDF/DOC files are automatically analyzed to detect and parse resumes using AI.","operationId":"upload_file_v1_files_single_upload_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_file_v1_files_single_upload_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimpleFileUploadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/files/trigger-resume-analysis":{"post":{"tags":["File Management"],"summary":"Manually trigger resume analysis","description":"Manually trigger resume analysis for a specific email address. Use force=true to reprocess even if already analyzed or previously failed. Optionally provide s3_key to bypass email-based lookup.","operationId":"trigger_resume_analysis_v1_files_trigger_resume_analysis_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_trigger_resume_analysis_v1_files_trigger_resume_analysis_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/files/resumes/{email}":{"get":{"tags":["File Management"],"summary":"List Resumes by Email","description":"List all resumes that have been uploaded for a specific email address, sorted by upload date (newest first).","operationId":"list_resumes_by_email_v1_files_resumes__email__get","parameters":[{"name":"email","in":"path","required":true,"schema":{"type":"string","description":"Email address to list resumes for","format":"email","title":"Email"},"description":"Email address to list resumes for"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResumeListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/files/resumes/{email}/latest":{"get":{"tags":["File Management"],"summary":"Get Latest Resume Data","description":"Get the parsed data from the most recently uploaded resume for a specific email address. Returns the default/latest resume to be used by the user.","operationId":"get_latest_resume_data_v1_files_resumes__email__latest_get","parameters":[{"name":"email","in":"path","required":true,"schema":{"type":"string","description":"Email address to get latest resume for","format":"email","title":"Email"},"description":"Email address to get latest resume for"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Latest Resume Data V1 Files Resumes  Email  Latest Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/files/resumes/{email}/{identifier}":{"get":{"tags":["File Management"],"summary":"Get Specific Resume Data","description":"Get the parsed data from a specific resume by email and identifier (filename or part of filename).","operationId":"get_specific_resume_data_v1_files_resumes__email___identifier__get","parameters":[{"name":"email","in":"path","required":true,"schema":{"type":"string","description":"Email address to look up","format":"email","title":"Email"},"description":"Email address to look up"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string","description":"Resume identifier (filename, part of filename, or S3 key suffix)","title":"Identifier"},"description":"Resume identifier (filename, part of filename, or S3 key suffix)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Specific Resume Data V1 Files Resumes  Email   Identifier  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/files/resume-evaluation-status":{"put":{"tags":["File Management"],"summary":"Update Resume Evaluation Status","description":"Update the evaluation status of a resume by checking the Step Functions execution results.","operationId":"update_resume_status_v1_files_resume_evaluation_status_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"email","in":"query","required":true,"schema":{"type":"string","description":"Email address of the candidate","title":"Email"},"description":"Email address of the candidate"},{"name":"s3_key","in":"query","required":true,"schema":{"type":"string","description":"S3 key of the resume file","title":"S3 Key"},"description":"S3 key of the resume file"},{"name":"execution_arn","in":"query","required":true,"schema":{"type":"string","description":"Step Functions execution ARN","title":"Execution Arn"},"description":"Step Functions execution ARN"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/evaluations/start":{"post":{"tags":["Evaluations"],"summary":"Start Evaluation Pipeline","description":"Start a new evaluation pipeline execution with candidates and job requirements.","operationId":"start_evaluation_pipeline_v1_evaluations_start_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartEvaluationRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartEvaluationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/evaluations/executions":{"get":{"tags":["Evaluations"],"summary":"List Evaluation Executions","description":"List recent evaluation pipeline executions with optional status filtering.","operationId":"list_evaluation_executions_v1_evaluations_executions_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by execution status (RUNNING, SUCCEEDED, FAILED, etc.)","title":"Status"},"description":"Filter by execution status (RUNNING, SUCCEEDED, FAILED, etc.)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"description":"Maximum number of executions to return","default":10,"title":"Limit"},"description":"Maximum number of executions to return"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecutionListResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/evaluations/emails":{"get":{"tags":["Evaluations"],"summary":"List Processed Emails","description":"Get a simple list of all candidate emails that have been processed through the evaluation pipeline.","operationId":"list_processed_emails_v1_evaluations_emails_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of executions to check","default":50,"title":"Limit"},"description":"Maximum number of executions to check"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/evaluations/executions/results":{"get":{"tags":["Evaluations"],"summary":"Get Execution Results","description":"Get detailed results from a Step Functions execution. Query by execution ARN, name, or email.","operationId":"get_execution_results_v1_evaluations_executions_results_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"execution_arn","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Full execution ARN","title":"Execution Arn"},"description":"Full execution ARN"},{"name":"execution_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Execution name (without ARN prefix)","title":"Execution Name"},"description":"Execution name (without ARN prefix)"},{"name":"email","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Email address to search for in execution inputs","title":"Email"},"description":"Email address to search for in execution inputs"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ExecutionResult"},{"$ref":"#/components/schemas/ExecutionSearchResult"},{"$ref":"#/components/schemas/RecentExecutionsResult"}],"title":"Response Get Execution Results V1 Evaluations Executions Results Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health":{"get":{"tags":["Health"],"summary":"Health Check","description":"Enhanced health check endpoint with status, timestamp, version, and environment","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health2":{"get":{"tags":["Health"],"summary":"Health Check 2","description":"Secondary health check endpoint with additional system information","operationId":"health_check_2_health2_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/system/status":{"get":{"tags":["Health"],"summary":"System Status","description":"Get system configuration status for debugging","operationId":"system_status_v1_system_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}}},"components":{"schemas":{"AccessRequestCreate":{"properties":{"company_id":{"type":"string","title":"Company Id","description":"ID of the company to request access to"},"message":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Message","description":"Optional message explaining the request"}},"type":"object","required":["company_id"],"title":"AccessRequestCreate","description":"Access request creation model"},"AccessRequestListItem":{"properties":{"id":{"type":"string","title":"Id","description":"Request ID"},"user_email":{"type":"string","title":"User Email","description":"Email of requesting user"},"user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Name","description":"Name of requesting user"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message","description":"Request message"},"status":{"type":"string","title":"Status","description":"Current status"},"requested_at":{"type":"string","title":"Requested At","description":"ISO timestamp of request"},"reviewed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reviewed At","description":"ISO timestamp of review"},"reviewed_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reviewed By","description":"Name of reviewer"}},"type":"object","required":["id","user_email","status","requested_at"],"title":"AccessRequestListItem","description":"Access request list item"},"AccessRequestListResponse":{"properties":{"requests":{"items":{"$ref":"#/components/schemas/AccessRequestListItem"},"type":"array","title":"Requests","description":"List of access requests"},"total":{"type":"integer","title":"Total","description":"Total number of requests"}},"type":"object","required":["requests","total"],"title":"AccessRequestListResponse","description":"List access requests response"},"AccessRequestResponse":{"properties":{"request_id":{"type":"string","title":"Request Id","description":"ID of the created request"},"status":{"type":"string","title":"Status","description":"Status of the request"},"requires_admin_approval":{"type":"boolean","title":"Requires Admin Approval","description":"Whether admin approval is required","default":true},"company_name":{"type":"string","title":"Company Name","description":"Name of the company requested"}},"type":"object","required":["request_id","status","company_name"],"title":"AccessRequestResponse","description":"Response when creating an access request"},"AccessRequestReview":{"properties":{"status":{"type":"string","title":"Status","description":"New status (approved or rejected)"},"reviewer_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reviewer Notes","description":"Optional notes from reviewer"}},"type":"object","required":["status"],"title":"AccessRequestReview","description":"Access request review model"},"AccessRequestReviewResponse":{"properties":{"success":{"type":"boolean","title":"Success","description":"Whether the review was successful"},"request_id":{"type":"string","title":"Request Id","description":"ID of the reviewed request"},"status":{"type":"string","title":"Status","description":"New status of the request"},"message":{"type":"string","title":"Message","description":"Success or error message"}},"type":"object","required":["success","request_id","status","message"],"title":"AccessRequestReviewResponse","description":"Response when reviewing an access request"},"AddFileToListRequest":{"properties":{"file_id":{"type":"string","title":"File Id"},"list_id":{"type":"string","title":"List Id"}},"type":"object","required":["file_id","list_id"],"title":"AddFileToListRequest","description":"Request model for adding a file to a list"},"ApplicationCreate":{"properties":{"job_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Id","description":"ID of the job being applied to"},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company","description":"Name of the company"},"position":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Position","description":"Job position/title"},"user_email":{"type":"string","format":"email","title":"User Email"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url"},"resume_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resume Id"},"resume_data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resume Data","description":"Parsed resume content as a single string"},"cover_letter":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cover Letter"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"skip_email":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Skip Email","description":"Skip sending invitation email","default":false}},"type":"object","title":"ApplicationCreate","description":"Model for creating a new application"},"ApplicationInDB":{"properties":{"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id","description":"ID of the user who owns this application"},"job_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Id","description":"ID of the job being applied to"},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company","description":"Name of the company"},"position":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Position","description":"Job position/title"},"status":{"$ref":"#/components/schemas/ApplicationStatus","description":"Current status of the application","default":"DRAFT"},"next_steps":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Steps","description":"Next steps in the application process"},"salary_range":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Salary Range","description":"Expected salary range"},"job_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Type","description":"Type of job (FULL_TIME, PART_TIME, CONTRACT)"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location","description":"Job location"},"remote_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Remote Type","description":"Remote work type (REMOTE, HYBRID, ONSITE)"},"application_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Application Url","description":"URL of the job application"},"company_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Url","description":"URL of the company website"},"recruiter_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recruiter Name","description":"Name of the recruiter"},"recruiter_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recruiter Email","description":"Email of the recruiter"},"priority":{"type":"string","title":"Priority","description":"Application priority (HIGH, MEDIUM, LOW)","default":"MEDIUM"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","description":"List of tags for the application"},"resume_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resume Id","description":"ID of the resume used"},"resume_data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resume Data","description":"Parsed resume content as a single string"},"cover_letter":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cover Letter","description":"Cover letter content"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes","description":"General notes about the application"},"id":{"type":"string","title":"Id","description":"Unique identifier for the application"},"entity_type":{"type":"string","title":"Entity Type","description":"Entity type, always APPLICATION","default":"APPLICATION"},"created_at":{"type":"string","title":"Created At","description":"Unix timestamp of creation"},"updated_at":{"type":"string","title":"Updated At","description":"Unix timestamp of last update"},"applied_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Applied At","description":"Unix timestamp of when the application was submitted"},"status_history":{"items":{"$ref":"#/components/schemas/StatusHistory"},"type":"array","title":"Status History","description":"History of status changes"},"interviews":{"items":{"$ref":"#/components/schemas/Interview"},"type":"array","title":"Interviews","description":"List of interviews"},"user_email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"User Email","description":"Email of the applicant"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name","description":"First name of the applicant"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name","description":"Last name of the applicant"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone","description":"Phone number of the applicant"},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url","description":"LinkedIn profile URL of the applicant"},"candidate_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Candidate Id","description":"ID of the associated candidate record"}},"type":"object","required":["id","created_at","updated_at"],"title":"ApplicationInDB","description":"Model for application as stored in database"},"ApplicationResponse":{"properties":{"application":{"$ref":"#/components/schemas/ApplicationInDB","description":"Application details"}},"type":"object","required":["application"],"title":"ApplicationResponse","description":"Response model for single application"},"ApplicationStatus":{"type":"string","enum":["DRAFT","APPLIED","SCREENING","INTERVIEW_SCHEDULED","INTERVIEWING","OFFER_RECEIVED","OFFER_ACCEPTED","OFFER_DECLINED","REJECTED","WITHDRAWN"],"title":"ApplicationStatus"},"ApplicationUpdate":{"properties":{"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company","description":"Name of the company"},"position":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Position","description":"Job position/title"},"status":{"anyOf":[{"$ref":"#/components/schemas/ApplicationStatus"},{"type":"null"}],"description":"Current status of the application"},"next_steps":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Steps","description":"Next steps in the application process"},"salary_range":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Salary Range","description":"Expected salary range"},"job_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Type","description":"Type of job"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location","description":"Job location"},"remote_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Remote Type","description":"Remote work type"},"application_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Application Url","description":"URL of the job application"},"company_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Url","description":"URL of the company website"},"recruiter_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recruiter Name","description":"Name of the recruiter"},"recruiter_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recruiter Email","description":"Email of the recruiter"},"priority":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Priority","description":"Application priority"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"List of tags"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes","description":"General notes"},"resume_data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resume Data","description":"Parsed resume content as a single string"},"status_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Notes","description":"Notes about status change"},"interview":{"anyOf":[{"$ref":"#/components/schemas/Interview"},{"type":"null"}],"description":"Interview information to add"},"user_email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"User Email","description":"Email of the applicant"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name","description":"First name of the applicant"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name","description":"Last name of the applicant"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone","description":"Phone number of the applicant"},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url","description":"LinkedIn profile URL of the applicant"}},"type":"object","title":"ApplicationUpdate","description":"Model for updating an existing application"},"ApplicationsListResponse":{"properties":{"applications":{"items":{"$ref":"#/components/schemas/ApplicationInDB"},"type":"array","title":"Applications","description":"List of applications"},"count":{"type":"integer","title":"Count","description":"Total number of applications"},"next_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Token","description":"Token for pagination to get the next set of results"}},"type":"object","required":["applications","count"],"title":"ApplicationsListResponse","description":"Response model for multiple applications"},"AssessmentMetric":{"properties":{"metric_id":{"type":"string","title":"Metric Id","description":"Unique identifier for the metric"},"name":{"type":"string","title":"Name","description":"Human-readable name of the metric"},"description":{"type":"string","title":"Description","description":"Detailed explanation of what this metric measures"},"sample_questions":{"items":{"type":"string"},"type":"array","title":"Sample Questions","description":"Example questions to guide AI in assessing this metric"},"weight":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Weight","description":"Importance weight for this metric"},"priority":{"type":"integer","minimum":0.0,"title":"Priority","description":"Display order priority (lower numbers appear first)","default":0},"evaluation_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Evaluation Prompt","description":"Generated evaluation prompt for this specific metric"}},"type":"object","required":["metric_id","name","description","sample_questions","weight"],"title":"AssessmentMetric","description":"Core assessment metric for evaluating candidates"},"AssessmentMetricCreate":{"properties":{"name":{"type":"string","title":"Name","description":"Human-readable name of the metric"},"description":{"type":"string","title":"Description","description":"Detailed explanation of what this metric measures"},"sample_questions":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Sample Questions","description":"Example questions to guide AI in assessing this metric"},"weight":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Weight","description":"Importance weight for this metric"},"priority":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Priority","description":"Display order priority (lower numbers appear first, auto-assigned if not provided)"}},"type":"object","required":["name","description","sample_questions","weight"],"title":"AssessmentMetricCreate","description":"Request model for creating a new assessment metric"},"AssessmentMetricResponse":{"properties":{"metric":{"$ref":"#/components/schemas/AssessmentMetric"}},"type":"object","required":["metric"],"title":"AssessmentMetricResponse","description":"Response model for a single assessment metric"},"AssessmentMetricUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Human-readable name of the metric"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Detailed explanation of what this metric measures"},"sample_questions":{"anyOf":[{"items":{"type":"string"},"type":"array","minItems":1},{"type":"null"}],"title":"Sample Questions","description":"Example questions to guide AI in assessing this metric"},"weight":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Weight","description":"Importance weight for this metric"},"priority":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Priority","description":"Display order priority (lower numbers appear first)"}},"type":"object","title":"AssessmentMetricUpdate","description":"Request model for updating an assessment metric"},"AssessmentMetricsBulkCreate":{"properties":{"metrics":{"items":{"$ref":"#/components/schemas/AssessmentMetricCreate"},"type":"array","maxItems":5,"minItems":1,"title":"Metrics","description":"List of metrics to create (max 5)"},"replace_existing":{"type":"boolean","title":"Replace Existing","description":"If true, delete all existing metrics before creating new ones. Use this to prevent duplicates when re-generating metrics.","default":false}},"type":"object","required":["metrics"],"title":"AssessmentMetricsBulkCreate","description":"Request model for creating multiple assessment metrics at once"},"AssessmentMetricsReorderRequest":{"properties":{"metrics":{"items":{"$ref":"#/components/schemas/MetricReorderItem"},"type":"array","maxItems":5,"minItems":1,"title":"Metrics","description":"List of metrics with new priority orders (max 5)"}},"type":"object","required":["metrics"],"title":"AssessmentMetricsReorderRequest","description":"Request model for reordering assessment metrics"},"AssessmentMetricsResponse":{"properties":{"metrics":{"items":{"$ref":"#/components/schemas/AssessmentMetric"},"type":"array","title":"Metrics"},"total_weight":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Total Weight","description":"Sum of all metric weights"},"count":{"type":"integer","title":"Count","description":"Total number of metrics"}},"type":"object","required":["metrics","total_weight","count"],"title":"AssessmentMetricsResponse","description":"Response model for multiple assessment metrics"},"AssessmentMetricsUpdateAndReorderRequest":{"properties":{"metrics":{"items":{"$ref":"#/components/schemas/MetricUpdateAndReorderItem"},"type":"array","maxItems":5,"minItems":1,"title":"Metrics","description":"List of metrics with updates and new priority orders (max 5)"}},"type":"object","required":["metrics"],"title":"AssessmentMetricsUpdateAndReorderRequest","description":"Request model for updating and reordering assessment metrics in one operation"},"AudioEvaluationResponse":{"properties":{"share_id":{"type":"string","title":"Share Id"},"practice_session_id":{"type":"string","title":"Practice Session Id"},"transcript":{"type":"string","title":"Transcript"},"evaluation":{"additionalProperties":true,"type":"object","title":"Evaluation"},"plain_text_transcript":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plain Text Transcript"},"created_at":{"type":"string","title":"Created At"},"updated_at":{"type":"string","title":"Updated At"},"status":{"type":"string","title":"Status"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"}},"type":"object","required":["share_id","practice_session_id","transcript","evaluation","created_at","updated_at","status"],"title":"AudioEvaluationResponse","description":"Response model for audio evaluation"},"BasicJobInformation":{"properties":{"job_title":{"type":"string","title":"Job Title","description":"Job title"},"department":{"type":"string","title":"Department","description":"Department or functional area"},"location":{"type":"string","title":"Location","description":"Job location"},"job_type":{"type":"string","title":"Job Type","description":"Employment type"},"experience_level":{"type":"string","title":"Experience Level","description":"Required experience level"},"work_type":{"type":"string","title":"Work Type","description":"Work arrangement type"}},"type":"object","required":["job_title","department","location","job_type","experience_level","work_type"],"title":"BasicJobInformation","description":"Basic job information model"},"Body_initiate_upload_v1_files_upload__user_id__post":{"properties":{"file_name":{"type":"string","title":"File Name"},"content_type":{"type":"string","title":"Content Type"},"list_id":{"type":"string","title":"List Id"}},"type":"object","required":["file_name","content_type"],"title":"Body_initiate_upload_v1_files_upload__user_id__post"},"Body_trigger_resume_analysis_v1_files_trigger_resume_analysis_post":{"properties":{"email":{"type":"string","title":"Email","description":"Email address to analyze resume for"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id","description":"Optional user ID for permission checking"},"force":{"type":"boolean","title":"Force","description":"Force reprocessing even if already analyzed or previously failed","default":false},"s3_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"S3 Key","description":"Optional S3 key to use directly (bypasses email-based lookup)"}},"type":"object","required":["email"],"title":"Body_trigger_resume_analysis_v1_files_trigger_resume_analysis_post"},"Body_upload_company_info_v1_companies__company_id__info_post":{"properties":{"files":{"anyOf":[{"items":{"type":"string","format":"binary"},"type":"array"},{"type":"null"}],"title":"Files"}},"type":"object","title":"Body_upload_company_info_v1_companies__company_id__info_post"},"Body_upload_company_logo_v1_companies__company_id__logo_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_company_logo_v1_companies__company_id__logo_post"},"Body_upload_file_v1_files_single_upload_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"},"email":{"type":"string","format":"email","title":"Email"},"bucket_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bucket Name"}},"type":"object","required":["file","email"],"title":"Body_upload_file_v1_files_single_upload_post"},"Body_upload_persona_avatar_v1_personas__persona_id__avatar_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_persona_avatar_v1_personas__persona_id__avatar_post"},"Body_upload_scenario_banner_v1_scenarios__scenario_id__banner_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_scenario_banner_v1_scenarios__scenario_id__banner_post"},"Candidate-Input":{"properties":{"source_type":{"type":"string","title":"Source Type","description":"Type of source: 'pdf', 'linkedin', or 'email'"},"source_data":{"type":"string","title":"Source Data","description":"Source data: file path, URL, or email address"},"candidate_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Candidate Id","description":"Optional unique identifier for the candidate"}},"type":"object","required":["source_type","source_data"],"title":"Candidate","description":"Individual candidate for evaluation"},"Candidate-Output":{"properties":{"candidate_id":{"type":"string","title":"Candidate Id","description":"Unique identifier for the candidate"},"job_id":{"type":"string","title":"Job Id","description":"Job ID this candidate applied to"},"email":{"type":"string","format":"email","title":"Email","description":"Candidate's email address"},"name":{"type":"string","title":"Name","description":"Candidate's full name"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone","description":"Candidate's phone number"},"stage":{"$ref":"#/components/schemas/CandidateStage","description":"Current pipeline stage","default":"new"},"entity_type":{"type":"string","const":"CANDIDATE","title":"Entity Type","description":"Entity type, always CANDIDATE","default":"CANDIDATE"},"created_at":{"type":"integer","title":"Created At","description":"Unix timestamp of when the candidate was created"},"updated_at":{"type":"integer","title":"Updated At","description":"Unix timestamp of when the candidate was last updated"},"resume_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resume Url","description":"URL to candidate's resume"},"cover_letter":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cover Letter","description":"Candidate's cover letter"},"mojo_score":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mojo Score","description":"AI-generated Mojo score (e.g., '3.2/5', '1.5/5')"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","description":"Tags assigned to candidate"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","description":"Source of the application"},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url","description":"Candidate's LinkedIn URL"},"portfolio_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Portfolio Url","description":"Candidate's portfolio URL"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location","description":"Candidate's location"},"experience_years":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Experience Years","description":"Years of experience"},"current_company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Company","description":"Current company"},"current_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Title","description":"Current job title"},"salary_expectation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Salary Expectation","description":"Salary expectation"},"availability":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Availability","description":"Availability (e.g., 'immediate', '2 weeks notice')"},"application_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Application Id","description":"ID of the associated application record"},"practice_session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Practice Session Id","description":"ID of the associated practice session"},"practice_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Practice Status","description":"Status of the associated practice session"},"share_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Share Id","description":"Share link ID associated with practice session"},"scenario_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scenario Id","description":"Scenario ID for the practice session"},"reviewed":{"type":"boolean","title":"Reviewed","description":"Whether the candidate has been reviewed","default":false}},"type":"object","required":["candidate_id","job_id","email","name","created_at","updated_at"],"title":"Candidate","description":"Base candidate model"},"CandidateExportRequest":{"properties":{"email_recipients":{"anyOf":[{"items":{"type":"string","format":"email"},"type":"array"},{"type":"null"}],"title":"Email Recipients","description":"Optional list of email addresses to send the download link"}},"type":"object","title":"CandidateExportRequest","description":"Candidate export request model"},"CandidateExportResponse":{"properties":{"download_url":{"type":"string","title":"Download Url","description":"S3 presigned URL to download the CSV file"},"s3_key":{"type":"string","title":"S3 Key","description":"S3 key where the file is stored"},"expires_in":{"type":"integer","title":"Expires In","description":"Seconds until the download URL expires"},"candidate_count":{"type":"integer","title":"Candidate Count","description":"Number of candidates in the export"},"email_sent":{"type":"boolean","title":"Email Sent","description":"Whether emails were sent successfully","default":false},"email_recipients":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Email Recipients","description":"Email addresses that were sent the download link"}},"type":"object","required":["download_url","s3_key","expires_in","candidate_count"],"title":"CandidateExportResponse","description":"Candidate export response model"},"CandidateNote":{"properties":{"note_id":{"type":"string","title":"Note Id","description":"Unique identifier for the note"},"candidate_id":{"type":"string","title":"Candidate Id","description":"Candidate ID this note belongs to"},"author_id":{"type":"string","title":"Author Id","description":"User ID who created the note"},"author_name":{"type":"string","title":"Author Name","description":"Name of the user who created the note"},"content":{"type":"string","title":"Content","description":"Note content"},"created_at":{"type":"integer","title":"Created At","description":"Unix timestamp of when the note was created"},"updated_at":{"type":"integer","title":"Updated At","description":"Unix timestamp of when the note was last updated"},"entity_type":{"type":"string","const":"CANDIDATE_NOTE","title":"Entity Type","description":"Entity type, always CANDIDATE_NOTE","default":"CANDIDATE_NOTE"}},"type":"object","required":["note_id","candidate_id","author_id","author_name","content","created_at","updated_at"],"title":"CandidateNote","description":"Candidate note model"},"CandidateNoteCreate":{"properties":{"content":{"type":"string","title":"Content","description":"Note content"}},"type":"object","required":["content"],"title":"CandidateNoteCreate","description":"Candidate note creation request model"},"CandidateResponse":{"properties":{"candidate":{"$ref":"#/components/schemas/Candidate-Output"},"notes":{"anyOf":[{"items":{"$ref":"#/components/schemas/CandidateNote"},"type":"array"},{"type":"null"}],"title":"Notes","description":"Candidate notes"}},"type":"object","required":["candidate"],"title":"CandidateResponse","description":"Single candidate response"},"CandidateStage":{"type":"string","enum":["new","ai_interview","manager_review","final","offer","hired","rejected"],"title":"CandidateStage","description":"Enum for candidate pipeline stages"},"CandidateStageUpdate":{"properties":{"stage":{"$ref":"#/components/schemas/CandidateStage","description":"New pipeline stage"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes","description":"Optional notes about the stage change"}},"type":"object","required":["stage"],"title":"CandidateStageUpdate","description":"Candidate stage update request model"},"CandidateStats":{"properties":{"total":{"type":"integer","title":"Total","description":"Total candidates"},"active":{"type":"integer","title":"Active","description":"Active (non-rejected) candidates"},"stages":{"additionalProperties":{"type":"integer"},"type":"object","title":"Stages","description":"Candidate counts by stage"}},"type":"object","required":["total","active","stages"],"title":"CandidateStats","description":"Candidate statistics model"},"CandidateUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Candidate's full name"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone","description":"Candidate's phone number"},"resume_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resume Url","description":"URL to candidate's resume"},"cover_letter":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cover Letter","description":"Candidate's cover letter"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"Tags assigned to candidate"},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url","description":"Candidate's LinkedIn URL"},"portfolio_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Portfolio Url","description":"Candidate's portfolio URL"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location","description":"Candidate's location"},"experience_years":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Experience Years","description":"Years of experience"},"current_company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Company","description":"Current company"},"current_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Title","description":"Current job title"},"salary_expectation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Salary Expectation","description":"Salary expectation"},"availability":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Availability","description":"Availability"},"share_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Share Id","description":"Share link ID associated with practice session"},"scenario_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scenario Id","description":"Scenario ID for the practice session"},"reviewed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Reviewed","description":"Whether the candidate has been reviewed"}},"type":"object","title":"CandidateUpdate","description":"Candidate update request model"},"CandidatesResponse":{"properties":{"candidates":{"items":{"$ref":"#/components/schemas/Candidate-Output"},"type":"array","title":"Candidates"},"count":{"type":"integer","title":"Count"},"next_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Token","description":"Pagination token"},"stats":{"anyOf":[{"$ref":"#/components/schemas/CandidateStats"},{"type":"null"}],"description":"Candidate statistics"}},"type":"object","required":["candidates","count"],"title":"CandidatesResponse","description":"Multiple candidates response"},"CareMojoScenarioData":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"category":{"type":"string","title":"Category"},"objectives":{"items":{"type":"string"},"type":"array","title":"Objectives","default":[]},"grading_criteria":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Grading Criteria"},"instructor_instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instructor Instructions"},"signals":{"items":{"type":"string"},"type":"array","title":"Signals","default":[]},"student_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Student Prompt"},"context_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context Text"},"estimated_duration":{"type":"integer","title":"Estimated Duration","default":10}},"type":"object","required":["id","title","category"],"title":"CareMojoScenarioData","description":"Scenario data from caremojo-admin (maps to InsForge patient_scenarios)"},"ChatAction":{"properties":{"type":{"type":"string","title":"Type","description":"Tool name/action type"},"params":{"additionalProperties":true,"type":"object","title":"Params","description":"Action parameters"},"toolUseId":{"type":"string","title":"Tooluseid","description":"Unique ID for this tool use"}},"type":"object","required":["type","params","toolUseId"],"title":"ChatAction","description":"Action generated by Claude through tool use"},"ChatContext":{"properties":{"page":{"type":"string","title":"Page","description":"Page context: 'job-studio', 'candidates', 'ai-interviewers', 'scenario-library', or 'unknown'"},"user":{"$ref":"#/components/schemas/UserContext","description":"User information"},"jobStudio":{"anyOf":[{"$ref":"#/components/schemas/JobStudioContext"},{"type":"null"}],"description":"Job studio context"}},"type":"object","required":["page","user"],"title":"ChatContext","description":"Context information for the chat"},"ChatMessage":{"properties":{"role":{"type":"string","title":"Role","description":"Message role: 'user' or 'assistant'"},"content":{"type":"string","title":"Content","description":"Message content"}},"type":"object","required":["role","content"],"title":"ChatMessage","description":"Single message in the conversation"},"ChatMessageRequest":{"properties":{"messages":{"items":{"$ref":"#/components/schemas/ChatMessage"},"type":"array","title":"Messages","description":"List of messages in the conversation"},"context":{"anyOf":[{"$ref":"#/components/schemas/ChatContext"},{"type":"null"}],"description":"Context information for the chat"},"system_prompt":{"type":"string","title":"System Prompt","description":"System prompt for Claude"},"tools":{"anyOf":[{"items":{"$ref":"#/components/schemas/ChatTool"},"type":"array"},{"type":"null"}],"title":"Tools","description":"Available tools for Claude to use"}},"type":"object","required":["messages","system_prompt"],"title":"ChatMessageRequest","description":"Request body for chat message endpoint"},"ChatMessageResponse":{"properties":{"text":{"type":"string","title":"Text","description":"Text response from Claude"},"actions":{"items":{"$ref":"#/components/schemas/ChatAction"},"type":"array","title":"Actions","description":"Tool use actions"}},"type":"object","required":["text"],"title":"ChatMessageResponse","description":"Response from the chat endpoint"},"ChatTool":{"properties":{"name":{"type":"string","title":"Name","description":"Tool name"},"description":{"type":"string","title":"Description","description":"Tool description"},"input_schema":{"$ref":"#/components/schemas/ToolInputSchema","description":"Tool input schema"}},"type":"object","required":["name","description","input_schema"],"title":"ChatTool","description":"Tool definition for Claude"},"ClaimInviteRequest":{"properties":{"invite_token":{"type":"string","title":"Invite Token","description":"Invitation token"},"clerk_user_id":{"type":"string","title":"Clerk User Id","description":"Clerk user ID from authentication"},"user_data":{"$ref":"#/components/schemas/UserSignupData","description":"User signup data"}},"type":"object","required":["invite_token","clerk_user_id","user_data"],"title":"ClaimInviteRequest","description":"Request to claim an invitation during signup"},"ClaimInviteResponse":{"properties":{"success":{"type":"boolean","title":"Success","description":"Whether the claim was successful"},"user":{"additionalProperties":true,"type":"object","title":"User","description":"User data"},"company":{"additionalProperties":true,"type":"object","title":"Company","description":"Company data"},"onboarding_complete":{"type":"boolean","title":"Onboarding Complete","description":"Whether onboarding is complete"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message","description":"Optional message"}},"type":"object","required":["success","user","company","onboarding_complete"],"title":"ClaimInviteResponse","description":"Response when claiming an invitation"},"CompaniesResponse":{"properties":{"companies":{"items":{"$ref":"#/components/schemas/Company-Output"},"type":"array","title":"Companies"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["companies","count"],"title":"CompaniesResponse","description":"Multiple companies response"},"Company-Input":{"properties":{"id":{"type":"string","title":"Id","description":"Company unique identifier"},"name":{"type":"string","title":"Name","description":"Company name"},"profile_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Url","description":"Company profile URL"},"profile_picture_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Picture Url","description":"Company logo URL"}},"type":"object","required":["id","name"],"title":"Company","description":"Company information for a job posting"},"Company-Output":{"properties":{"company_id":{"type":"string","title":"Company Id","description":"Unique identifier for the company"},"name":{"type":"string","title":"Name","description":"Company name"},"entity_type":{"type":"string","const":"COMPANY","title":"Entity Type","description":"Entity type, always COMPANY","default":"COMPANY"},"created_at":{"type":"integer","title":"Created At","description":"Unix timestamp of when the company was created"},"updated_at":{"type":"integer","title":"Updated At","description":"Unix timestamp of when the company was last updated"},"logo":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo","description":"Company logo URL"},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website","description":"Company website"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Company description"},"industry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry","description":"Company industry"},"size":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Size","description":"Company size (e.g., '1-10', '11-50', etc.)"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location","description":"Company headquarters location"},"allow_domain_signup":{"type":"boolean","title":"Allow Domain Signup","description":"Whether to allow users with matching email domain to signup","default":false},"require_admin_approval":{"type":"boolean","title":"Require Admin Approval","description":"Whether to require admin approval for new users","default":true},"default_user_role":{"type":"string","title":"Default User Role","description":"Default role for new users","default":"member"},"invite_expiry_days":{"type":"integer","title":"Invite Expiry Days","description":"Default expiry days for invitations","default":7},"company_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Domain","description":"Primary email domain for the company"},"company_type":{"type":"string","enum":["invited","trial"],"title":"Company Type","description":"Company type","default":"invited"},"logo_display_settings":{"anyOf":[{"$ref":"#/components/schemas/LogoDisplaySettings"},{"type":"null"}],"description":"Logo display metadata for frontend rendering"},"company_info":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Info","description":"Large text field for general company information (for AI interviews and chatbots)"},"info_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Info Text","description":"Plain text company information"},"info_s3_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Info S3 Url","description":"S3 URL to processed company info text file"},"info_status":{"anyOf":[{"type":"string","enum":["pending","processing","completed","failed"]},{"type":"null"}],"title":"Info Status","description":"Processing status of company info"},"info_files":{"anyOf":[{"items":{"$ref":"#/components/schemas/CompanyInfoFile"},"type":"array"},{"type":"null"}],"title":"Info Files","description":"List of uploaded info files"}},"type":"object","required":["company_id","name","created_at","updated_at"],"title":"Company","description":"Base company model"},"CompanyChoice":{"properties":{"type":{"type":"string","title":"Type","description":"Type of choice: create, join, or request"},"company_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Id","description":"Company ID if joining/requesting"},"company_data":{"anyOf":[{"$ref":"#/components/schemas/CompanyCreateData"},{"type":"null"}],"description":"Company data if creating"}},"type":"object","required":["type"],"title":"CompanyChoice","description":"Company choice during onboarding"},"CompanyCreate":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"Optional custom company ID. If not provided, a UUID will be generated"},"name":{"type":"string","title":"Name","description":"Company name"},"logo":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo","description":"Company logo URL"},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website","description":"Company website"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Company description"},"industry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry","description":"Company industry"},"size":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Size","description":"Company size"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location","description":"Company headquarters location"},"company_type":{"type":"string","enum":["invited","trial"],"title":"Company Type","description":"Company type","default":"invited"},"logo_display_settings":{"anyOf":[{"$ref":"#/components/schemas/LogoDisplaySettings"},{"type":"null"}],"description":"Logo display metadata for frontend rendering"}},"type":"object","required":["name"],"title":"CompanyCreate","description":"Company creation request model"},"CompanyCreateData":{"properties":{"name":{"type":"string","title":"Name","description":"Company name"},"industry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry","description":"Company industry"},"size":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Size","description":"Company size"},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website","description":"Company website"}},"type":"object","required":["name"],"title":"CompanyCreateData","description":"Company creation data during onboarding"},"CompanyInfoFile":{"properties":{"filename":{"type":"string","title":"Filename","description":"Original filename"},"s3_url":{"type":"string","title":"S3 Url","description":"S3 URL of the uploaded file"},"file_type":{"type":"string","title":"File Type","description":"File type (pdf, image, txt, etc.)"},"uploaded_at":{"type":"string","title":"Uploaded At","description":"ISO timestamp of upload"},"size_bytes":{"type":"integer","title":"Size Bytes","description":"File size in bytes"}},"type":"object","required":["filename","s3_url","file_type","uploaded_at","size_bytes"],"title":"CompanyInfoFile","description":"Metadata for uploaded company info file"},"CompanyInfoResponse":{"properties":{"company_id":{"type":"string","title":"Company Id"},"company_info":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Info","description":"Company information text"}},"type":"object","required":["company_id"],"title":"CompanyInfoResponse","description":"Response for company info retrieval"},"CompanyInfoUploadResponse":{"properties":{"message":{"type":"string","title":"Message"},"company_id":{"type":"string","title":"Company Id"},"info_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Info Text","description":"Plain text that was uploaded"},"files_uploaded":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Files Uploaded","description":"List of uploaded file names"},"processing_job_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Processing Job Id","description":"Batch job ID if files were uploaded"},"status":{"type":"string","title":"Status","description":"Status: 'completed' for text only, 'processing' for files"}},"type":"object","required":["message","company_id","status"],"title":"CompanyInfoUploadResponse","description":"Response for company info upload"},"CompanyOption":{"properties":{"id":{"type":"string","title":"Id","description":"Company ID"},"name":{"type":"string","title":"Name","description":"Company name"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain","description":"Company domain"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url","description":"Company logo URL"},"allow_open_join":{"type":"boolean","title":"Allow Open Join","description":"Whether company allows open joining"},"requires_approval":{"type":"boolean","title":"Requires Approval","description":"Whether company requires admin approval"}},"type":"object","required":["id","name","allow_open_join","requires_approval"],"title":"CompanyOption","description":"Company option for onboarding"},"CompanyResponse":{"properties":{"company":{"$ref":"#/components/schemas/Company-Output"}},"type":"object","required":["company"],"title":"CompanyResponse","description":"Single company response"},"CompanySettings":{"properties":{"company_id":{"type":"string","title":"Company Id","description":"Company ID"},"hiring_process_stages":{"items":{"type":"string"},"type":"array","title":"Hiring Process Stages","description":"Custom hiring process stages"},"default_interview_duration":{"type":"integer","title":"Default Interview Duration","description":"Default interview duration in minutes","default":60},"enable_ai_screening":{"type":"boolean","title":"Enable Ai Screening","description":"Enable AI-powered candidate screening","default":true},"enable_auto_emails":{"type":"boolean","title":"Enable Auto Emails","description":"Enable automatic email responses","default":false},"email_templates":{"additionalProperties":{"type":"string"},"type":"object","title":"Email Templates","description":"Custom email templates"},"branding":{"additionalProperties":true,"type":"object","title":"Branding","description":"Company branding settings"},"notification_settings":{"additionalProperties":{"type":"boolean"},"type":"object","title":"Notification Settings","description":"Notification preferences"},"integration_settings":{"additionalProperties":true,"type":"object","title":"Integration Settings","description":"Third-party integration settings"},"privacy_settings":{"additionalProperties":{"type":"boolean"},"type":"object","title":"Privacy Settings","description":"Privacy and data handling settings"},"custom_fields":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Custom Fields","description":"Custom candidate fields"},"scoring_criteria":{"additionalProperties":true,"type":"object","title":"Scoring Criteria","description":"Candidate scoring criteria"},"mojo_score_enabled":{"type":"boolean","title":"Mojo Score Enabled","description":"Enable Mojo Score feature","default":false},"created_at":{"type":"integer","title":"Created At","description":"Unix timestamp of when settings were created"},"updated_at":{"type":"integer","title":"Updated At","description":"Unix timestamp of when settings were last updated"}},"type":"object","required":["company_id","created_at","updated_at"],"title":"CompanySettings","description":"Company settings model"},"CompanySettingsResponse":{"properties":{"settings":{"$ref":"#/components/schemas/CompanySettings"}},"type":"object","required":["settings"],"title":"CompanySettingsResponse","description":"Company settings response"},"CompanySettingsUpdate":{"properties":{"hiring_process_stages":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Hiring Process Stages","description":"Custom hiring process stages"},"default_interview_duration":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Default Interview Duration","description":"Default interview duration in minutes"},"enable_ai_screening":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Ai Screening","description":"Enable AI-powered candidate screening"},"enable_auto_emails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Auto Emails","description":"Enable automatic email responses"},"email_templates":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Email Templates","description":"Custom email templates"},"branding":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Branding","description":"Company branding settings"},"notification_settings":{"anyOf":[{"additionalProperties":{"type":"boolean"},"type":"object"},{"type":"null"}],"title":"Notification Settings","description":"Notification preferences"},"integration_settings":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Integration Settings","description":"Third-party integration settings"},"privacy_settings":{"anyOf":[{"additionalProperties":{"type":"boolean"},"type":"object"},{"type":"null"}],"title":"Privacy Settings","description":"Privacy and data handling settings"},"custom_fields":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Custom Fields","description":"Custom candidate fields"},"scoring_criteria":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Scoring Criteria","description":"Candidate scoring criteria"},"mojo_score_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Mojo Score Enabled","description":"Enable Mojo Score feature"}},"type":"object","title":"CompanySettingsUpdate","description":"Company settings update request model"},"CompanyUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Company name"},"logo":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo","description":"Company logo URL"},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website","description":"Company website"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Company description"},"industry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry","description":"Company industry"},"size":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Size","description":"Company size"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location","description":"Company headquarters location"},"logo_display_settings":{"anyOf":[{"$ref":"#/components/schemas/LogoDisplaySettings"},{"type":"null"}],"description":"Logo display metadata for frontend rendering"},"company_info":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Info","description":"Large text field for general company information"}},"type":"object","title":"CompanyUpdate","description":"Company update request model"},"CompanyUserAssignment":{"properties":{"email":{"type":"string","format":"email","title":"Email","description":"Email of user to assign"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role","description":"Role to assign to user","default":"member"}},"type":"object","required":["email"],"title":"CompanyUserAssignment","description":"Model for assigning user to company"},"CompanyUserAssignmentResponse":{"properties":{"message":{"type":"string","title":"Message"},"user_email":{"type":"string","title":"User Email"},"company_id":{"type":"string","title":"Company Id"},"role":{"type":"string","title":"Role"}},"type":"object","required":["message","user_email","company_id","role"],"title":"CompanyUserAssignmentResponse","description":"Response for user assignment"},"CompleteOnboardingRequest":{"properties":{"company_choice":{"$ref":"#/components/schemas/CompanyChoice","description":"Company selection"},"profile_data":{"anyOf":[{"$ref":"#/components/schemas/ProfileData"},{"type":"null"}],"description":"Profile updates"},"referral_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Referral Token","description":"Referral token if user came via referral link"}},"type":"object","required":["company_choice"],"title":"CompleteOnboardingRequest","description":"Request to complete user onboarding"},"CompleteOnboardingResponse":{"properties":{"success":{"type":"boolean","title":"Success","description":"Whether onboarding was successful"},"user":{"additionalProperties":true,"type":"object","title":"User","description":"Updated user data"},"company":{"additionalProperties":true,"type":"object","title":"Company","description":"Company data"},"onboarding_complete":{"type":"boolean","title":"Onboarding Complete","description":"Whether onboarding is complete"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message","description":"Optional message"}},"type":"object","required":["success","user","company","onboarding_complete"],"title":"CompleteOnboardingResponse","description":"Response when completing onboarding"},"ConnectionDetails":{"properties":{"serverUrl":{"type":"string","title":"Serverurl"},"roomName":{"type":"string","title":"Roomname"},"participantName":{"type":"string","title":"Participantname"},"participantToken":{"type":"string","title":"Participanttoken"},"userInfo":{"type":"string","title":"Userinfo"},"scenarioType":{"type":"string","title":"Scenariotype"},"practiceSessionId":{"type":"string","title":"Practicesessionid"},"shareId":{"type":"string","title":"Shareid"}},"type":"object","required":["serverUrl","roomName","participantName","participantToken","userInfo","scenarioType","practiceSessionId","shareId"],"title":"ConnectionDetails"},"ConnectionRequest":{"properties":{"practice_session_id":{"type":"string","title":"Practice Session Id"},"participant_name":{"type":"string","title":"Participant Name"},"user_info":{"type":"string","title":"User Info","default":""},"scenario_type":{"type":"string","title":"Scenario Type","default":"practice"},"share_id":{"type":"string","title":"Share Id","default":""},"persona_id":{"type":"string","title":"Persona Id","default":""},"company_id":{"type":"string","title":"Company Id","default":""},"sandbox_id":{"type":"string","title":"Sandbox Id","default":""},"sandbox_region":{"type":"string","title":"Sandbox Region","default":"us"},"practice_session_ids":{"items":{"type":"string"},"type":"array","title":"Practice Session Ids","default":[]}},"type":"object","required":["practice_session_id","participant_name"],"title":"ConnectionRequest"},"ConversationRequest":{"properties":{"persona_id":{"type":"string","title":"Persona Id"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"replica_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Replica Id"},"conversation_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Name"},"conversational_context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversational Context"}},"type":"object","required":["persona_id"],"title":"ConversationRequest"},"ConversationResponse":{"properties":{"conversation_id":{"type":"string","title":"Conversation Id"},"conversation_url":{"type":"string","title":"Conversation Url"},"status":{"type":"string","title":"Status"},"created_at":{"type":"string","title":"Created At"},"persona_id":{"type":"string","title":"Persona Id"},"replica_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Replica Id"},"conversation_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Name"}},"type":"object","required":["conversation_id","conversation_url","status","created_at","persona_id"],"title":"ConversationResponse"},"CreateListRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Name of the list"}},"type":"object","required":["name"],"title":"CreateListRequest","description":"Request model for creating a new list"},"CreateScenarioRequest":{"properties":{"scenario":{"$ref":"#/components/schemas/CareMojoScenarioData"},"patient_profile":{"anyOf":[{"$ref":"#/components/schemas/PatientProfile"},{"type":"null"}]},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language","default":"en"},"welcome_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Welcome Message"}},"type":"object","required":["scenario"],"title":"CreateScenarioRequest","description":"Request body for create-scenario endpoint"},"CreateScenarioResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"share_id":{"type":"string","title":"Share Id"},"persona_id":{"type":"string","title":"Persona Id","default":""},"system_message":{"type":"string","title":"System Message"},"scenario_id":{"type":"string","title":"Scenario Id"},"generated_at":{"type":"string","title":"Generated At"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["success","share_id","system_message","scenario_id","generated_at"],"title":"CreateScenarioResponse","description":"Response from create-scenario endpoint"},"CustomTab":{"properties":{"id":{"type":"string","title":"Id","description":"Unique identifier for the tab (format: custom_{timestamp})"},"label":{"type":"string","title":"Label","description":"User-defined display name for the tab"},"share_id":{"type":"string","title":"Share Id","description":"Scenario share ID associated with this tab"},"scenario_template_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scenario Template Id","description":"Template ID used for the scenario share"},"created_at":{"type":"integer","title":"Created At","description":"Unix timestamp when the tab was created"}},"type":"object","required":["id","label","share_id","created_at"],"title":"CustomTab","description":"Custom tab for a job interview configuration"},"CustomTabCreate":{"properties":{"label":{"type":"string","maxLength":100,"minLength":1,"title":"Label","description":"User-defined display name for the tab"},"scenario_template_id":{"type":"string","title":"Scenario Template Id","description":"Template ID to use for creating the scenario share"}},"type":"object","required":["label","scenario_template_id"],"title":"CustomTabCreate","description":"Request model for creating a new custom tab"},"CustomTabResponse":{"properties":{"tab":{"$ref":"#/components/schemas/CustomTab"}},"type":"object","required":["tab"],"title":"CustomTabResponse","description":"Response model for a single custom tab"},"CustomTabUpdate":{"properties":{"label":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Label","description":"New display name for the tab"},"scenario_template_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scenario Template Id","description":"New template ID to use for the scenario share (updates share_id automatically)"}},"type":"object","title":"CustomTabUpdate","description":"Request model for updating a custom tab"},"CustomTabsResponse":{"properties":{"tabs":{"items":{"$ref":"#/components/schemas/CustomTab"},"type":"array","title":"Tabs"},"count":{"type":"integer","title":"Count","description":"Total number of custom tabs"}},"type":"object","required":["tabs","count"],"title":"CustomTabsResponse","description":"Response model for multiple custom tabs"},"DashboardMetrics":{"properties":{"date_range":{"additionalProperties":{"type":"string"},"type":"object","title":"Date Range","description":"Date range for metrics"},"pipeline":{"$ref":"#/components/schemas/PipelineMetrics","description":"Pipeline metrics"},"time":{"$ref":"#/components/schemas/TimeMetrics","description":"Time-based metrics"},"sources":{"$ref":"#/components/schemas/SourceMetrics","description":"Source metrics"},"jobs":{"$ref":"#/components/schemas/JobMetrics","description":"Job metrics"},"team":{"$ref":"#/components/schemas/TeamMetrics","description":"Team metrics"},"trends":{"additionalProperties":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"type":"object","title":"Trends","description":"Trending data over time"}},"type":"object","required":["date_range","pipeline","time","sources","jobs","team","trends"],"title":"DashboardMetrics","description":"Complete dashboard metrics model"},"DashboardResponse":{"properties":{"metrics":{"$ref":"#/components/schemas/DashboardMetrics"},"generated_at":{"type":"integer","title":"Generated At","description":"Unix timestamp when metrics were generated"},"company_id":{"type":"string","title":"Company Id","description":"Company ID these metrics belong to"}},"type":"object","required":["metrics","generated_at","company_id"],"title":"DashboardResponse","description":"Dashboard analytics response"},"EmailValidationAccount":{"properties":{"role":{"type":"string","title":"Role","description":"Whether this is a role-based email"},"disabled":{"type":"string","title":"Disabled","description":"Whether account is disabled"},"fullMailbox":{"type":"string","title":"Fullmailbox","description":"Whether mailbox is full"}},"type":"object","required":["role","disabled","fullMailbox"],"title":"EmailValidationAccount","description":"Account information from email validation"},"EmailValidationDns":{"properties":{"type":{"type":"string","title":"Type","description":"DNS record type"},"record":{"type":"string","title":"Record","description":"DNS record value"}},"type":"object","required":["type","record"],"title":"EmailValidationDns","description":"DNS information from email validation"},"EmailValidationDomain":{"properties":{"name":{"type":"string","title":"Name","description":"Domain name"},"acceptAll":{"type":"string","title":"Acceptall","description":"Whether domain accepts all emails"},"disposable":{"type":"string","title":"Disposable","description":"Whether domain is disposable"},"free":{"type":"string","title":"Free","description":"Whether domain is a free provider"}},"type":"object","required":["name","acceptAll","disposable","free"],"title":"EmailValidationDomain","description":"Domain information from email validation"},"EmailValidationRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email","description":"Email address to validate"}},"type":"object","required":["email"],"title":"EmailValidationRequest","description":"Email validation request model"},"EmailValidationResponse":{"properties":{"email":{"type":"string","title":"Email","description":"The validated email address"},"status":{"type":"string","enum":["deliverable","undeliverable","unknown"],"title":"Status","description":"Validation status"},"reason":{"type":"string","title":"Reason","description":"Reason for the validation result"},"domain":{"$ref":"#/components/schemas/EmailValidationDomain","description":"Domain information"},"account":{"$ref":"#/components/schemas/EmailValidationAccount","description":"Account information"},"dns":{"$ref":"#/components/schemas/EmailValidationDns","description":"DNS information"},"provider":{"type":"string","title":"Provider","description":"Email provider"},"score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Score","description":"Validation score (0-100)"},"toxic":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Toxic","description":"Whether email is toxic"},"toxicity":{"type":"integer","title":"Toxicity","description":"Toxicity score","default":0},"didYouMean":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Didyoumean","description":"Suggested correction for invalid emails"},"retryAfter":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Retryafter","description":"When to retry validation for timeout cases"}},"type":"object","required":["email","status","reason","domain","account","dns","provider"],"title":"EmailValidationResponse","description":"Email validation response model"},"EmailValidationResponseWrapper":{"properties":{"validation":{"$ref":"#/components/schemas/EmailValidationResponse"}},"type":"object","required":["validation"],"title":"EmailValidationResponseWrapper","description":"Wrapper for email validation response"},"EntityType":{"type":"string","enum":["USER","PRACTICE_SESSION","PRACTICE_MESSAGE","PRACTICE_SHARE_LINK","JOB","APPLICATION","FILE","FILE_LIST","COMPANY","CANDIDATE","CANDIDATE_NOTE","QUESTION","QUESTION_TEMPLATE","INVITATION","COMPANY_ACCESS_REQUEST","INTERVIEWER_PERSONA","INTERVIEW_TEMPLATE","VOICE","SCENARIO","SANDBOX"],"title":"EntityType"},"ErrorResponse":{"properties":{"error":{"type":"string","title":"Error","description":"Error message"}},"type":"object","required":["error"],"title":"ErrorResponse","description":"Standard error response model"},"ExecutionListResult":{"properties":{"executions":{"items":{"$ref":"#/components/schemas/ExecutionSummary"},"type":"array","title":"Executions","description":"List of executions"},"total_count":{"type":"integer","title":"Total Count","description":"Total number of executions returned"},"status_filter":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Filter","description":"Status filter applied"},"state_machine_arn":{"type":"string","title":"State Machine Arn","description":"ARN of the state machine"}},"type":"object","required":["executions","total_count","state_machine_arn"],"title":"ExecutionListResult","description":"Result of listing executions with optional filtering"},"ExecutionResult":{"properties":{"execution_arn":{"type":"string","title":"Execution Arn","description":"ARN of the execution"},"execution_name":{"type":"string","title":"Execution Name","description":"Name of the execution"},"status":{"type":"string","title":"Status","description":"Final status of the execution"},"start_date":{"type":"string","title":"Start Date","description":"ISO timestamp when execution started"},"stop_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stop Date","description":"ISO timestamp when execution stopped"},"input":{"additionalProperties":true,"type":"object","title":"Input","description":"Input data provided to the execution"},"output":{"additionalProperties":true,"type":"object","title":"Output","description":"Output data from the execution","default":{}},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error","description":"Error type if execution failed"},"cause":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cause","description":"Error cause if execution failed"},"failed_states":{"items":{"$ref":"#/components/schemas/FailedState"},"type":"array","title":"Failed States","description":"States that failed during execution","default":[]},"succeeded_states_count":{"type":"integer","title":"Succeeded States Count","description":"Number of states that succeeded","default":0},"candidate_emails":{"items":{"type":"string"},"type":"array","title":"Candidate Emails","description":"Email addresses found in candidates","default":[]},"job_requirements":{"additionalProperties":true,"type":"object","title":"Job Requirements","description":"Job requirements from input","default":{}},"execution_duration_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Execution Duration Seconds","description":"Total execution duration"},"redrive_count":{"type":"integer","title":"Redrive Count","description":"Number of times execution was redriven","default":0}},"type":"object","required":["execution_arn","execution_name","status","start_date","input"],"title":"ExecutionResult","description":"Detailed execution result with input, output, and analysis"},"ExecutionSearchResult":{"properties":{"email":{"type":"string","title":"Email","description":"Email address that was searched"},"matching_executions":{"items":{"$ref":"#/components/schemas/ExecutionSummary"},"type":"array","title":"Matching Executions","description":"Executions containing this email"},"total_matches":{"type":"integer","title":"Total Matches","description":"Total number of matching executions"}},"type":"object","required":["email","matching_executions","total_matches"],"title":"ExecutionSearchResult","description":"Result of searching executions by email"},"ExecutionSummary":{"properties":{"execution_arn":{"type":"string","title":"Execution Arn","description":"ARN of the execution"},"execution_name":{"type":"string","title":"Execution Name","description":"Name of the execution"},"status":{"type":"string","title":"Status","description":"Current status of the execution"},"start_date":{"type":"string","title":"Start Date","description":"ISO timestamp when execution started"},"stop_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stop Date","description":"ISO timestamp when execution stopped"},"duration_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration Seconds","description":"Execution duration in seconds"},"candidate_count":{"type":"integer","title":"Candidate Count","description":"Number of candidates in this execution","default":0},"job_title":{"type":"string","title":"Job Title","description":"Job title from requirements","default":"Unknown"},"company":{"type":"string","title":"Company","description":"Company from requirements","default":"Unknown"},"redrive_count":{"type":"integer","title":"Redrive Count","description":"Number of times execution was redriven","default":0}},"type":"object","required":["execution_arn","execution_name","status","start_date"],"title":"ExecutionSummary","description":"Summary information for a Step Functions execution"},"FailedState":{"properties":{"state_name":{"type":"string","title":"State Name","description":"Name of the failed state"},"error":{"type":"string","title":"Error","description":"Error type"},"cause":{"type":"string","title":"Cause","description":"Error cause/message"},"timestamp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timestamp","description":"ISO timestamp of failure"}},"type":"object","required":["state_name","error","cause"],"title":"FailedState","description":"Information about a failed state in the execution"},"FileDownloadUrlResponse":{"properties":{"url":{"type":"string","title":"Url","description":"Presigned URL for downloading the file"},"s3_key":{"type":"string","title":"S3 Key","description":"S3 key of the file"},"bucket_name":{"type":"string","title":"Bucket Name","description":"Name of the S3 bucket"}},"type":"object","required":["url","s3_key","bucket_name"],"title":"FileDownloadUrlResponse","description":"Response model for file download URL"},"FileListWithMetadata":{"properties":{"list_id":{"type":"string","title":"List Id","description":"Unique identifier for the list"},"name":{"type":"string","title":"Name","description":"Name of the list"},"user_id":{"type":"string","title":"User Id","description":"Owner of the list"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"files":{"items":{"type":"string"},"type":"array","title":"Files","description":"File IDs in this list"},"files_metadata":{"items":{"$ref":"#/components/schemas/FileMetadata"},"type":"array","title":"Files Metadata","description":"Metadata for files in this list"}},"type":"object","required":["list_id","name","user_id"],"title":"FileListWithMetadata","description":"Represents a list of files with their metadata"},"FileMetadata":{"properties":{"file_id":{"type":"string","title":"File Id","description":"Unique identifier for the file"},"file_name":{"type":"string","title":"File Name","description":"Original name of the file"},"file_size":{"type":"integer","title":"File Size","description":"Size of the file in bytes"},"content_type":{"type":"string","title":"Content Type","description":"MIME type of the file"},"s3_key":{"type":"string","title":"S3 Key","description":"S3 key where the file is stored"},"uploaded_at":{"type":"string","format":"date-time","title":"Uploaded At"},"lists":{"items":{"type":"string"},"type":"array","title":"Lists","description":"List IDs this file belongs to"}},"type":"object","required":["file_id","file_name","file_size","content_type","s3_key"],"title":"FileMetadata","description":"Represents metadata for an uploaded file"},"FileUploadCompletionRequest":{"properties":{"file_id":{"type":"string","title":"File Id"},"file_name":{"type":"string","title":"File Name"},"file_size":{"type":"integer","title":"File Size"},"content_type":{"type":"string","title":"Content Type"},"s3_key":{"type":"string","title":"S3 Key"},"list_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"List Id"}},"type":"object","required":["file_id","file_name","file_size","content_type","s3_key"],"title":"FileUploadCompletionRequest","description":"Request model for completing a file upload"},"FileUploadResponse":{"properties":{"file_id":{"type":"string","title":"File Id"},"presigned_url":{"type":"string","title":"Presigned Url"},"s3_key":{"type":"string","title":"S3 Key"}},"type":"object","required":["file_id","presigned_url","s3_key"],"title":"FileUploadResponse","description":"Response model for file upload"},"FileViewUrlResponse":{"properties":{"url":{"type":"string","title":"Url","description":"Presigned URL for viewing the file"},"file_id":{"type":"string","title":"File Id","description":"Unique identifier for the file"}},"type":"object","required":["url","file_id"],"title":"FileViewUrlResponse","description":"Response model for file view URL"},"GetInterviewQuestionsResponse":{"properties":{"questions":{"items":{"$ref":"#/components/schemas/StoredInterviewQuestion"},"type":"array","title":"Questions","description":"List of stored interview questions"}},"type":"object","required":["questions"],"title":"GetInterviewQuestionsResponse","description":"Response model for getting stored interview questions"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthCheckResponse":{"properties":{"status":{"type":"string","title":"Status","description":"Service status"},"active_sandboxes_count":{"type":"integer","title":"Active Sandboxes Count","description":"Number of active sandboxes"},"timestamp":{"type":"string","title":"Timestamp","description":"Health check timestamp"}},"type":"object","required":["status","active_sandboxes_count","timestamp"],"title":"HealthCheckResponse","description":"Response model for health check"},"HighlightSegment":{"properties":{"segment":{"type":"string","title":"Segment","description":"The exact text segment of the highlight."},"start_time":{"type":"string","title":"Start Time","description":"The start timestamp of the highlight in seconds format (e.g., '111.41')."},"end_time":{"type":"string","title":"End Time","description":"The end timestamp of the highlight in seconds format (e.g., '143.52')."},"summary":{"type":"string","title":"Summary","description":"A one-sentence summary of why this is a highlight."},"metric_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Metric Id","description":"ID of the assessment metric this highlight demonstrates."},"metric_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Metric Name","description":"Name of the assessment metric this highlight demonstrates."},"clip_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clip Url","description":"Presigned URL for the individual highlight video clip."}},"type":"object","required":["segment","start_time","end_time","summary"],"title":"HighlightSegment","description":"Model for a single highlight segment."},"HighlightSegmentShort":{"properties":{"highlight_number":{"type":"integer","title":"Highlight Number","description":"The sequential number of this highlight."},"segment":{"type":"string","title":"Segment","description":"The exact text segment of the highlight."},"summary":{"type":"string","title":"Summary","description":"A one-sentence summary of why this is a highlight."},"original_start_time":{"type":"string","title":"Original Start Time","description":"Original start timestamp in the full recording (seconds format)."},"original_end_time":{"type":"string","title":"Original End Time","description":"Original end timestamp in the full recording (seconds format)."},"start_time":{"type":"string","title":"Start Time","description":"Start timestamp in the stitched video (MM:SS format)."},"end_time":{"type":"string","title":"End Time","description":"End timestamp in the stitched video (MM:SS format)."},"metric_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Metric Id","description":"ID of the assessment metric this highlight demonstrates."},"metric_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Metric Name","description":"Name of the assessment metric this highlight demonstrates."}},"type":"object","required":["highlight_number","segment","summary","original_start_time","original_end_time","start_time","end_time"],"title":"HighlightSegmentShort","description":"Model for a single highlight segment in the stitched video."},"HighlightsResponse":{"properties":{"highlights":{"items":{"$ref":"#/components/schemas/HighlightSegment"},"type":"array","title":"Highlights","description":"A list of the top 5-8 segments from the interview."},"highlights_short_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Highlights Short Url","description":"Presigned URL for the stitched highlights video (highlights_short.mp4)."},"highlights_short_metadata":{"anyOf":[{"$ref":"#/components/schemas/HighlightsShortMetadata"},{"type":"null"}],"description":"Metadata for the stitched video with updated timestamps."}},"type":"object","required":["highlights"],"title":"HighlightsResponse","description":"Response model for interview highlights."},"HighlightsShortMetadata":{"properties":{"share_id":{"type":"string","title":"Share Id","description":"The share ID."},"practice_session_id":{"type":"string","title":"Practice Session Id","description":"The practice session ID."},"highlights":{"items":{"$ref":"#/components/schemas/HighlightSegmentShort"},"type":"array","title":"Highlights","description":"List of highlights with stitched video timestamps."}},"type":"object","required":["share_id","practice_session_id","highlights"],"title":"HighlightsShortMetadata","description":"Metadata for the stitched highlights video."},"InputSummary":{"properties":{"candidate_count":{"type":"integer","title":"Candidate Count","description":"Number of candidates"},"job_title":{"type":"string","title":"Job Title","description":"Job title"},"company":{"type":"string","title":"Company","description":"Company name"},"source_types":{"items":{"type":"string"},"type":"array","title":"Source Types","description":"Types of sources being processed"}},"type":"object","required":["candidate_count","job_title","company","source_types"],"title":"InputSummary","description":"Summary of input data for the execution"},"Interview":{"properties":{"type":{"$ref":"#/components/schemas/InterviewType","description":"Type of interview (e.g., PHONE_SCREEN, TECHNICAL)"},"scheduled_at":{"type":"string","title":"Scheduled At","description":"Unix timestamp of when the interview is scheduled"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes","description":"Notes about the interview"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location","description":"Interview location or meeting link"},"interviewer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Interviewer","description":"Name of the interviewer"},"status":{"type":"string","title":"Status","description":"Status of the interview","default":"SCHEDULED"}},"type":"object","required":["type","scheduled_at"],"title":"Interview","description":"Model for job interview data"},"InterviewData":{"properties":{"company":{"type":"string","title":"Company","description":"Company name"},"position":{"type":"string","title":"Position","description":"Position title"},"type":{"type":"string","title":"Type","description":"Type of interview"},"scheduled_at":{"type":"string","title":"Scheduled At","description":"Unix timestamp of when the interview is scheduled"},"status":{"type":"string","title":"Status","description":"Status of the interview","default":"SCHEDULED"}},"type":"object","required":["company","position","type","scheduled_at"],"title":"InterviewData","description":"Interview data model"},"InterviewQuestionGenerationRequest":{"properties":{"prompt":{"type":"string","title":"Prompt","description":"AI prompt with instructions"},"type":{"type":"string","title":"Type","description":"Question type: conversation or action"},"jobContext":{"$ref":"#/components/schemas/JobContext","description":"Job context information"}},"type":"object","required":["prompt","type","jobContext"],"title":"InterviewQuestionGenerationRequest","description":"Request model for generating AI-powered interview questions"},"InterviewQuestionGenerationResponse":{"properties":{"type":{"type":"string","title":"Type","description":"Question type: conversation or action"},"category":{"type":"string","title":"Category","description":"Question category"},"question":{"type":"string","title":"Question","description":"Generated interview question"},"signals":{"type":"string","title":"Signals","description":"What to evaluate (comma separated)"},"duration":{"type":"string","title":"Duration","description":"Expected duration"}},"type":"object","required":["type","category","question","signals","duration"],"title":"InterviewQuestionGenerationResponse","description":"Response model for generated interview questions"},"InterviewType":{"type":"string","enum":["PHONE_SCREEN","TECHNICAL","BEHAVIORAL","ONSITE","TAKE_HOME","FINAL"],"title":"InterviewType"},"InterviewerPersona":{"properties":{"persona_id":{"type":"string","title":"Persona Id","description":"Unique persona identifier"},"name":{"type":"string","title":"Name","description":"Persona name"},"title":{"type":"string","title":"Title","description":"Persona job title"},"company_id":{"type":"string","title":"Company Id","description":"Company identifier"},"system_message":{"type":"string","title":"System Message","description":"AI behavior definition"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url","description":"Avatar image URL"},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url","description":"LinkedIn profile URL"},"persona_details":{"$ref":"#/components/schemas/PersonaDetails"},"voice_settings":{"$ref":"#/components/schemas/VoiceSettings","description":"Voice configuration"},"stats":{"$ref":"#/components/schemas/PersonaStats","description":"Performance statistics"},"language":{"type":"string","title":"Language","description":"Interview language code (ISO 639-1)","default":"en"},"guide_message1":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guide Message1","description":"First guidance message in persona language"},"guide_message2":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guide Message2","description":"Second guidance message in persona language"},"guide_message3":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guide Message3","description":"Third guidance message in persona language"},"status":{"type":"string","title":"Status","description":"Persona status","default":"active"},"created_at":{"type":"string","title":"Created At","description":"Creation timestamp"},"updated_at":{"type":"string","title":"Updated At","description":"Last update timestamp"},"created_by":{"type":"string","title":"Created By","description":"Creator user ID"},"raw_profile_data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Raw Profile Data","description":"Raw profile data used for persona creation"}},"type":"object","required":["persona_id","name","title","company_id","system_message","persona_details","voice_settings","created_at","updated_at","created_by"],"title":"InterviewerPersona","description":"Enhanced interviewer persona model"},"InterviewerPersonaCreate":{"properties":{"name":{"type":"string","title":"Name","description":"Persona name"},"title":{"type":"string","title":"Title","description":"Persona job title"},"system_message":{"type":"string","title":"System Message","description":"AI behavior definition"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url","description":"Avatar image URL"},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url","description":"LinkedIn profile URL"},"language":{"type":"string","title":"Language","description":"Interview language code (ISO 639-1)","default":"en"},"guide_message1":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guide Message1","description":"First guidance message in persona language"},"guide_message2":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guide Message2","description":"Second guidance message in persona language"},"guide_message3":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guide Message3","description":"Third guidance message in persona language"},"persona_details":{"$ref":"#/components/schemas/PersonaDetails"},"voice_settings":{"$ref":"#/components/schemas/VoiceSettings","description":"Voice configuration"}},"type":"object","required":["name","title","system_message","persona_details","voice_settings"],"title":"InterviewerPersonaCreate","description":"Request model for creating interviewer persona"},"InterviewerPersonaUpdate":{"properties":{"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url","description":"Avatar image URL"},"voice_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Id","description":"Voice ID from provider"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language","description":"Interview language code (ISO 639-1)"},"guide_message1":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guide Message1","description":"First guidance message in persona language"},"guide_message2":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guide Message2","description":"Second guidance message in persona language"},"guide_message3":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guide Message3","description":"Third guidance message in persona language"}},"type":"object","title":"InterviewerPersonaUpdate","description":"Request model for partially updating interviewer persona"},"Invitation":{"properties":{"invitation_id":{"type":"string","title":"Invitation Id","description":"Unique identifier for the invitation"},"token":{"type":"string","title":"Token","description":"Secure token for invitation validation"},"email":{"type":"string","format":"email","title":"Email","description":"Email address of the invitee"},"company_id":{"type":"string","title":"Company Id","description":"ID of the company extending the invitation"},"inviter_id":{"type":"string","title":"Inviter Id","description":"ID of the user who sent the invitation"},"role":{"type":"string","title":"Role","description":"Role to assign to user upon acceptance"},"status":{"type":"string","title":"Status","description":"Current status of the invitation","default":"PENDING"},"personal_message":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Personal Message","description":"Personal message from inviter"},"entity_type":{"type":"string","const":"INVITATION","title":"Entity Type","description":"Entity type, always INVITATION","default":"INVITATION"},"created_at":{"type":"string","title":"Created At","description":"Unix timestamp when invitation was created (stored as string)"},"updated_at":{"type":"string","title":"Updated At","description":"Unix timestamp when invitation was last updated (stored as string)"},"expires_at":{"type":"integer","title":"Expires At","description":"Unix timestamp when invitation expires"},"accepted_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Accepted At","description":"Unix timestamp when invitation was accepted"},"accepted_by_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Accepted By User Id","description":"ID of user who accepted the invitation"}},"type":"object","required":["invitation_id","token","email","company_id","inviter_id","role","created_at","updated_at","expires_at"],"title":"Invitation","description":"Base invitation model"},"InvitationCreate":{"properties":{"email":{"type":"string","format":"email","title":"Email","description":"Email address to invite"},"company_id":{"type":"string","title":"Company Id","description":"Company ID to invite to"},"role":{"type":"string","title":"Role","description":"Role to assign (company_admin or user)"},"expires_in_days":{"anyOf":[{"type":"integer","maximum":30.0,"minimum":1.0},{"type":"null"}],"title":"Expires In Days","description":"Days until expiration (max 30)","default":7},"personal_message":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Personal Message","description":"Personal message"}},"type":"object","required":["email","company_id","role"],"title":"InvitationCreate","description":"Invitation creation request model"},"InvitationListItem":{"properties":{"id":{"type":"string","title":"Id","description":"Invitation ID"},"email":{"type":"string","title":"Email","description":"Invitee email"},"role":{"type":"string","title":"Role","description":"Role offered"},"status":{"type":"string","title":"Status","description":"Current status"},"inviter_name":{"type":"string","title":"Inviter Name","description":"Name of inviter"},"created_at":{"type":"string","title":"Created At","description":"ISO timestamp of creation"},"expires_at":{"type":"string","title":"Expires At","description":"ISO timestamp of expiration"},"accepted_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Accepted At","description":"ISO timestamp of acceptance"}},"type":"object","required":["id","email","role","status","inviter_name","created_at","expires_at"],"title":"InvitationListItem","description":"Invitation list item"},"InvitationListResponse":{"properties":{"invites":{"items":{"$ref":"#/components/schemas/InvitationListItem"},"type":"array","title":"Invites","description":"List of invitations"},"pagination":{"$ref":"#/components/schemas/PaginationInfo"},"summary":{"$ref":"#/components/schemas/InvitationSummary","description":"Summary statistics"}},"type":"object","required":["invites","pagination","summary"],"title":"InvitationListResponse","description":"List invitations response"},"InvitationResponse":{"properties":{"invitation":{"$ref":"#/components/schemas/Invitation"},"invite_url":{"type":"string","title":"Invite Url","description":"Full signup URL with invitation token"}},"type":"object","required":["invitation","invite_url"],"title":"InvitationResponse","description":"Single invitation response"},"InvitationSummary":{"properties":{"total":{"type":"integer","title":"Total","description":"Total invitations","default":0},"pending":{"type":"integer","title":"Pending","description":"Pending invitations","default":0},"accepted":{"type":"integer","title":"Accepted","description":"Accepted invitations","default":0},"expired":{"type":"integer","title":"Expired","description":"Expired invitations","default":0},"revoked":{"type":"integer","title":"Revoked","description":"Revoked invitations","default":0}},"type":"object","title":"InvitationSummary","description":"Summary statistics for invitations"},"InvitationValidation":{"properties":{"valid":{"type":"boolean","title":"Valid","description":"Whether the invitation is valid"},"invite":{"anyOf":[{"$ref":"#/components/schemas/InviteDetails"},{"type":"null"}],"description":"Invitation details if valid"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error","description":"Error type if invalid"}},"type":"object","required":["valid"],"title":"InvitationValidation","description":"Invitation validation response"},"InviteDetails":{"properties":{"company_name":{"type":"string","title":"Company Name","description":"Name of the company"},"company_logo":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Logo","description":"Company logo URL"},"inviter_name":{"type":"string","title":"Inviter Name","description":"Name of the person who sent the invite"},"inviter_avatar":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Inviter Avatar","description":"Avatar URL of the inviter"},"role":{"type":"string","title":"Role","description":"Role being offered"},"expires_at":{"type":"string","title":"Expires At","description":"ISO timestamp when invitation expires"},"personal_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Personal Message","description":"Personal message from inviter"}},"type":"object","required":["company_name","inviter_name","role","expires_at"],"title":"InviteDetails","description":"Details shown when validating an invitation"},"JobContext":{"properties":{"title":{"type":"string","title":"Title","description":"Job title"},"description":{"type":"string","title":"Description","description":"Job description"},"requirements":{"type":"string","title":"Requirements","description":"Job requirements"},"roleType":{"type":"string","title":"Roletype","description":"Role type (engineering, sales, design, marketing, general)"}},"type":"object","required":["title","description","requirements","roleType"],"title":"JobContext","description":"Job context for interview question generation"},"JobCreate":{"properties":{"title":{"type":"string","title":"Title","description":"Job title"},"company":{"$ref":"#/components/schemas/Company-Input","description":"Company information"},"location":{"type":"string","title":"Location","description":"Job location"},"job_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Url","description":"Job posting URL"},"reference_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference Id","description":"External reference ID"},"posted_at":{"type":"string","title":"Posted At","description":"Job posting timestamp"},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"Optional job unique identifier. If not provided, a UUID will be generated"},"details":{"anyOf":[{"$ref":"#/components/schemas/JobDetails"},{"type":"null"}],"description":"Additional job details"},"assessment_metrics":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Assessment Metrics","description":"Assessment metrics to create with the job"}},"type":"object","required":["title","company","location","posted_at"],"title":"JobCreate","description":"Schema for creating a job"},"JobDetails":{"properties":{"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Full job description"},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State","description":"Job state"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At","description":"Job creation timestamp"},"published_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Published At","description":"Job publication timestamp"},"salary_range":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Salary Range","description":"Salary range if available"},"qualifications":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Qualifications","description":"List of qualifications"},"responsibilities":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Responsibilities","description":"List of responsibilities"},"skills":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Skills","description":"List of required skills"},"assessment_metrics":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Assessment Metrics","description":"Assessment metrics for the job"}},"type":"object","title":"JobDetails","description":"Job details model aligned with JobResponse"},"JobGenerationRequest":{"properties":{"description":{"type":"string","title":"Description","description":"Plain text job description to be structured"}},"type":"object","required":["description"],"title":"JobGenerationRequest","description":"Request schema for generating structured job from plain text"},"JobListResponse":{"properties":{"jobs":{"items":{"$ref":"#/components/schemas/JobResponse"},"type":"array","title":"Jobs","description":"List of jobs"},"count":{"type":"integer","title":"Count","description":"Number of jobs returned"},"next_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Token","description":"Token for pagination"}},"type":"object","required":["jobs","count"],"title":"JobListResponse","description":"Response schema for listing jobs"},"JobMetadataExtractionRequest":{"properties":{"job_title":{"type":"string","title":"Job Title","description":"Job title"},"job_description":{"type":"string","title":"Job Description","description":"Job description"},"location":{"type":"string","title":"Location","description":"Job location"},"requirements":{"items":{"type":"string"},"type":"array","title":"Requirements","description":"Job requirements","default":[]},"responsibilities":{"items":{"type":"string"},"type":"array","title":"Responsibilities","description":"Job responsibilities","default":[]}},"type":"object","required":["job_title","job_description","location"],"title":"JobMetadataExtractionRequest","description":"Request schema for job metadata extraction"},"JobMetadataExtractionResponse":{"properties":{"job_type":{"type":"string","title":"Job Type","description":"Employment type"},"experience_level":{"type":"string","title":"Experience Level","description":"Required experience level"},"work_type":{"type":"string","title":"Work Type","description":"Work arrangement type"},"salary_range":{"$ref":"#/components/schemas/SalaryRange","description":"Salary information"},"location_structured":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Location Structured","description":"Structured location information"}},"type":"object","required":["job_type","experience_level","work_type","salary_range"],"title":"JobMetadataExtractionResponse","description":"Response schema for job metadata extraction"},"JobMetrics":{"properties":{"total_jobs":{"type":"integer","title":"Total Jobs","description":"Total number of active jobs"},"jobs_with_candidates":{"type":"integer","title":"Jobs With Candidates","description":"Jobs that have received applications"},"average_applications_per_job":{"type":"number","title":"Average Applications Per Job","description":"Average applications per job"},"top_jobs":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Top Jobs","description":"Top performing jobs"}},"type":"object","required":["total_jobs","jobs_with_candidates","average_applications_per_job","top_jobs"],"title":"JobMetrics","description":"Job-specific metrics model"},"JobMetricsGenerationRequest":{"properties":{"description":{"type":"string","title":"Description","description":"Plain text job description"},"num_metrics":{"anyOf":[{"type":"integer","maximum":5.0,"minimum":1.0},{"type":"null"}],"title":"Num Metrics","description":"Number of metrics to generate (1-5)","default":5},"share_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Share Type","description":"Type of share: 'conversation' (default) or 'action' (for pair programming/sandbox scenarios)","default":"conversation"}},"type":"object","required":["description"],"title":"JobMetricsGenerationRequest","description":"Request model for generating assessment metrics from job description"},"JobRequirements":{"properties":{"title":{"type":"string","title":"Title","description":"Job title"},"company":{"type":"string","title":"Company","description":"Company name"},"required_skills":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Required Skills","description":"List of required skills","default":[]},"qualifications":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Qualifications","description":"List of required qualifications","default":[]},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Job description"}},"type":"object","required":["title","company"],"title":"JobRequirements","description":"Job requirements for candidate evaluation"},"JobResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Clean job ID for frontend use"},"pk":{"type":"string","title":"Pk","description":"Primary key"},"sk":{"type":"string","title":"Sk","description":"Sort key"},"entity_type":{"type":"string","title":"Entity Type","description":"Entity type"},"title":{"type":"string","title":"Title","description":"Job title"},"company":{"type":"string","title":"Company","description":"Company name"},"company_id":{"type":"string","title":"Company Id","description":"Company unique identifier"},"company_url":{"type":"string","title":"Company Url","description":"Company profile URL"},"company_logo":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Logo","description":"Company logo URL"},"location":{"type":"string","title":"Location","description":"Job location"},"job_url":{"type":"string","title":"Job Url","description":"Job posting URL"},"reference_id":{"type":"string","title":"Reference Id","description":"External reference ID"},"posted_at":{"type":"string","title":"Posted At","description":"Job posting timestamp as epoch"},"posted_at_iso":{"type":"string","title":"Posted At Iso","description":"Job posting timestamp in ISO format"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Full job description"},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State","description":"Job state"},"applicants_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Applicants Count","description":"Number of applicants"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At","description":"Job creation timestamp"},"published_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Published At","description":"Job publication timestamp"},"salary_range":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Salary Range","description":"Salary range if available"},"qualifications":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Qualifications","description":"List of qualifications"},"responsibilities":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Responsibilities","description":"List of responsibilities"},"skills":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Skills","description":"List of required skills"},"status":{"type":"string","title":"Status","description":"Job status","default":"ACTIVE"},"job_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Type","description":"Job type (FULL_TIME, PART_TIME, CONTRACT, INTERNSHIP, FREELANCE)"},"experience_level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Experience Level","description":"Experience level (ENTRY_LEVEL, MID_LEVEL, SENIOR_LEVEL, LEAD_PRINCIPAL, EXECUTIVE)"},"work_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Work Type","description":"Work type (REMOTE, HYBRID, ON_SITE)"},"salary_range_structured":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Salary Range Structured","description":"Structured salary information with min, max, commission, currency, and period fields"},"location_structured":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Location Structured","description":"Structured location information with country, state_province, city, metro_area, is_remote, remote_scope, timezone_preference, and location_flexibility fields"},"share_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Share Id","description":"Associated practice share ID for interview links"},"screening_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Screening Id","description":"Associated screening ID for job screening"},"scenario_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scenario Id","description":"Associated scenario ID for interview scenarios"},"scenario_sim_interviewer_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scenario Sim Interviewer Id","description":"Selected AI interviewer ID for scenario simulation"},"scenario_sim_introduction_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scenario Sim Introduction Message","description":"AI-generated introduction message for scenario simulation"}},"type":"object","required":["id","pk","sk","entity_type","title","company","company_id","company_url","location","job_url","reference_id","posted_at","posted_at_iso"],"title":"JobResponse","description":"Response schema for job details"},"JobScreeningUpdate":{"properties":{"screening_id":{"type":"string","title":"Screening Id","description":"ID of the screening to associate with this job"}},"type":"object","required":["screening_id"],"title":"JobScreeningUpdate","description":"Request model for updating job screening association"},"JobStructureGenerationResponse":{"properties":{"basic_information":{"$ref":"#/components/schemas/BasicJobInformation","description":"Basic job information"},"job_description":{"type":"string","title":"Job Description","description":"Generated job description"},"requirements":{"items":{"type":"string"},"type":"array","title":"Requirements","description":"Job requirements"},"responsibilities":{"items":{"type":"string"},"type":"array","title":"Responsibilities","description":"Job responsibilities"},"skills":{"items":{"type":"string"},"type":"array","title":"Skills","description":"Required skills"}},"type":"object","required":["basic_information","job_description","requirements","responsibilities","skills"],"title":"JobStructureGenerationResponse","description":"Response schema for basic job structure generation"},"JobStudioContext":{"properties":{"activeJobId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Activejobid","description":"Currently active job ID"},"activeJob":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Activejob","description":"Active job details"},"availableJobs":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Availablejobs","description":"List of available jobs"},"isJobDetailOpen":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Isjobdetailopen","description":"Whether job detail modal is open"}},"type":"object","title":"JobStudioContext","description":"Job studio context information"},"JobUpdateRequest":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title","description":"Updated job title"},"company_logo":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Logo","description":"Updated company logo URL"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Updated job description"},"salary_range":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Salary Range","description":"Updated salary range as string"},"scenario_sim_interviewer_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scenario Sim Interviewer Id","description":"Updated AI interviewer ID for scenario simulation"},"scenario_sim_introduction_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scenario Sim Introduction Message","description":"Updated introduction message for scenario simulation"},"scenario_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scenario Id","description":"Updated scenario ID for job"}},"type":"object","title":"JobUpdateRequest","description":"Request schema for updating job details"},"LatestScreenDescriptionResponse":{"properties":{"sandbox_id":{"type":"string","title":"Sandbox Id","description":"Sandbox ID"},"description":{"type":"string","title":"Description","description":"LLM description of the screen"},"timestamp":{"type":"integer","title":"Timestamp","description":"Screenshot timestamp (epoch seconds)"},"age_seconds":{"type":"integer","title":"Age Seconds","description":"Age of the screen description in seconds"},"screen_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Screen Hash","description":"Perceptual hash of the screenshot"},"screenshot_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Screenshot Url","description":"URL to full screenshot"},"thumbnail_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail Url","description":"URL to thumbnail"},"processing_time_ms":{"type":"integer","title":"Processing Time Ms","description":"LLM processing time in milliseconds","default":0},"reused_cache":{"type":"boolean","title":"Reused Cache","description":"Whether description was reused from cache","default":false}},"type":"object","required":["sandbox_id","description","timestamp","age_seconds"],"title":"LatestScreenDescriptionResponse","description":"Response model for latest screen description"},"LinkedInPersonaResponse":{"properties":{"persona":{"$ref":"#/components/schemas/InterviewerPersona","description":"Created persona"},"parsed_data":{"$ref":"#/components/schemas/ParsedResumeData","description":"Parsed resume data"}},"type":"object","required":["persona","parsed_data"],"title":"LinkedInPersonaResponse","description":"Response model for LinkedIn persona creation with parsed data"},"LinkedInProfileData":{"properties":{"linkedin_url":{"type":"string","title":"Linkedin Url","description":"LinkedIn profile URL"},"profile_data":{"type":"string","title":"Profile Data","description":"Plain text resume/profile data"}},"type":"object","required":["linkedin_url","profile_data"],"title":"LinkedInProfileData","description":"LinkedIn profile data for persona creation"},"LogoDisplaySettings":{"properties":{"has_text_in_logo":{"type":"boolean","title":"Has Text In Logo","description":"Does logo image include company name?","default":false},"preferred_background":{"type":"string","enum":["light","dark","none"],"title":"Preferred Background","description":"Background for logo container","default":"light"}},"type":"object","title":"LogoDisplaySettings","description":"Logo display metadata for frontend rendering"},"MetricReorderItem":{"properties":{"metric_id":{"type":"string","minLength":1,"title":"Metric Id","description":"Metric ID to reorder"},"priority":{"type":"integer","minimum":0.0,"title":"Priority","description":"New priority order (lower numbers appear first)"}},"type":"object","required":["metric_id","priority"],"title":"MetricReorderItem","description":"Single metric reorder item"},"MetricUpdateAndReorderItem":{"properties":{"metric_id":{"type":"string","minLength":1,"title":"Metric Id","description":"Metric ID to update"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Human-readable name of the metric"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Detailed explanation of what this metric measures"},"sample_questions":{"anyOf":[{"items":{"type":"string"},"type":"array","minItems":1},{"type":"null"}],"title":"Sample Questions","description":"Example questions to guide AI in assessing this metric"},"weight":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Weight","description":"Importance weight for this metric"},"priority":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Priority","description":"Display order priority (lower numbers appear first)"}},"type":"object","required":["metric_id"],"title":"MetricUpdateAndReorderItem","description":"Single metric update and reorder item"},"MojoScoreRange":{"type":"string","enum":["80-100","60-79","40-59","0-39"],"title":"MojoScoreRange","description":"Enum for Mojo score filtering"},"MultipartUploadAbortRequest":{"properties":{"file_id":{"type":"string","title":"File Id","description":"Unique identifier for the file"},"upload_id":{"type":"string","title":"Upload Id","description":"Upload ID for the multipart upload"}},"type":"object","required":["file_id","upload_id"],"title":"MultipartUploadAbortRequest","description":"Request model for aborting a multipart upload"},"MultipartUploadCompleteRequest":{"properties":{"file_id":{"type":"string","title":"File Id","description":"Unique identifier for the file"},"upload_id":{"type":"string","title":"Upload Id","description":"Upload ID for the multipart upload"},"parts":{"items":{"$ref":"#/components/schemas/UploadedPart"},"type":"array","title":"Parts","description":"List of uploaded parts"},"list_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"List Id","description":"List ID to add the file to"},"file_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Name","description":"Original name of the file"},"file_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"File Size","description":"Size of the file in bytes"},"content_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Type","description":"MIME type of the file"}},"type":"object","required":["file_id","upload_id","parts"],"title":"MultipartUploadCompleteRequest","description":"Request model for completing a multipart upload"},"MultipartUploadInitRequest":{"properties":{"file_name":{"type":"string","title":"File Name","description":"Name of the file"},"content_type":{"type":"string","title":"Content Type","description":"MIME type of the file"}},"type":"object","required":["file_name","content_type"],"title":"MultipartUploadInitRequest","description":"Request model for initiating a multipart upload"},"MultipartUploadInitResponse":{"properties":{"upload_id":{"type":"string","title":"Upload Id","description":"Upload ID for the multipart upload"},"file_id":{"type":"string","title":"File Id","description":"Unique identifier for the file"},"key":{"type":"string","title":"Key","description":"S3 key for the file"}},"type":"object","required":["upload_id","file_id","key"],"title":"MultipartUploadInitResponse","description":"Response model for initiating a multipart upload"},"OnboardingStatus":{"properties":{"needs_onboarding":{"type":"boolean","title":"Needs Onboarding","description":"Whether user needs to complete onboarding"},"has_company":{"type":"boolean","title":"Has Company","description":"Whether user belongs to a company"},"completed_steps":{"items":{"type":"string"},"type":"array","title":"Completed Steps","description":"List of completed onboarding steps"},"next_step":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Step","description":"Next step in onboarding process"},"available_companies":{"anyOf":[{"items":{"$ref":"#/components/schemas/CompanyOption"},"type":"array"},{"type":"null"}],"title":"Available Companies","description":"Companies user can join"}},"type":"object","required":["needs_onboarding","has_company","completed_steps"],"title":"OnboardingStatus","description":"User onboarding status"},"PaginationInfo":{"properties":{"total":{"type":"integer","title":"Total","description":"Total number of items"},"page":{"type":"integer","title":"Page","description":"Current page number"},"limit":{"type":"integer","title":"Limit","description":"Items per page"},"total_pages":{"type":"integer","title":"Total Pages","description":"Total number of pages"}},"type":"object","required":["total","page","limit","total_pages"],"title":"PaginationInfo","description":"Pagination information"},"ParsedResumeData":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Candidate's full name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","description":"Candidate's email address"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone","description":"Candidate's phone number"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary","description":"Professional summary or objective"},"skills":{"items":{"type":"string"},"type":"array","title":"Skills","description":"List of skills"},"experience":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Experience","description":"Work experience"},"education":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Education","description":"Education history"},"certifications":{"items":{"type":"string"},"type":"array","title":"Certifications","description":"Certifications"},"languages":{"items":{"type":"string"},"type":"array","title":"Languages","description":"Languages spoken"},"years_experience":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Years Experience","description":"Total years of experience"},"industries":{"items":{"type":"string"},"type":"array","title":"Industries","description":"Industries"}},"type":"object","title":"ParsedResumeData","description":"Parsed resume data from text analysis"},"PatientProfile":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"name":{"type":"string","title":"Name"},"age":{"type":"integer","title":"Age"},"gender":{"type":"string","title":"Gender"},"conditions":{"items":{"type":"string"},"type":"array","title":"Conditions","default":[]},"personality":{"type":"string","title":"Personality"},"communication_style":{"type":"string","title":"Communication Style"},"scenario_context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scenario Context"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"voice_settings":{"anyOf":[{"$ref":"#/components/schemas/VoiceSettingsModel"},{"type":"null"}]}},"type":"object","required":["name","age","gender","personality","communication_style"],"title":"PatientProfile","description":"Patient profile for AI patient persona"},"PersonaAnalytics":{"properties":{"persona_id":{"type":"string","title":"Persona Id","description":"Persona identifier"},"total_interviews":{"type":"integer","title":"Total Interviews","description":"Total interviews"},"avg_rating":{"type":"number","title":"Avg Rating","description":"Average rating"},"completion_rate":{"type":"number","title":"Completion Rate","description":"Completion rate"},"date_range":{"type":"string","title":"Date Range","description":"Date range for analytics"},"created_at":{"type":"string","title":"Created At","description":"Analytics generation timestamp"}},"type":"object","required":["persona_id","total_interviews","avg_rating","completion_rate","date_range","created_at"],"title":"PersonaAnalytics","description":"Persona analytics response"},"PersonaDetails":{"properties":{"background":{"type":"string","title":"Background","description":"Persona background story"},"expertise":{"items":{"type":"string"},"type":"array","title":"Expertise","description":"Areas of expertise"},"interview_style":{"type":"string","title":"Interview Style","description":"Interview style description"},"years_experience":{"type":"integer","title":"Years Experience","description":"Years of experience"},"industries":{"items":{"type":"string"},"type":"array","title":"Industries","description":"Industry experience"}},"type":"object","required":["background","expertise","interview_style","years_experience","industries"],"title":"PersonaDetails","description":"Detailed persona information"},"PersonaStats":{"properties":{"total_interviews":{"type":"integer","title":"Total Interviews","description":"Total interviews conducted","default":0},"avg_rating":{"type":"number","title":"Avg Rating","description":"Average rating","default":0.0},"completion_rate":{"type":"number","title":"Completion Rate","description":"Completion rate percentage","default":0.0}},"type":"object","title":"PersonaStats","description":"Persona performance statistics"},"PipelineColumn":{"properties":{"stage":{"$ref":"#/components/schemas/CandidateStage","description":"Pipeline stage"},"name":{"type":"string","title":"Name","description":"Display name for the stage"},"count":{"type":"integer","title":"Count","description":"Number of candidates in this stage"},"candidates":{"items":{"$ref":"#/components/schemas/Candidate-Output"},"type":"array","title":"Candidates","description":"Candidates in this stage"}},"type":"object","required":["stage","name","count","candidates"],"title":"PipelineColumn","description":"Pipeline column model for Kanban view"},"PipelineConfig":{"properties":{"confidence_threshold":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Confidence Threshold","description":"Confidence threshold for gap analysis","default":0.7},"max_enrichment_attempts":{"type":"integer","maximum":5.0,"minimum":1.0,"title":"Max Enrichment Attempts","description":"Maximum enrichment attempts","default":2},"notification_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notification Email","description":"Email for pipeline completion notifications"}},"type":"object","title":"PipelineConfig","description":"Configuration for the evaluation pipeline"},"PipelineMetrics":{"properties":{"total_candidates":{"type":"integer","title":"Total Candidates","description":"Total number of candidates"},"new_candidates":{"type":"integer","title":"New Candidates","description":"Number of new candidates"},"candidates_by_stage":{"additionalProperties":{"type":"integer"},"type":"object","title":"Candidates By Stage","description":"Candidates count by stage"},"conversion_rates":{"additionalProperties":{"type":"number"},"type":"object","title":"Conversion Rates","description":"Conversion rates between stages"},"average_time_per_stage":{"additionalProperties":{"type":"number"},"type":"object","title":"Average Time Per Stage","description":"Average time spent in each stage (days)"},"rejected_candidates":{"type":"integer","title":"Rejected Candidates","description":"Number of rejected candidates"},"hired_candidates":{"type":"integer","title":"Hired Candidates","description":"Number of hired candidates"}},"type":"object","required":["total_candidates","new_candidates","candidates_by_stage","conversion_rates","average_time_per_stage","rejected_candidates","hired_candidates"],"title":"PipelineMetrics","description":"Pipeline metrics model"},"PipelineResponse":{"properties":{"columns":{"items":{"$ref":"#/components/schemas/PipelineColumn"},"type":"array","title":"Columns","description":"Pipeline columns"},"total_candidates":{"type":"integer","title":"Total Candidates","description":"Total number of candidates"}},"type":"object","required":["columns","total_candidates"],"title":"PipelineResponse","description":"Pipeline response for Kanban board"},"PracticeSessionCreate":{"properties":{"practice_session_id":{"type":"string","title":"Practice Session Id"},"session_type":{"type":"string","enum":["live","upload"],"title":"Session Type","description":"Type of session: live or upload","default":"live"},"audio_s3_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audio S3 Url","description":"S3 URL for uploaded audio file (required for upload sessions)"},"status":{"$ref":"#/components/schemas/PracticeStatus","default":"CREATED"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"scenario_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scenario Id","description":"Scenario ID for the practice session"}},"type":"object","required":["practice_session_id"],"title":"PracticeSessionCreate","description":"Request model for creating a practice session record"},"PracticeSessionListResponse":{"properties":{"practice_sessions":{"items":{"$ref":"#/components/schemas/PracticeSessionRecord"},"type":"array","title":"Practice Sessions"},"count":{"type":"integer","title":"Count"},"last_evaluated_key":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Last Evaluated Key"},"has_more":{"type":"boolean","title":"Has More"}},"type":"object","required":["practice_sessions","count","has_more"],"title":"PracticeSessionListResponse","description":"Response model for listing practice sessions"},"PracticeSessionRecord":{"properties":{"practice_session_id":{"type":"string","title":"Practice Session Id"},"share_id":{"type":"string","title":"Share Id"},"scenario_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scenario Id","description":"Scenario ID for the practice session"},"created_at":{"type":"string","title":"Created At"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"},"status":{"type":"string","title":"Status"},"session_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Type","description":"Type of session: live or upload","default":"live"},"audio_s3_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audio S3 Url","description":"S3 URL for uploaded audio file"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"difficulty_level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Difficulty Level"},"user_feedback":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Feedback"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"evaluation_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Evaluation Status"},"evaluation_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Evaluation Summary"},"overall_score":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Overall Score"},"manager_score":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Manager Score"},"duration_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Seconds"},"average_wpm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Average Wpm"},"speech_patterns":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Speech Patterns"},"sandbox_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sandbox Id","description":"E2B sandbox ID associated with this session"},"screen_recording_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Screen Recording Url","description":"S3 URL for screen recording video"},"screen_recording_duration":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Screen Recording Duration","description":"Duration of screen recording in seconds"},"screen_recording_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Screen Recording Status","description":"Status of screen recording (uploading, processing, completed, failed)"},"screen_recording_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Screen Recording Metadata","description":"Screen recording metadata (resolution, file_size, etc.)"},"highlights_s3_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Highlights S3 Url","description":"S3 URL for highlights JSON file"}},"type":"object","required":["practice_session_id","share_id","created_at","status"],"title":"PracticeSessionRecord","description":"Response model for a practice session record"},"PracticeSessionRecordingsResponse":{"properties":{"practice_session_id":{"type":"string","title":"Practice Session Id","description":"ID of the practice session"},"recordings":{"items":{"$ref":"#/components/schemas/VideoRecordingResponse"},"type":"array","title":"Recordings","description":"List of video recordings"},"count":{"type":"integer","title":"Count","description":"Number of recordings found"}},"type":"object","required":["practice_session_id","recordings","count"],"title":"PracticeSessionRecordingsResponse","description":"Response model for getting all recordings for a practice session"},"PracticeSessionStatusUpdate":{"properties":{"status":{"$ref":"#/components/schemas/PracticeStatus"}},"type":"object","required":["status"],"title":"PracticeSessionStatusUpdate","description":"Request model for updating practice session status"},"PracticeShareLinkCreate":{"properties":{"share_id":{"type":"string","title":"Share Id","description":"Unique identifier for this share link, generated by caller"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Display name for this share link (e.g., 'AI Screening for Software Engineer')"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","description":"Email of the recipient"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name","description":"Display name for the recipient"},"expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expires At","description":"Expiration timestamp (null for no expiration)"},"custom_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Message","description":"Custom message to include with the invitation"},"system_message":{"type":"string","title":"System Message","description":"System message in plain text format"},"welcome_message":{"type":"string","title":"Welcome Message","description":"Welcome message in plain text format"},"guidance_message1":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guidance Message1","description":"Personalized interviewer introduction message"},"guidance_message2":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guidance Message2","description":"Guidance message for scenario simulation"},"customer_info":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Info","description":"Customer information in plain text format"},"product_info":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Product Info","description":"Product information in plain text format"},"grading_rubrics":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Grading Rubrics","description":"Grading rubrics in plain text format"},"goals":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Goals","description":"Goals in plain text format"},"stage_type":{"type":"string","title":"Stage Type","description":"Stage type: 'no_stage' or '4_stages'","default":"no_stage"},"persona_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Persona Id","description":"ID of the interviewer persona"},"job_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Id","description":"ID of the associated job"},"company_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Id","description":"ID of the company that owns this screening"},"interview_language":{"type":"string","title":"Interview Language","description":"Language code for content generation (en, ko, zh)","default":"en"}},"type":"object","required":["share_id","system_message","welcome_message"],"title":"PracticeShareLinkCreate","description":"Request model for creating a practice session share link"},"PracticeShareLinkResponse":{"properties":{"share_id":{"type":"string","title":"Share Id","description":"Unique identifier for this share link"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Display name for this share link (e.g., 'AI Screening for Software Engineer')"},"practice_session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Practice Session Id","description":"ID of the shared practice session"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","description":"Email of the recipient"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name","description":"Display name for the recipient"},"status":{"$ref":"#/components/schemas/ShareLinkStatus","description":"Current status of the share link"},"share_url":{"type":"string","title":"Share Url","description":"Full URL that can be shared"},"created_at":{"type":"string","title":"Created At","description":"Creation timestamp"},"expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expires At","description":"Expiration timestamp (null for no expiration)"},"used_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Used At","description":"When the link was used"},"custom_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Message","description":"Custom message included with the invitation"},"assessment_metrics_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Assessment Metrics Count","description":"Number of assessment metrics associated with this share"},"has_assessment_metrics":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Assessment Metrics","description":"Quick check if assessment metrics exist"},"metrics_prompts_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Metrics Prompts Status","description":"Status of evaluation prompts generation: 'pending', 'processing', 'completed', 'failed'"},"metrics_prompts_last_generated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Metrics Prompts Last Generated At","description":"ISO timestamp when evaluation prompts were last generated"},"metrics_prompts_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Metrics Prompts Error","description":"Error message if prompts generation failed"},"has_system_prompt":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has System Prompt","description":"Quick check if system_message exists"},"system_prompt_last_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Prompt Last Updated At","description":"ISO timestamp when system_message was last updated"},"system_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Message","description":"System message in plain text format"},"welcome_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Welcome Message","description":"Welcome message in plain text format"},"guidance_message1":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guidance Message1","description":"Personalized interviewer introduction message"},"guidance_message2":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guidance Message2","description":"Guidance message for scenario simulation"},"customer_info":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Info","description":"Customer information in plain text format"},"product_info":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Product Info","description":"Product information in plain text format"},"grading_rubrics":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Grading Rubrics","description":"Grading rubrics in plain text format"},"goals":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Goals","description":"Goals in plain text format"},"stage_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stage Type","description":"Stage type: 'no_stage' or '4_stages'"},"persona_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Persona Id","description":"ID of the interviewer persona"},"job_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Id","description":"ID of the associated job"},"company_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Id","description":"ID of the company that owns this screening"},"interview_language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Interview Language","description":"Language code for content generation (en, ko, zh)","default":"en"},"entity_type":{"$ref":"#/components/schemas/EntityType","description":"Entity type","default":"PRACTICE_SHARE_LINK"}},"type":"object","required":["share_id","status","share_url","created_at"],"title":"PracticeShareLinkResponse","description":"Response model for practice session share links"},"PracticeShareLinkUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Name of the share link"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","description":"Email of the recipient"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name","description":"Display name for the recipient"},"expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expires At","description":"Expiration timestamp (null for no expiration)"},"custom_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Message","description":"Custom message to include with the invitation"},"system_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Message","description":"System message in plain text format"},"welcome_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Welcome Message","description":"Welcome message in plain text format"},"guidance_message1":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guidance Message1","description":"Personalized interviewer introduction message"},"guidance_message2":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guidance Message2","description":"Guidance message for scenario simulation"},"customer_info":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Info","description":"Customer information in plain text format"},"product_info":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Product Info","description":"Product information in plain text format"},"grading_rubrics":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Grading Rubrics","description":"Grading rubrics in plain text format"},"goals":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Goals","description":"Goals in plain text format"},"stage_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stage Type","description":"Stage type: 'no_stage' or '4_stages'"},"persona_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Persona Id","description":"ID of the interviewer persona"},"job_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Id","description":"ID of the associated job"},"interview_language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Interview Language","description":"Language code for content generation (en, ko, zh)"}},"type":"object","title":"PracticeShareLinkUpdate","description":"Request model for updating a practice session share link"},"PracticeStatus":{"type":"string","enum":["CREATED","SCHEDULED","IN_PROGRESS","PAUSED","COMPLETED","REVIEWED","ARCHIVED","CANCELLED"],"title":"PracticeStatus"},"PresignedUrlPart":{"properties":{"url":{"type":"string","title":"Url","description":"Presigned URL for uploading the part"},"part_number":{"type":"integer","title":"Part Number","description":"Part number"}},"type":"object","required":["url","part_number"],"title":"PresignedUrlPart","description":"Model for a presigned URL for a part of a multipart upload"},"ProfileData":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"User name"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role","description":"User role"}},"type":"object","title":"ProfileData","description":"Profile data during onboarding"},"RankingCriteria":{"properties":{"weights":{"additionalProperties":{"type":"number"},"type":"object","title":"Weights","description":"Weights for different evaluation criteria (must sum to 1.0)","default":{"experience":0.3,"skills":0.3,"education":0.2,"cultural_fit":0.2}},"prioritize_recent_experience":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Prioritize Recent Experience","description":"Whether to prioritize recent experience","default":true},"minimum_years_experience":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Minimum Years Experience","description":"Minimum years of experience required","default":0}},"type":"object","title":"RankingCriteria","description":"Criteria for ranking candidates"},"RecentExecutionsResult":{"properties":{"recent_executions":{"items":{"$ref":"#/components/schemas/ExecutionSummary"},"type":"array","title":"Recent Executions","description":"List of recent executions"},"total_count":{"type":"integer","title":"Total Count","description":"Total number of executions returned"}},"type":"object","required":["recent_executions","total_count"],"title":"RecentExecutionsResult","description":"Result of listing recent executions"},"RecordingResponse":{"properties":{"playlist_url":{"type":"string","title":"Playlist Url","description":"Direct URL to HLS playlist"},"sandbox_id":{"type":"string","title":"Sandbox Id","description":"Sandbox ID"},"format":{"type":"string","title":"Format","description":"Recording format","default":"hls"}},"type":"object","required":["playlist_url","sandbox_id"],"title":"RecordingResponse","description":"Response model for recording URL"},"Referral":{"properties":{"id":{"type":"string","title":"Id","description":"Unique identifier for the referral"},"email":{"type":"string","format":"email","title":"Email","description":"Email address of the person being referred"},"company_id":{"type":"string","title":"Company Id","description":"ID of the company the referral is for"},"referrer_id":{"type":"string","title":"Referrer Id","description":"ID of the user who made the referral"},"referrer_name":{"type":"string","title":"Referrer Name","description":"Name of the person making the referral"},"expires_at":{"type":"string","title":"Expires At","description":"ISO timestamp when referral expires"},"status":{"type":"string","title":"Status","description":"Current status of the referral","default":"pending"},"personal_message":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Personal Message","description":"Personal message from referrer"},"entity_type":{"type":"string","const":"REFERRAL","title":"Entity Type","description":"Entity type, always REFERRAL","default":"REFERRAL"},"created_at":{"type":"string","title":"Created At","description":"ISO timestamp when referral was created"},"updated_at":{"type":"string","title":"Updated At","description":"ISO timestamp when referral was last updated"},"accepted_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Accepted At","description":"ISO timestamp when referral was accepted"}},"type":"object","required":["id","email","company_id","referrer_id","referrer_name","expires_at","created_at","updated_at"],"title":"Referral","description":"Base referral model"},"ReferralCreate":{"properties":{"email":{"type":"string","format":"email","title":"Email","description":"Email address to refer"},"expires_in_days":{"anyOf":[{"type":"integer","maximum":30.0,"minimum":1.0},{"type":"null"}],"title":"Expires In Days","description":"Days until expiration (1-30)","default":7},"personal_message":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Personal Message","description":"Personal message"}},"type":"object","required":["email"],"title":"ReferralCreate","description":"Referral creation request model"},"ReferralListItem":{"properties":{"id":{"type":"string","title":"Id","description":"Referral ID"},"email":{"type":"string","title":"Email","description":"Referee email"},"company_id":{"type":"string","title":"Company Id","description":"Company ID"},"referrer_id":{"type":"string","title":"Referrer Id","description":"Referrer user ID"},"expires_at":{"type":"string","title":"Expires At","description":"ISO timestamp of expiration"},"status":{"type":"string","title":"Status","description":"Current status"},"created_at":{"type":"string","title":"Created At","description":"ISO timestamp of creation"},"updated_at":{"type":"string","title":"Updated At","description":"ISO timestamp of last update"},"personal_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Personal Message","description":"Personal message from referrer"},"referrer_name":{"type":"string","title":"Referrer Name","description":"Name of the person making the referral"},"accepted_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Accepted At","description":"ISO timestamp of acceptance"}},"type":"object","required":["id","email","company_id","referrer_id","expires_at","status","created_at","updated_at","referrer_name"],"title":"ReferralListItem","description":"Referral list item"},"ReferralListResponse":{"properties":{"referrals":{"items":{"$ref":"#/components/schemas/ReferralListItem"},"type":"array","title":"Referrals","description":"List of referrals"},"pagination":{"$ref":"#/components/schemas/PaginationInfo"},"summary":{"$ref":"#/components/schemas/ReferralSummary","description":"Summary statistics"}},"type":"object","required":["referrals","pagination","summary"],"title":"ReferralListResponse","description":"List referrals response"},"ReferralResponse":{"properties":{"referral":{"$ref":"#/components/schemas/Referral","description":"Referral details"}},"type":"object","required":["referral"],"title":"ReferralResponse","description":"Single referral response"},"ReferralSummary":{"properties":{"total":{"type":"integer","title":"Total","description":"Total referrals","default":0},"pending":{"type":"integer","title":"Pending","description":"Pending referrals","default":0},"accepted":{"type":"integer","title":"Accepted","description":"Accepted referrals","default":0},"expired":{"type":"integer","title":"Expired","description":"Expired referrals","default":0},"revoked":{"type":"integer","title":"Revoked","description":"Revoked referrals","default":0}},"type":"object","title":"ReferralSummary","description":"Summary statistics for referrals"},"RemoveFileFromListRequest":{"properties":{"file_id":{"type":"string","title":"File Id"},"list_id":{"type":"string","title":"List Id"}},"type":"object","required":["file_id","list_id"],"title":"RemoveFileFromListRequest","description":"Request model for removing a file from a list"},"ResumeListResponse":{"properties":{"resumes":{"items":{"$ref":"#/components/schemas/ResumeMetadata"},"type":"array","title":"Resumes","description":"List of resumes uploaded by email"}},"type":"object","title":"ResumeListResponse","description":"Response model for listing resumes by email"},"ResumeMetadata":{"properties":{"file_name":{"type":"string","title":"File Name","description":"Name of the resume file"},"s3_key":{"type":"string","title":"S3 Key","description":"S3 key where the file is stored"},"bucket_name":{"type":"string","title":"Bucket Name","description":"Name of the S3 bucket"},"uploaded_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Uploaded At","description":"Unix timestamp when the resume was uploaded"},"resume_data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resume Data","description":"Extracted resume data"}},"type":"object","required":["file_name","s3_key","bucket_name"],"title":"ResumeMetadata","description":"Model for resume metadata stored by email"},"SalaryRange":{"properties":{"min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min","description":"Minimum salary"},"max":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max","description":"Maximum salary"},"commission":{"type":"boolean","title":"Commission","description":"Whether commission is included","default":false},"currency":{"type":"string","title":"Currency","description":"Currency code","default":"USD"},"period":{"type":"string","title":"Period","description":"Salary period","default":"ANNUAL"}},"type":"object","title":"SalaryRange","description":"Salary range model"},"SandboxCreate":{"properties":{"share_id":{"type":"string","title":"Share Id","description":"Share ID for the practice session"},"practice_session_id":{"type":"string","title":"Practice Session Id","description":"Practice session ID to associate with this sandbox"},"template_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Id","description":"E2B template ID to use","default":"k0wmnzir0zuzye6dndlw"},"timeout":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Timeout","description":"Sandbox timeout in seconds","default":3600},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Additional metadata for the sandbox"},"region":{"anyOf":[{"type":"string","enum":["us","asia"]},{"type":"null"}],"title":"Region","description":"Region for sandbox deployment (us or asia)","default":"us"}},"type":"object","required":["share_id","practice_session_id"],"title":"SandboxCreate","description":"Request model for creating a sandbox"},"SandboxListResponse":{"properties":{"active_sandboxes":{"items":{},"type":"array","title":"Active Sandboxes","description":"List of active sandbox IDs"},"count":{"type":"integer","title":"Count","description":"Number of active sandboxes"}},"type":"object","required":["active_sandboxes","count"],"title":"SandboxListResponse","description":"Response model for listing active sandboxes"},"SandboxPauseResponse":{"properties":{"sandbox_id":{"type":"string","title":"Sandbox Id","description":"Sandbox ID"},"status":{"type":"string","title":"Status","description":"Sandbox status after pause"},"message":{"type":"string","title":"Message","description":"Status message"}},"type":"object","required":["sandbox_id","status","message"],"title":"SandboxPauseResponse","description":"Response model for sandbox pause operation"},"SandboxResponse":{"properties":{"sandbox_id":{"type":"string","title":"Sandbox Id","description":"Unique identifier of the sandbox"},"status":{"$ref":"#/components/schemas/SandboxStatus","description":"Current status of the sandbox"},"created_at":{"type":"string","title":"Created At","description":"Creation timestamp"},"template_id":{"type":"string","title":"Template Id","description":"E2B template ID used"},"timeout":{"type":"integer","title":"Timeout","description":"Sandbox timeout in seconds"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Additional metadata"},"stream_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stream Url","description":"VNC stream URL (WebSocket)"},"stream_auth_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stream Auth Key","description":"Authentication key for stream"},"server_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Server Name","description":"Server name for subsequent operations"}},"type":"object","required":["sandbox_id","status","created_at","template_id","timeout"],"title":"SandboxResponse","description":"Response model for sandbox operations"},"SandboxStatus":{"type":"string","enum":["creating","running","streaming","stopping","stopped","error"],"title":"SandboxStatus","description":"Status of the sandbox"},"SandboxType":{"type":"string","enum":["vnc","pdf","none"],"title":"SandboxType","description":"Sandbox type enumeration - determines which sandbox frame to display"},"SaveInterviewQuestionsRequest":{"properties":{"questions":{"items":{"$ref":"#/components/schemas/StoredInterviewQuestion"},"type":"array","title":"Questions","description":"List of interview questions to save"}},"type":"object","required":["questions"],"title":"SaveInterviewQuestionsRequest","description":"Request model for saving interview questions"},"SaveInterviewQuestionsResponse":{"properties":{"success":{"type":"boolean","title":"Success","description":"Whether the save operation was successful"}},"type":"object","required":["success"],"title":"SaveInterviewQuestionsResponse","description":"Response model for saving interview questions"},"Scenario":{"properties":{"id":{"type":"string","title":"Id","description":"Unique identifier for the scenario"},"title":{"type":"string","title":"Title","description":"Human-readable title of the scenario"},"summary":{"type":"string","title":"Summary","description":"Brief summary shown in admin scenario lists"},"type":{"$ref":"#/components/schemas/ScenarioType","description":"Type of scenario: conversation or action"},"group":{"type":"string","title":"Group","description":"Functional group this scenario belongs to"},"signals":{"items":{"type":"string"},"type":"array","title":"Signals","description":"List of signals/skills this scenario evaluates"},"task_objectives":{"items":{"type":"string"},"type":"array","title":"Task Objectives","description":"List of task objectives displayed as progress steps to candidates"},"estimated_duration":{"type":"integer","minimum":1.0,"title":"Estimated Duration","description":"Estimated duration in minutes"},"instruction":{"type":"string","title":"Instruction","description":"Detailed instructions for conducting the scenario"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Scenario context shown to candidates during interviews"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image","description":"URL or path to scenario image"},"enabled":{"type":"boolean","title":"Enabled","description":"Whether the scenario is currently enabled","default":true},"is_prebuilt":{"type":"boolean","title":"Is Prebuilt","description":"Whether this is a prebuilt scenario (always included in list results)","default":false},"version":{"type":"string","title":"Version","description":"Semantic version number for scenario version control (e.g., '0.0.1')","default":"0.0.1"},"sandbox_type":{"anyOf":[{"$ref":"#/components/schemas/SandboxType"},{"type":"null"}],"description":"Type of sandbox frame to display: 'vnc' for noVNC desktop, 'pdf' for PDF viewer, or 'none' for agent-only scenarios"},"pdf_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pdf Url","description":"URL to the PDF document when sandbox_type is 'pdf'"}},"type":"object","required":["id","title","summary","type","group","signals","task_objectives","estimated_duration","instruction"],"title":"Scenario","description":"Core scenario model"},"ScenarioAssignRequest":{"properties":{"scenario_id":{"type":"string","title":"Scenario Id","description":"Scenario ID from frontend library"}},"type":"object","required":["scenario_id"],"title":"ScenarioAssignRequest","description":"Request schema for assigning a scenario to a job"},"ScenarioCreate":{"properties":{"id":{"type":"string","title":"Id","description":"Unique identifier for the scenario"},"title":{"type":"string","title":"Title","description":"Human-readable title of the scenario"},"summary":{"type":"string","title":"Summary","description":"Brief summary shown in admin scenario lists"},"type":{"$ref":"#/components/schemas/ScenarioType","description":"Type of scenario: conversation or action"},"group":{"type":"string","title":"Group","description":"Functional group this scenario belongs to"},"signals":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Signals","description":"List of signals/skills this scenario evaluates"},"task_objectives":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Task Objectives","description":"List of task objectives displayed as progress steps to candidates"},"estimated_duration":{"type":"integer","minimum":1.0,"title":"Estimated Duration","description":"Estimated duration in minutes"},"instruction":{"type":"string","title":"Instruction","description":"Detailed instructions for conducting the scenario"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Scenario context shown to candidates during interviews"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image","description":"URL or path to scenario image"},"enabled":{"type":"boolean","title":"Enabled","description":"Whether the scenario is currently enabled","default":true},"is_prebuilt":{"type":"boolean","title":"Is Prebuilt","description":"Whether this is a prebuilt scenario (always included in list results)","default":false},"version":{"type":"string","title":"Version","description":"Semantic version number for scenario version control (e.g., '0.0.1')","default":"0.0.1"},"sandbox_type":{"anyOf":[{"$ref":"#/components/schemas/SandboxType"},{"type":"null"}],"description":"Type of sandbox frame to display: 'vnc' for noVNC desktop, 'pdf' for PDF viewer, or 'none' for agent-only scenarios"},"pdf_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pdf Url","description":"URL to the PDF document when sandbox_type is 'pdf'"}},"type":"object","required":["id","title","summary","type","group","signals","task_objectives","estimated_duration","instruction"],"title":"ScenarioCreate","description":"Request model for creating a new scenario"},"ScenarioIntroductionGenerationRequest":{"properties":{"interviewer_id":{"type":"string","title":"Interviewer Id","description":"Selected AI interviewer ID"},"scenario_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scenario Id","description":"Optional scenario ID if one is selected"}},"type":"object","required":["interviewer_id"],"title":"ScenarioIntroductionGenerationRequest","description":"Request schema for generating scenario simulation introduction message"},"ScenarioIntroductionGenerationResponse":{"properties":{"introduction_message":{"type":"string","title":"Introduction Message","description":"Generated introduction message for scenario simulation"}},"type":"object","required":["introduction_message"],"title":"ScenarioIntroductionGenerationResponse","description":"Response schema for generated scenario simulation introduction message"},"ScenarioIntroductionRegenerateRequest":{"properties":{},"type":"object","title":"ScenarioIntroductionRegenerateRequest","description":"Request schema for regenerating scenario simulation introduction message"},"ScenarioShareRequest":{"properties":{"scenario_template_id":{"type":"string","title":"Scenario Template Id","description":"ID of the scenario template to use"}},"type":"object","required":["scenario_template_id"],"title":"ScenarioShareRequest","description":"Request model for creating scenario share link"},"ScenarioType":{"type":"string","enum":["conversation","action"],"title":"ScenarioType","description":"Scenario type enumeration"},"ScenarioUpdate":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title","description":"Human-readable title of the scenario"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary","description":"Brief summary shown in admin scenario lists"},"type":{"anyOf":[{"$ref":"#/components/schemas/ScenarioType"},{"type":"null"}],"description":"Type of scenario: conversation or action"},"group":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Group","description":"Functional group this scenario belongs to"},"signals":{"anyOf":[{"items":{"type":"string"},"type":"array","minItems":1},{"type":"null"}],"title":"Signals","description":"List of signals/skills this scenario evaluates"},"task_objectives":{"anyOf":[{"items":{"type":"string"},"type":"array","minItems":1},{"type":"null"}],"title":"Task Objectives","description":"List of task objectives displayed as progress steps to candidates"},"estimated_duration":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Estimated Duration","description":"Estimated duration in minutes"},"instruction":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instruction","description":"Detailed instructions for conducting the scenario"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Scenario context shown to candidates during interviews"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image","description":"URL or path to scenario image"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled","description":"Whether the scenario is currently enabled"},"is_prebuilt":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Prebuilt","description":"Whether this is a prebuilt scenario (always included in list results)"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version","description":"Semantic version number for scenario version control (e.g., '0.0.1')"},"sandbox_type":{"anyOf":[{"$ref":"#/components/schemas/SandboxType"},{"type":"null"}],"description":"Type of sandbox frame to display: 'vnc' for noVNC desktop, 'pdf' for PDF viewer, or 'none' for agent-only scenarios"},"pdf_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pdf Url","description":"URL to the PDF document when sandbox_type is 'pdf'"}},"type":"object","title":"ScenarioUpdate","description":"Request model for updating a scenario"},"ScenariosByGroupResponse":{"properties":{"general":{"items":{"$ref":"#/components/schemas/Scenario"},"type":"array","title":"General","description":"General scenarios"},"engineering":{"items":{"$ref":"#/components/schemas/Scenario"},"type":"array","title":"Engineering","description":"Engineering scenarios"},"sales":{"items":{"$ref":"#/components/schemas/Scenario"},"type":"array","title":"Sales","description":"Sales scenarios"},"design":{"items":{"$ref":"#/components/schemas/Scenario"},"type":"array","title":"Design","description":"Design scenarios"},"marketing":{"items":{"$ref":"#/components/schemas/Scenario"},"type":"array","title":"Marketing","description":"Marketing scenarios"},"product":{"items":{"$ref":"#/components/schemas/Scenario"},"type":"array","title":"Product","description":"Product scenarios"},"count":{"type":"integer","title":"Count","description":"Total number of scenarios across all groups"}},"type":"object","required":["count"],"title":"ScenariosByGroupResponse","description":"Response model for scenarios grouped by functional area"},"ScenariosResponse":{"properties":{"scenarios":{"items":{"$ref":"#/components/schemas/Scenario"},"type":"array","title":"Scenarios"},"count":{"type":"integer","title":"Count","description":"Total number of scenarios returned"}},"type":"object","required":["scenarios","count"],"title":"ScenariosResponse","description":"Response model for multiple scenarios"},"ScreenDescriptionRequest":{"properties":{"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt","description":"Custom prompt for LLM","default":"Describe what you see on this screen"},"include_screenshot":{"type":"boolean","title":"Include Screenshot","description":"Include screenshot in response","default":true}},"type":"object","title":"ScreenDescriptionRequest","description":"Request model for screen description"},"ScreenDescriptionResponse":{"properties":{"description":{"type":"string","title":"Description","description":"LLM description of the screen"},"screenshot_base64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Screenshot Base64","description":"Base64 encoded screenshot if requested"},"timestamp":{"type":"string","title":"Timestamp","description":"Description timestamp"}},"type":"object","required":["description","timestamp"],"title":"ScreenDescriptionResponse","description":"Response model for screen description"},"ScreenItem":{"properties":{"timestamp":{"type":"integer","title":"Timestamp","description":"Screenshot timestamp (epoch seconds)"},"description":{"type":"string","title":"Description","description":"LLM description of the screen"},"thumbnail_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail Url","description":"URL to thumbnail"},"screenshot_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Screenshot Url","description":"URL to full screenshot"},"screen_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Screen Hash","description":"Perceptual hash of the screenshot"},"processing_time_ms":{"type":"integer","title":"Processing Time Ms","description":"LLM processing time in milliseconds","default":0},"reused":{"type":"boolean","title":"Reused","description":"Whether description was reused from cache","default":false}},"type":"object","required":["timestamp","description"],"title":"ScreenItem","description":"Individual screen item in timeline"},"ScreenRecordingComplete":{"properties":{"s3_url":{"type":"string","title":"S3 Url","description":"Final S3 URL of the uploaded video"},"duration_seconds":{"type":"integer","title":"Duration Seconds","description":"Duration of the video in seconds"},"file_size":{"type":"integer","title":"File Size","description":"Final file size in bytes"},"resolution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolution","description":"Video resolution"},"thumbnail_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail Url","description":"URL to video thumbnail"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Additional video metadata"}},"type":"object","required":["s3_url","duration_seconds","file_size"],"title":"ScreenRecordingComplete","description":"Request model for marking screen recording as complete"},"ScreenRecordingMetadata":{"properties":{"practice_session_id":{"type":"string","title":"Practice Session Id","description":"Practice session ID"},"screen_recording_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Screen Recording Url","description":"S3 URL for the screen recording"},"screen_recording_duration":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Screen Recording Duration","description":"Duration in seconds"},"screen_recording_status":{"type":"string","title":"Screen Recording Status","description":"Current status of the recording"},"screen_recording_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Screen Recording Metadata","description":"Video metadata (resolution, file_size, etc.)"},"created_at":{"type":"string","title":"Created At","description":"When the recording was created"},"updated_at":{"type":"string","title":"Updated At","description":"When the recording was last updated"}},"type":"object","required":["practice_session_id","screen_recording_status","created_at","updated_at"],"title":"ScreenRecordingMetadata","description":"Response model for screen recording metadata"},"ScreenRecordingStatusUpdate":{"properties":{"status":{"type":"string","title":"Status","description":"New status for the screen recording"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Additional metadata to update"}},"type":"object","required":["status"],"title":"ScreenRecordingStatusUpdate","description":"Request model for updating screen recording status"},"ScreenRecordingUpload":{"properties":{"file_name":{"type":"string","title":"File Name","description":"Name of the video file"},"file_size":{"type":"integer","title":"File Size","description":"Size of the video file in bytes"},"content_type":{"type":"string","title":"Content Type","description":"MIME type of the video file"},"duration_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Seconds","description":"Duration of the video in seconds"},"resolution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolution","description":"Video resolution (e.g., '1920x1080')"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Additional video metadata"}},"type":"object","required":["file_name","file_size","content_type"],"title":"ScreenRecordingUpload","description":"Request model for uploading screen recording"},"ScreenRecordingUploadResponse":{"properties":{"upload_url":{"type":"string","title":"Upload Url","description":"Pre-signed URL for uploading the video file"},"upload_id":{"type":"string","title":"Upload Id","description":"Unique identifier for this upload"},"expires_at":{"type":"string","title":"Expires At","description":"When the upload URL expires"}},"type":"object","required":["upload_url","upload_id","expires_at"],"title":"ScreenRecordingUploadResponse","description":"Response model for screen recording upload initiation"},"ScreenTimelineResponse":{"properties":{"sandbox_id":{"type":"string","title":"Sandbox Id","description":"Sandbox ID"},"screens":{"items":{"$ref":"#/components/schemas/ScreenItem"},"type":"array","title":"Screens","description":"List of screen captures"},"count":{"type":"integer","title":"Count","description":"Number of screens returned"},"start_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Start Time","description":"Start timestamp filter"},"end_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"End Time","description":"End timestamp filter"}},"type":"object","required":["sandbox_id","screens","count"],"title":"ScreenTimelineResponse","description":"Response model for screen timeline"},"ScreeningCreateRequest":{"properties":{"share_id":{"type":"string","title":"Share Id","description":"Unique identifier for this screening"},"job_id":{"type":"string","title":"Job Id","description":"ID of the job this screening is for"},"persona_id":{"type":"string","title":"Persona Id","description":"ID of the interviewer persona to use"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","description":"Email of the candidate"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Display name for this screening (e.g., 'AI Screening for Software Engineer')"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name","description":"Display name for the candidate"},"expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expires At","description":"Expiration timestamp (null for no expiration)"},"custom_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Message","description":"Custom message to include with the invitation"},"screening_goals":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Screening Goals","description":"Specific goals for this screening"},"evaluation_metrics":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Evaluation Metrics","description":"Specific evaluation criteria"},"stage_type":{"type":"string","title":"Stage Type","description":"Stage type: 'no_stage' or '4_stages'","default":"no_stage"},"interview_language":{"type":"string","title":"Interview Language","description":"Language code for content generation (en, ko, zh)","default":"en"},"system_message_template":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Message Template","description":"Custom system message template"},"welcome_message_template":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Welcome Message Template","description":"Custom welcome message template"}},"type":"object","required":["share_id","job_id","persona_id"],"title":"ScreeningCreateRequest","description":"Request model for creating an AI screening with job and persona integration."},"ScreenshotItem":{"properties":{"timestamp":{"type":"integer","title":"Timestamp","description":"Screenshot timestamp (epoch seconds)"},"s3_key":{"type":"string","title":"S3 Key","description":"S3 key for the screenshot"},"screenshot_url":{"type":"string","title":"Screenshot Url","description":"Direct URL for downloading the screenshot"},"file_size":{"type":"integer","title":"File Size","description":"File size in bytes"},"last_modified":{"type":"string","title":"Last Modified","description":"Last modified timestamp (ISO format)"}},"type":"object","required":["timestamp","s3_key","screenshot_url","file_size","last_modified"],"title":"ScreenshotItem","description":"Individual screenshot item from S3"},"ScreenshotResponse":{"properties":{"screenshot_base64":{"type":"string","title":"Screenshot Base64","description":"Base64 encoded screenshot"},"format":{"type":"string","title":"Format","description":"Image format (png, jpeg)"},"timestamp":{"type":"string","title":"Timestamp","description":"Screenshot timestamp"}},"type":"object","required":["screenshot_base64","format","timestamp"],"title":"ScreenshotResponse","description":"Response model for screenshot operations"},"ScreenshotsListResponse":{"properties":{"sandbox_id":{"type":"string","title":"Sandbox Id","description":"Sandbox ID"},"screenshots":{"items":{"$ref":"#/components/schemas/ScreenshotItem"},"type":"array","title":"Screenshots","description":"List of screenshots"},"count":{"type":"integer","title":"Count","description":"Number of screenshots returned"},"start_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Start Time","description":"Start timestamp filter"},"end_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"End Time","description":"End timestamp filter"}},"type":"object","required":["sandbox_id","screenshots","count"],"title":"ScreenshotsListResponse","description":"Response model for listing screenshots from S3"},"ShareLinkDetailResponse":{"properties":{"share_id":{"type":"string","title":"Share Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"status":{"type":"string","title":"Status"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"created_at":{"type":"string","title":"Created At"},"expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expires At"},"used_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Used At"},"custom_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Message"},"system_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Message"},"scenario_system_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scenario System Message"},"welcome_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Welcome Message"},"guidance_message1":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guidance Message1"},"guidance_message2":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guidance Message2"},"customer_info":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Info"},"product_info":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Product Info"},"grading_rubrics":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Grading Rubrics"},"goals":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Goals"},"stage_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stage Type"},"persona_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Persona Id"},"job_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Id"},"company_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Id"},"interview_language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Interview Language"},"ui_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Ui Config"},"assessment_metrics_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Assessment Metrics Count"},"has_assessment_metrics":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Assessment Metrics"},"metrics_prompts_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Metrics Prompts Status"},"metrics_prompts_last_generated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Metrics Prompts Last Generated At"},"metrics_prompts_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Metrics Prompts Error"},"has_system_prompt":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has System Prompt"},"system_prompt_last_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Prompt Last Updated At"}},"type":"object","required":["share_id","status","created_at"],"title":"ShareLinkDetailResponse","description":"Simplified response model for share link details"},"ShareLinkListResponse":{"properties":{"links":{"items":{"$ref":"#/components/schemas/PracticeShareLinkResponse"},"type":"array","title":"Links"},"count":{"type":"integer","title":"Count"},"last_evaluated_key":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Last Evaluated Key"},"has_more":{"type":"boolean","title":"Has More"}},"type":"object","required":["links","count","has_more"],"title":"ShareLinkListResponse","description":"Response model for listing share links"},"ShareLinkStatus":{"type":"string","enum":["ACTIVE","USED","EXPIRED","REVOKED"],"title":"ShareLinkStatus"},"ShareLinkUpdateExpiration":{"properties":{"expires_at":{"type":"string","title":"Expires At"}},"type":"object","required":["expires_at"],"title":"ShareLinkUpdateExpiration","description":"Request model for updating share link expiration"},"ShareLinkUpdateMessages":{"properties":{"system_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Message"},"welcome_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Welcome Message"}},"type":"object","title":"ShareLinkUpdateMessages","description":"Request model for updating share link messages"},"ShareOverrides":{"properties":{"system_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Message","description":"Override system message"},"welcome_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Welcome Message","description":"Override welcome message"},"expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expires At","description":"Override expiration"},"custom_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Message","description":"Override custom message"}},"type":"object","title":"ShareOverrides","description":"Override settings for share creation from template"},"SimpleFileUploadResponse":{"properties":{"s3_key":{"type":"string","title":"S3 Key","description":"S3 key where the file was stored"},"bucket_name":{"type":"string","title":"Bucket Name","description":"Name of the S3 bucket where the file was stored"},"message":{"type":"string","title":"Message","description":"Status message"}},"type":"object","required":["s3_key","bucket_name","message"],"title":"SimpleFileUploadResponse","description":"Response model for direct file upload"},"SourceMetrics":{"properties":{"applications_by_source":{"additionalProperties":{"type":"integer"},"type":"object","title":"Applications By Source","description":"Applications by source"},"source_effectiveness":{"additionalProperties":{"type":"number"},"type":"object","title":"Source Effectiveness","description":"Source effectiveness (hire rate)"},"top_sources":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Top Sources","description":"Top performing sources"}},"type":"object","required":["applications_by_source","source_effectiveness","top_sources"],"title":"SourceMetrics","description":"Source-based metrics model"},"StartEvaluationRequest":{"properties":{"candidates":{"items":{"$ref":"#/components/schemas/Candidate-Input"},"type":"array","maxItems":10,"minItems":1,"title":"Candidates","description":"List of candidates to evaluate"},"job_requirements":{"$ref":"#/components/schemas/JobRequirements","description":"Job requirements and description"},"ranking_criteria":{"anyOf":[{"$ref":"#/components/schemas/RankingCriteria"},{"type":"null"}],"description":"Optional ranking criteria (defaults provided)"},"pipeline_config":{"anyOf":[{"$ref":"#/components/schemas/PipelineConfig"},{"type":"null"}],"description":"Optional pipeline configuration (defaults provided)"}},"type":"object","required":["candidates","job_requirements"],"title":"StartEvaluationRequest","description":"Request to start a new evaluation pipeline"},"StartEvaluationResponse":{"properties":{"execution_arn":{"type":"string","title":"Execution Arn","description":"ARN of the started execution"},"execution_name":{"type":"string","title":"Execution Name","description":"Name of the execution"},"start_date":{"type":"string","title":"Start Date","description":"ISO timestamp when execution started"},"state_machine_arn":{"type":"string","title":"State Machine Arn","description":"ARN of the state machine"},"input_summary":{"$ref":"#/components/schemas/InputSummary","description":"Summary of input data"},"status":{"type":"string","title":"Status","description":"Initial status (RUNNING)"},"message":{"type":"string","title":"Message","description":"Success message"}},"type":"object","required":["execution_arn","execution_name","start_date","state_machine_arn","input_summary","status","message"],"title":"StartEvaluationResponse","description":"Response from starting an evaluation pipeline"},"StatusHistory":{"properties":{"status":{"$ref":"#/components/schemas/ApplicationStatus","description":"Application status"},"timestamp":{"type":"string","title":"Timestamp","description":"Unix timestamp of the status change"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes","description":"Notes about the status change"}},"type":"object","required":["status","timestamp"],"title":"StatusHistory","description":"Model for application status history"},"StoredInterviewQuestion":{"properties":{"type":{"type":"string","title":"Type","description":"Question type: conversation or action"},"category":{"type":"string","title":"Category","description":"Question category"},"question":{"type":"string","title":"Question","description":"Interview question text"},"signals":{"type":"string","title":"Signals","description":"What to evaluate (comma separated)"},"duration":{"type":"string","title":"Duration","description":"Expected duration"}},"type":"object","required":["type","category","question","signals","duration"],"title":"StoredInterviewQuestion","description":"Model for a stored interview question"},"StreamResponse":{"properties":{"stream_url":{"type":"string","title":"Stream Url","description":"URL for accessing the stream"},"auth_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auth Key","description":"Authentication key for the stream if required"},"status":{"type":"string","title":"Status","description":"Stream status"},"server_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Server Name","description":"Server name for subsequent operations"}},"type":"object","required":["stream_url","status"],"title":"StreamResponse","description":"Response model for stream operations"},"StreamStartRequest":{"properties":{"window_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Window Id","description":"Specific window ID to stream, if not provided streams whole desktop"},"require_auth":{"type":"boolean","title":"Require Auth","description":"Whether to require authentication for the stream","default":true}},"type":"object","title":"StreamStartRequest","description":"Request model for starting sandbox stream"},"TeamMetrics":{"properties":{"total_recruiters":{"type":"integer","title":"Total Recruiters","description":"Total number of recruiters"},"interviews_conducted":{"type":"integer","title":"Interviews Conducted","description":"Total interviews conducted"},"hires_made":{"type":"integer","title":"Hires Made","description":"Total hires made"},"average_interviews_per_hire":{"type":"number","title":"Average Interviews Per Hire","description":"Average interviews per hire"},"recruiter_performance":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Recruiter Performance","description":"Individual recruiter performance"}},"type":"object","required":["total_recruiters","interviews_conducted","hires_made","average_interviews_per_hire","recruiter_performance"],"title":"TeamMetrics","description":"Team performance metrics model"},"TimeMetrics":{"properties":{"average_time_to_hire":{"type":"number","title":"Average Time To Hire","description":"Average time to hire in days"},"average_time_to_first_interview":{"type":"number","title":"Average Time To First Interview","description":"Average time to first interview in days"},"average_time_to_offer":{"type":"number","title":"Average Time To Offer","description":"Average time to offer in days"},"candidates_aging":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Candidates Aging","description":"Candidates aging in current stages"}},"type":"object","required":["average_time_to_hire","average_time_to_first_interview","average_time_to_offer","candidates_aging"],"title":"TimeMetrics","description":"Time-based metrics model"},"ToolInputSchema":{"properties":{"type":{"type":"string","title":"Type","description":"JSON schema type"},"properties":{"additionalProperties":true,"type":"object","title":"Properties","description":"Schema properties"},"required":{"items":{"type":"string"},"type":"array","title":"Required","description":"Required properties"}},"type":"object","required":["type","properties"],"title":"ToolInputSchema","description":"Tool input schema definition"},"UpdateScenarioInterviewerRequest":{"properties":{"interviewer_id":{"type":"string","title":"Interviewer Id","description":"AI interviewer ID to select"},"scenario_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scenario Id","description":"Optional scenario ID if one is selected"}},"type":"object","required":["interviewer_id"],"title":"UpdateScenarioInterviewerRequest","description":"Request schema for updating scenario interviewer and auto-generating introduction"},"UpdateScenarioInterviewerResponse":{"properties":{"job":{"$ref":"#/components/schemas/JobResponse","description":"Updated job object with new fields populated"},"introduction_message":{"type":"string","title":"Introduction Message","description":"Generated introduction message for immediate display"}},"type":"object","required":["job","introduction_message"],"title":"UpdateScenarioInterviewerResponse","description":"Response schema for scenario interviewer update"},"UpdateScenarioRequest":{"properties":{"scenario":{"$ref":"#/components/schemas/CareMojoScenarioData"},"patient_profile":{"anyOf":[{"$ref":"#/components/schemas/PatientProfile"},{"type":"null"}]},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language","default":"en"},"welcome_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Welcome Message"}},"type":"object","required":["scenario"],"title":"UpdateScenarioRequest","description":"Request body for update-scenario endpoint"},"UpdateScenarioResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"share_id":{"type":"string","title":"Share Id"},"persona_id":{"type":"string","title":"Persona Id","default":""},"system_message":{"type":"string","title":"System Message"},"scenario_id":{"type":"string","title":"Scenario Id"},"generated_at":{"type":"string","title":"Generated At"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["success","share_id","system_message","scenario_id","generated_at"],"title":"UpdateScenarioResponse","description":"Response from update-scenario endpoint"},"UploadedPart":{"properties":{"ETag":{"type":"string","title":"Etag","description":"ETag returned by S3 for the uploaded part"},"PartNumber":{"type":"integer","title":"Partnumber","description":"Part number"}},"type":"object","required":["ETag","PartNumber"],"title":"UploadedPart","description":"Model for an uploaded part of a multipart upload"},"User":{"properties":{"user_id":{"type":"string","title":"User Id","description":"Unique identifier for the user"},"email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email","description":"User's email address"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"User's full name"},"entity_type":{"type":"string","const":"USER","title":"Entity Type","description":"Entity type, always USER","default":"USER"},"created_at":{"type":"integer","title":"Created At","description":"Unix timestamp of when the user was created"},"updated_at":{"type":"integer","title":"Updated At","description":"Unix timestamp of when the user was last updated"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role","description":"User's role","default":"member"},"company_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Id","description":"Company ID the user belongs to"},"onboarding_completed":{"type":"boolean","title":"Onboarding Completed","description":"Whether user has completed onboarding","default":false},"onboarding_completed_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Onboarding Completed At","description":"Unix timestamp when onboarding was completed"},"signup_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signup Source","description":"How the user signed up","default":"direct"},"invited_by_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Invited By User Id","description":"ID of user who invited this user"},"clerk_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Id","description":"Clerk authentication user ID"},"share_passcode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Share Passcode","description":"Passcode for sharing user content"}},"type":"object","required":["user_id","created_at","updated_at"],"title":"User","description":"Base user model"},"UserContext":{"properties":{"userId":{"type":"string","title":"Userid","description":"User ID from Clerk"},"userName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username","description":"User name"},"companyId":{"type":"string","title":"Companyid","description":"Company ID"},"companyName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Companyname","description":"Company name"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role","description":"User role: 'super_admin' or 'user'"}},"type":"object","required":["userId","companyId"],"title":"UserContext","description":"User information context"},"UserCreate":{"properties":{"email":{"type":"string","format":"email","title":"Email","description":"User's email address"},"name":{"type":"string","title":"Name","description":"User's full name"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role","description":"User's role, defaults to regular user","default":"member"}},"type":"object","required":["email","name"],"title":"UserCreate","description":"User creation request model"},"UserResponse":{"properties":{"user":{"$ref":"#/components/schemas/User"}},"type":"object","required":["user"],"title":"UserResponse","description":"Single user response"},"UserSettings":{"properties":{"user_id":{"type":"string","title":"User Id","description":"User ID"},"email_notifications":{"type":"boolean","title":"Email Notifications","description":"Enable email notifications","default":true},"push_notifications":{"type":"boolean","title":"Push Notifications","description":"Enable push notifications","default":true},"notification_frequency":{"type":"string","title":"Notification Frequency","description":"Notification frequency (immediate, daily, weekly)","default":"daily"},"timezone":{"type":"string","title":"Timezone","description":"User timezone","default":"UTC"},"language":{"type":"string","title":"Language","description":"Preferred language","default":"en"},"dashboard_layout":{"additionalProperties":true,"type":"object","title":"Dashboard Layout","description":"Dashboard layout preferences"},"pipeline_view":{"type":"string","title":"Pipeline View","description":"Preferred pipeline view (kanban, list, table)","default":"kanban"},"candidate_fields":{"items":{"type":"string"},"type":"array","title":"Candidate Fields","description":"Preferred candidate fields to display"},"filters":{"additionalProperties":true,"type":"object","title":"Filters","description":"Saved filter preferences"},"shortcuts":{"additionalProperties":{"type":"string"},"type":"object","title":"Shortcuts","description":"Keyboard shortcuts"},"theme":{"type":"string","title":"Theme","description":"UI theme (light, dark, auto)","default":"light"},"created_at":{"type":"integer","title":"Created At","description":"Unix timestamp of when settings were created"},"updated_at":{"type":"integer","title":"Updated At","description":"Unix timestamp of when settings were last updated"}},"type":"object","required":["user_id","created_at","updated_at"],"title":"UserSettings","description":"User settings model"},"UserSettingsResponse":{"properties":{"settings":{"$ref":"#/components/schemas/UserSettings"}},"type":"object","required":["settings"],"title":"UserSettingsResponse","description":"User settings response"},"UserSettingsUpdate":{"properties":{"email_notifications":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Email Notifications","description":"Enable email notifications"},"push_notifications":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Push Notifications","description":"Enable push notifications"},"notification_frequency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notification Frequency","description":"Notification frequency"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone","description":"User timezone"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language","description":"Preferred language"},"dashboard_layout":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Dashboard Layout","description":"Dashboard layout preferences"},"pipeline_view":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pipeline View","description":"Preferred pipeline view"},"candidate_fields":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Candidate Fields","description":"Preferred candidate fields to display"},"filters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Filters","description":"Saved filter preferences"},"shortcuts":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Shortcuts","description":"Keyboard shortcuts"},"theme":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme","description":"UI theme"}},"type":"object","title":"UserSettingsUpdate","description":"User settings update request model"},"UserSignupData":{"properties":{"email":{"type":"string","format":"email","title":"Email","description":"User email address"},"name":{"type":"string","title":"Name","description":"User full name"}},"type":"object","required":["email","name"],"title":"UserSignupData","description":"User data provided during signup"},"UserStats":{"properties":{"overview":{"$ref":"#/components/schemas/UserStatsOverview"},"status_breakdown":{"additionalProperties":{"type":"integer"},"type":"object","title":"Status Breakdown","description":"Count of applications by status"},"interviews":{"$ref":"#/components/schemas/UserStatsInterviews"}},"type":"object","required":["overview","status_breakdown","interviews"],"title":"UserStats","description":"Complete user statistics"},"UserStatsInterviews":{"properties":{"upcoming":{"items":{"$ref":"#/components/schemas/InterviewData"},"type":"array","title":"Upcoming","description":"List of upcoming interviews"},"recent":{"items":{"$ref":"#/components/schemas/InterviewData"},"type":"array","title":"Recent","description":"List of recent interviews"}},"type":"object","title":"UserStatsInterviews","description":"User interview statistics"},"UserStatsOverview":{"properties":{"total_applications":{"type":"integer","title":"Total Applications","description":"Total number of applications","default":0},"active_applications":{"type":"integer","title":"Active Applications","description":"Number of active applications","default":0},"total_interviews":{"type":"integer","title":"Total Interviews","description":"Total number of interviews","default":0},"offers_received":{"type":"integer","title":"Offers Received","description":"Number of offers received","default":0},"offers_accepted":{"type":"integer","title":"Offers Accepted","description":"Number of offers accepted","default":0},"applications_rejected":{"type":"integer","title":"Applications Rejected","description":"Number of rejected applications","default":0},"success_rate":{"type":"number","title":"Success Rate","description":"Success rate (offers received / total applications)","default":0.0},"conversion_rate":{"type":"number","title":"Conversion Rate","description":"Conversion rate (offers accepted / offers received)","default":0.0},"profile_views":{"type":"integer","title":"Profile Views","description":"Number of profile views","default":0}},"type":"object","title":"UserStatsOverview","description":"User statistics overview"},"UserStatsResponse":{"properties":{"stats":{"$ref":"#/components/schemas/UserStats"}},"type":"object","required":["stats"],"title":"UserStatsResponse","description":"User statistics response"},"UserStatsUpdateRequest":{"properties":{"profile_views":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Profile Views","description":"Number of profile views to increment"},"total_interviews":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Interviews","description":"Total number of interviews to increment"},"offers_received":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Offers Received","description":"Number of offers received to increment"},"offers_accepted":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Offers Accepted","description":"Number of offers accepted to increment"},"applications_rejected":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Applications Rejected","description":"Number of rejected applications to increment"}},"type":"object","title":"UserStatsUpdateRequest","description":"Request model for updating user statistics"},"UserUpdate":{"properties":{"email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email","description":"User's email address"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"User's full name"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role","description":"User's role"},"company_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Id","description":"Company ID the user belongs to"},"onboarding_completed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Onboarding Completed","description":"Whether user has completed onboarding"},"onboarding_completed_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Onboarding Completed At","description":"Unix timestamp when onboarding was completed"},"signup_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signup Source","description":"How the user signed up"},"invited_by_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Invited By User Id","description":"ID of user who invited this user"},"clerk_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Id","description":"Clerk authentication user ID"},"share_passcode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Share Passcode","description":"Passcode for sharing user content"}},"type":"object","title":"UserUpdate","description":"User update request model - all fields optional"},"UsersResponse":{"properties":{"users":{"items":{"$ref":"#/components/schemas/User"},"type":"array","title":"Users"}},"type":"object","required":["users"],"title":"UsersResponse","description":"Multiple users response"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VideoRecordingComplete":{"properties":{"file_id":{"type":"string","title":"File Id","description":"Unique file identifier"},"video_url":{"type":"string","title":"Video Url","description":"URL to the uploaded video"},"duration_seconds":{"type":"integer","title":"Duration Seconds","description":"Duration of the video in seconds"},"file_size":{"type":"integer","title":"File Size","description":"Size of the video file in bytes"},"completed_at":{"type":"string","title":"Completed At","description":"Timestamp when upload completed"}},"type":"object","required":["file_id","video_url","duration_seconds","file_size","completed_at"],"title":"VideoRecordingComplete","description":"Request model for completing video recording upload"},"VideoRecordingError":{"properties":{"error_message":{"type":"string","title":"Error Message","description":"Error message describing what went wrong"},"failed_at":{"type":"string","title":"Failed At","description":"Timestamp when the error occurred"}},"type":"object","required":["error_message","failed_at"],"title":"VideoRecordingError","description":"Request model for video recording error"},"VideoRecordingResponse":{"properties":{"session_id":{"type":"string","title":"Session Id","description":"Unique video recording session identifier"},"practice_session_id":{"type":"string","title":"Practice Session Id","description":"ID of the practice session"},"user_email":{"type":"string","title":"User Email","description":"Email of the user recording"},"status":{"type":"string","title":"Status","description":"Current status of the recording"},"recording_started_at":{"type":"string","title":"Recording Started At","description":"Timestamp when recording started"},"recording_stopped_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recording Stopped At","description":"Timestamp when recording stopped"},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Completed At","description":"Timestamp when upload completed"},"failed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failed At","description":"Timestamp when error occurred"},"file_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Id","description":"Unique file identifier"},"video_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Video Url","description":"URL to the uploaded video"},"duration_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Seconds","description":"Duration of the video in seconds"},"file_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"File Size","description":"Size of the video file in bytes"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message","description":"Error message if recording failed"},"created_at":{"type":"string","title":"Created At","description":"Timestamp when record was created"},"updated_at":{"type":"string","title":"Updated At","description":"Timestamp when record was last updated"}},"type":"object","required":["session_id","practice_session_id","user_email","status","recording_started_at","created_at","updated_at"],"title":"VideoRecordingResponse","description":"Response model for video recording operations"},"VideoRecordingStart":{"properties":{"practice_session_id":{"type":"string","title":"Practice Session Id","description":"ID of the practice session"},"user_email":{"type":"string","title":"User Email","description":"Email of the user recording"},"recording_started_at":{"type":"string","title":"Recording Started At","description":"Timestamp when recording started"}},"type":"object","required":["practice_session_id","user_email","recording_started_at"],"title":"VideoRecordingStart","description":"Request model for starting video recording"},"VideoRecordingStatusResponse":{"properties":{"success":{"type":"boolean","title":"Success","description":"Whether the operation was successful"},"session_id":{"type":"string","title":"Session Id","description":"Video recording session identifier"},"status":{"type":"string","title":"Status","description":"Current status of the recording"}},"type":"object","required":["success","session_id","status"],"title":"VideoRecordingStatusResponse","description":"Response model for video recording status check"},"VideoRecordingStop":{"properties":{"stopped_at":{"type":"string","title":"Stopped At","description":"Timestamp when recording stopped"}},"type":"object","required":["stopped_at"],"title":"VideoRecordingStop","description":"Request model for stopping video recording"},"Voice":{"properties":{"id":{"type":"string","title":"Id","description":"Unique voice identifier"},"name":{"type":"string","title":"Name","description":"Voice name"},"provider":{"type":"string","enum":["cartesia","custom"],"title":"Provider","description":"Voice provider type"},"source":{"type":"string","enum":["standard","company"],"title":"Source","description":"Voice source type"},"company_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Id","description":"Company ID for custom voices"},"voice_id":{"type":"string","title":"Voice Id","description":"Provider-specific voice ID"},"gender":{"type":"string","enum":["male","female","neutral"],"title":"Gender","description":"Voice gender"},"accent":{"type":"string","title":"Accent","description":"Voice accent"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Voice description"},"preview_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview Url","description":"Preview URL for voice sample"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At","description":"Creation timestamp"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By","description":"Creator user ID"}},"type":"object","required":["id","name","provider","source","voice_id","gender","accent"],"title":"Voice","description":"Voice interface for both standard and custom voices"},"VoiceLibraryResponse":{"properties":{"standard_voices":{"items":{"$ref":"#/components/schemas/Voice"},"type":"array","title":"Standard Voices","description":"Standard voices available to all"},"custom_voices":{"items":{"$ref":"#/components/schemas/Voice"},"type":"array","title":"Custom Voices","description":"Company-specific custom voices"}},"type":"object","title":"VoiceLibraryResponse","description":"Response model for company voice library"},"VoiceSaveRequest":{"properties":{"voice_id":{"type":"string","title":"Voice Id","description":"Provider-specific voice ID"},"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name","description":"Voice name"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description","description":"Voice description"},"gender":{"type":"string","enum":["male","female","neutral"],"title":"Gender","description":"Voice gender"},"accent":{"type":"string","title":"Accent","description":"Voice accent"},"cartesia_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Cartesia Metadata","description":"Cartesia-specific metadata"}},"type":"object","required":["voice_id","name","gender","accent"],"title":"VoiceSaveRequest","description":"Request model for saving a voice to company library"},"VoiceSettings":{"properties":{"provider":{"type":"string","title":"Provider","description":"Voice provider: 'cartesia' or 'custom'"},"voice_id":{"type":"string","title":"Voice Id","description":"Voice ID from provider"},"voice_name":{"type":"string","title":"Voice Name","description":"Display name for voice"},"gender":{"type":"string","title":"Gender","description":"Voice gender"},"accent":{"type":"string","title":"Accent","description":"Voice accent"},"preview_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview Url","description":"Preview URL for voice sample"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","description":"Voice source: 'standard' or 'company'","default":"standard"},"company_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Id","description":"Company ID for custom voices"}},"type":"object","required":["provider","voice_id","voice_name","gender","accent"],"title":"VoiceSettings","description":"Voice settings for persona - updated for new voice system"},"VoiceSettingsModel":{"properties":{"voice_id":{"type":"string","title":"Voice Id"},"voice_name":{"type":"string","title":"Voice Name","default":"Patient Voice"},"provider":{"type":"string","title":"Provider","default":"cartesia"}},"type":"object","required":["voice_id"],"title":"VoiceSettingsModel","description":"Voice settings for patient persona"},"models__job__ScenarioResponse":{"properties":{"scenario_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scenario Id","description":"Associated scenario ID for interview scenarios"}},"type":"object","title":"ScenarioResponse","description":"Response schema for job scenario assignment"},"models__scenario__ScenarioResponse":{"properties":{"scenario":{"$ref":"#/components/schemas/Scenario"}},"type":"object","required":["scenario"],"title":"ScenarioResponse","description":"Response model for a single scenario"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}