# Harvested verbatim from https://scout.wizehire.com/openapi.json on 2026-09-04 (HTTP 200, application/json). # Original bytes preserved at openapi/_original/wizehire-scout-service-openapi.json. # Two additions by API Evangelist, both captured in overlays/wizehire-scout-service-overlay.yaml: # servers[] (the spec ships none; the URL is the host it was served from) and tags[] descriptions. openapi: 3.1.0 info: title: Scout Service description: Backend service for the Scout Chrome Extension — AI-powered recruiting assistant version: 0.1.0 servers: - url: https://scout.wizehire.com description: Scout Service production host (the host this specification was fetched from) tags: - name: health description: Service health probe - name: agent description: Scout AI recruiting agent conversation - name: candidates description: Candidate / application retrieval - name: interviews description: Interview scheduling (proxied to the Wizehire ATS) paths: /healthz: get: tags: - health summary: Healthz operationId: healthz responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/HealthResponse' /v1/agent/chat: post: tags: - agent summary: Agent Chat description: 'Send a message to the Scout AI agent and receive a streaming response. Returns Server-Sent Events (SSE) with the agent''s response, including text deltas and tool use notifications.' operationId: agentChat requestBody: content: application/json: schema: $ref: '#/components/schemas/AgentChatRequest' 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/candidates/top/{job_key}: get: tags: - candidates summary: Get Top Applies description: Get the top candidates by fit score for a job. operationId: get_top_applies_v1_candidates_top__job_key__get security: - HTTPBearer: [] parameters: - name: job_key in: path required: true schema: type: string title: Job Key responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/candidates/{apply_id}: get: tags: - candidates summary: Get Apply Details description: Get applied details for a candidate by apply ID. operationId: get_apply_details_v1_candidates__apply_id__get security: - HTTPBearer: [] parameters: - name: apply_id in: path required: true schema: type: integer title: Apply Id responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/interviews/schedule: post: tags: - interviews summary: Schedule Interview description: 'Schedule an interview on behalf of the authenticated user. Proxies the request to ATS, positioning Scout Service as the intermediary for interview scheduling.' operationId: schedule_interview_v1_interviews_schedule_post requestBody: content: application/json: schema: $ref: '#/components/schemas/ScheduleInterviewRequest' 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: [] components: schemas: AgentChatRequest: properties: message: anyOf: - type: string - type: 'null' title: Message description: The user's natural language message. Optional only when `resume` is set — resumed turns pick up from checkpointer state and have no new user input. session_id: anyOf: - type: string - type: 'null' title: Session Id description: Stable ID grouping all messages in one chat thread. The extension mints a UUID per new chat and rotates it on reset so multi-turn conversations land together in Langfuse's Sessions view. Also doubles as the LangGraph thread_id so paused turns can resume. context: anyOf: - $ref: '#/components/schemas/AgentContext' - type: 'null' description: Page context from the Chrome extension conversation_history: anyOf: - items: $ref: '#/components/schemas/HistoryMessage' type: array - type: 'null' title: Conversation History description: Previous messages for multi-turn conversations resume: anyOf: - $ref: '#/components/schemas/ResumePayload' - type: 'null' description: Set to resume a turn that was paused for human review. Requires the same `session_id` as the paused turn so the checkpointer can look up its state. type: object title: AgentChatRequest AgentContext: properties: job_key: anyOf: - type: string - type: 'null' title: Job Key apply_id: anyOf: - type: integer - type: 'null' title: Apply Id page: anyOf: - type: string - type: 'null' title: Page candidate_name: anyOf: - type: string - type: 'null' title: Candidate Name job_title: anyOf: - type: string - type: 'null' title: Job Title registry_set: anyOf: - type: string - type: 'null' title: Registry Set user_id: anyOf: - type: integer - type: 'null' title: User Id quick_replies: anyOf: - items: $ref: '#/components/schemas/QuickReply' type: array - type: 'null' title: Quick Replies type: object title: AgentContext description: Optional context from the Chrome extension about the current page. HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError HealthResponse: properties: status: type: string title: Status default: ok environment: type: string title: Environment type: object required: - environment title: HealthResponse HistoryMessage: properties: role: type: string enum: - user - assistant - tool title: Role content: anyOf: - type: string - type: 'null' title: Content tool_calls: anyOf: - items: $ref: '#/components/schemas/HistoryToolCall' type: array - type: 'null' title: Tool Calls tool_call_id: anyOf: - type: string - type: 'null' title: Tool Call Id type: object required: - role title: HistoryMessage description: 'A single prior-turn message the client sends back on each request. Carries enough to rehydrate the LangChain message list the agent expects: - `role="user"` → HumanMessage - `role="assistant"` with `content` only → AIMessage (text reply) - `role="assistant"` with `tool_calls` → AIMessage recording a tool invocation - `role="tool"` with `tool_call_id` → ToolMessage (tool''s response) The old `{role, content}` shape still validates — new fields are optional.' HistoryToolCall: properties: id: type: string title: Id name: type: string title: Name args: additionalProperties: true type: object title: Args type: object required: - id - name title: HistoryToolCall description: A tool invocation recorded in the conversation history. InterviewType: type: string enum: - phone - video - in_person title: InterviewType QuickReply: properties: label: type: string title: Label value: type: string title: Value type: object required: - label - value title: QuickReply description: A quick reply option with a display label and a value sent as the message. ResumePayload: properties: value: additionalProperties: true type: object title: Value description: Opaque resume payload forwarded to the LangGraph node. type: object title: ResumePayload description: 'Client-side approval to resume a paused agent turn. v1 contract: any resume means "approved, continue." `value` is reserved for future decision shapes (e.g. operator overrides, modified args) and is passed verbatim into LangGraph''s `Command(resume=...)`.' ScheduleInterviewRequest: properties: apply_id: type: integer title: Apply Id interview_type: $ref: '#/components/schemas/InterviewType' type: object required: - apply_id - interview_type title: ScheduleInterviewRequest ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type input: title: Input ctx: type: object title: Context type: object required: - loc - msg - type title: ValidationError securitySchemes: HTTPBearer: type: http scheme: bearer