{"openapi":"3.1.0","info":{"title":"XP Signal API","description":"Company-facing API for structured candidate claims, signal scores, risk flags, and shortlist ranking. A signal is not a hiring decision.","version":"0.1.0","x-product":"XP","x-docs":"https://docs.xp.cards"},"paths":{"/v1/health":{"get":{"tags":["health"],"summary":"Health","operationId":"health_v1_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Health V1 Health Get"}}}}}}},"/v1/ready":{"get":{"tags":["health"],"summary":"Ready","description":"Readiness probe. 200 when every configured dependency answers, else 503.\n\nChecks run concurrently: a slow Redis must not add its latency to a slow DB.","operationId":"ready_v1_ready_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Ready V1 Ready Get"}}}}}}},"/v1/auth/me":{"get":{"tags":["auth"],"summary":"Me","description":"Return the current authenticated user (cookie or Bearer). 401 if none.","operationId":"me_v1_auth_me_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthUser"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/logout":{"post":{"tags":["auth"],"summary":"Logout","description":"Clear the session cookie. The frontend also signs out of Supabase.","operationId":"logout_v1_auth_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogoutResponse"}}}}}}},"/v1/candidates":{"post":{"tags":["candidates"],"summary":"Create Candidate","operationId":"create_candidate_v1_candidates_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Candidate"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me":{"get":{"tags":["candidates"],"summary":"Get Me","operationId":"get_me_v1_candidates_me_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateProfile"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["candidates"],"summary":"Update Me","operationId":"update_me_v1_candidates_me_patch","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateProfile"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["candidates"],"summary":"Delete Me","description":"GDPR erasure. Erases the authenticated owner's candidate and personal data.","operationId":"delete_me_v1_candidates_me_delete","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateDeleteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/intent":{"get":{"tags":["candidates"],"summary":"Get My Intent","description":"Return the authenticated candidate's declared intent.","operationId":"get_my_intent_v1_candidates_me_intent_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateIntent"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["candidates"],"summary":"Update My Intent","description":"Partial update of the candidate's intent. Only provided fields are applied.\n\nBody: { desired_roles?, industries?, company_types?, availability? }.\navailability must be one of immediate | within_month | within_quarter |\nexploring. Returns the updated intent.","operationId":"update_my_intent_v1_candidates_me_intent_patch","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateIntentUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateIntent"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/languages":{"get":{"tags":["candidates"],"summary":"Get My Languages","description":"Return the authenticated candidate's declared languages.","operationId":"get_my_languages_v1_candidates_me_languages_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LanguagesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["candidates"],"summary":"Set My Languages","description":"Replace the candidate's languages. Body: {entries:[{language,proficiency}]}.\n\nEach language is normalized to an ISO-639-1 code and proficiency coerced to a\nCEFR level; invalid languages are ignored. Returns the resulting list.","operationId":"set_my_languages_v1_candidates_me_languages_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetLanguagesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LanguagesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/skills":{"get":{"tags":["candidates"],"summary":"Get My Skills","description":"Return the authenticated candidate's stored skills.\n\nRead-only view of the skill signals persisted during onboarding\nstructuring (repos.candidate.set_skills). Returns an empty list when the\ncandidate has no stored skills.","operationId":"get_my_skills_v1_candidates_me_skills_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkillsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/skills/{skill_name}":{"delete":{"tags":["candidates"],"summary":"Delete My Skill","description":"Delete a single stored skill by name and return the remaining skills.\n\nOwner-scoped: the candidate is resolved from the authenticated session, the\nnamed skill is removed (case-insensitive, trimmed match; the path param is\nURL-decoded by FastAPI so names with spaces work), and the remaining skills\nare returned. Never 404s on an unknown name: it simply returns the current\nlist unchanged.","operationId":"delete_my_skill_v1_candidates_me_skills__skill_name__delete","parameters":[{"name":"skill_name","in":"path","required":true,"schema":{"type":"string","title":"Skill Name"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkillsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/opportunities":{"get":{"tags":["candidates"],"summary":"List My Opportunities","description":"List open-to-pool requisitions across all orgs ranked by mutual_match.\n\nPseudonymous to the org side; here it is the owner's own feed. Never exposes\ninternal org data. Each opportunity carries mutual_match / candidate_fit /\nemployer_fit / confidence / explainability_notes and whether the candidate has\nalready signaled interest.\n\nWhen `q` is provided it is a smart free-text search: opportunities are scored\nfor text relevance over their public fields (role/title, geography, public\ncompany name when not anonymous, skills, area), zero-relevance ones are\nexcluded, and results are ranked by relevance blended with mutual_match. An\nempty or whitespace-only `q` behaves like no query.","operationId":"list_my_opportunities_v1_candidates_me_opportunities_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":100,"minimum":1},{"type":"null"}],"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"description":"Optional free-text search over the opportunity feed. Matches role/title, geography, public company name, skills, and area.","title":"Q"},"description":"Optional free-text search over the opportunity feed. Matches role/title, geography, public company name, skills, and area."},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpportunitiesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/opportunities/{requisition_id}/interest":{"post":{"tags":["candidates"],"summary":"Signal Opportunity Interest","description":"Record the candidate's interest in an open-to-pool requisition.\n\nIdempotent. Notifies the org in-app (event opportunity.interest) on a new\nsignal. 404 when the requisition is not open to the pool (internal\nrequisitions reject interest).","operationId":"signal_opportunity_interest_v1_candidates_me_opportunities__requisition_id__interest_post","parameters":[{"name":"requisition_id","in":"path","required":true,"schema":{"type":"string","title":"Requisition Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpportunityInterestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/opportunities/{requisition_id}/uninterest":{"post":{"tags":["candidates"],"summary":"Withdraw Opportunity Interest","description":"Withdraw the candidate's interest in an open-to-pool requisition.\n\nIdempotent. 404 when the requisition is not open to the pool.","operationId":"withdraw_opportunity_interest_v1_candidates_me_opportunities__requisition_id__uninterest_post","parameters":[{"name":"requisition_id","in":"path","required":true,"schema":{"type":"string","title":"Requisition Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpportunityInterestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/claims":{"get":{"tags":["candidates"],"summary":"Get My Claims","operationId":"get_my_claims_v1_candidates_me_claims_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaimsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/approve-claims":{"post":{"tags":["candidates"],"summary":"Approve Claims","description":"Approve or reject a set of claims for the authenticated owner.\n\nApproved claims become public-eligible; rejected claims are never public.\nReturns the full updated claim set.","operationId":"approve_claims_v1_candidates_approve_claims_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveClaimsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaimsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/timeline/{claim_id}/confirm":{"post":{"tags":["candidates"],"summary":"Confirm Timeline Event","description":"Confirm a bound timeline claim: the candidate's second signature.\n\nFor a recorded event this promotes the rung to company_verified AND seals the\nattested credential; a plan-tensed event is approved but stays on the floor\n(the tense guard lives in the service). Owner-scoped and gated on find_bound:\n404 when nothing of the authenticated owner's is bound behind this claim id,\nso one candidate can never confirm another's record.","operationId":"confirm_timeline_event_v1_candidates_me_timeline__claim_id__confirm_post","parameters":[{"name":"claim_id","in":"path","required":true,"schema":{"type":"string","title":"Claim Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Claim-Output"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/timeline/{claim_id}/decline":{"post":{"tags":["candidates"],"summary":"Decline Timeline Event","description":"Decline a bound timeline claim. It stays on the floor and counts nowhere.\n\nRejects through the ordinary claim loop; the rung is never touched and no\ncredential is ever sealed. Owner-scoped and gated identically to confirm:\n404 when nothing of the authenticated owner's is bound behind this claim id.","operationId":"decline_timeline_event_v1_candidates_me_timeline__claim_id__decline_post","parameters":[{"name":"claim_id","in":"path","required":true,"schema":{"type":"string","title":"Claim Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Claim-Output"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/claims/{claim_id}/evidence":{"post":{"tags":["candidates"],"summary":"Attach Evidence","description":"Attach evidence to the owner's claim.\n\nSelf-service bump: a self_claimed claim is promoted to evidence_attached.\nevidence_attached is NOT third-party verified. Returns the updated claim.","operationId":"attach_evidence_v1_candidates_me_claims__claim_id__evidence_post","parameters":[{"name":"claim_id","in":"path","required":true,"schema":{"type":"string","title":"Claim Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvidenceAttachRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Claim-Output"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/claims/{claim_id}/verification-requests":{"post":{"tags":["candidates"],"summary":"Create Verification Request","description":"Create a pending verification request for the owner's claim.\n\nverifier_type is peer | company | institution. requested_level is\npeer_verified / company_verified / institution_verified by type. For company/\ninstitution, organization_domain identifies the verifier org.","operationId":"create_verification_request_v1_candidates_me_claims__claim_id__verification_requests_post","parameters":[{"name":"claim_id","in":"path","required":true,"schema":{"type":"string","title":"Claim Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationRequestCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationRequest"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/verification-requests":{"get":{"tags":["candidates"],"summary":"List My Verification Requests","description":"List the verification requests this candidate initiated, with status.","operationId":"list_my_verification_requests_v1_candidates_me_verification_requests_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationRequestList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/peer-verifications":{"get":{"tags":["candidates"],"summary":"List Peer Verifications","description":"Pending peer requests where peer_email == the current user's account email.","operationId":"list_peer_verifications_v1_candidates_me_peer_verifications_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationRequestList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/peer-verifications/{request_id}/approve":{"post":{"tags":["candidates"],"summary":"Approve Peer Verification","description":"Approve a peer request, promoting the target claim to peer_verified.\n\nA candidate can NEVER verify their own claim (403). Records decided_by =\nuser_id and audits the decision.","operationId":"approve_peer_verification_v1_candidates_me_peer_verifications__request_id__approve_post","parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"string","title":"Request Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/PeerVerificationDecision"},{"type":"null"}],"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationRequest"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/peer-verifications/{request_id}/reject":{"post":{"tags":["candidates"],"summary":"Reject Peer Verification","description":"Reject a peer request with an optional reason. Records decided_by and audits.","operationId":"reject_peer_verification_v1_candidates_me_peer_verifications__request_id__reject_post","parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"string","title":"Request Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/PeerVerificationDecision"},{"type":"null"}],"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationRequest"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/references":{"post":{"tags":["candidates"],"summary":"Request Reference","description":"Request a reference: creates a REQUESTED record and emails the referee.\n\nBody: { referee_name?, referee_email, relationship, context? }. The referee is\nemailed a tokenized submit link (log provider by default). Returns the\nowner-facing reference without the referee_email echoed beyond what the owner\nsubmitted (it is never placed on the response).","operationId":"request_reference_v1_candidates_me_references_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReferenceCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Reference"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["candidates"],"summary":"List My References","description":"List the owner's references. referee_email is NEVER included.","operationId":"list_my_references_v1_candidates_me_references_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReferenceListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/references/{reference_id}/hide":{"post":{"tags":["candidates"],"summary":"Hide My Reference","description":"Hide a reference so it does not count or show. Owner-scoped (404 otherwise).","operationId":"hide_my_reference_v1_candidates_me_references__reference_id__hide_post","parameters":[{"name":"reference_id","in":"path","required":true,"schema":{"type":"string","title":"Reference Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Reference"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/references/{reference_id}/unhide":{"post":{"tags":["candidates"],"summary":"Unhide My Reference","description":"Un-hide a previously hidden reference. Owner-scoped (404 otherwise).","operationId":"unhide_my_reference_v1_candidates_me_references__reference_id__unhide_post","parameters":[{"name":"reference_id","in":"path","required":true,"schema":{"type":"string","title":"Reference Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Reference"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/references/{reference_id}":{"delete":{"tags":["candidates"],"summary":"Delete My Reference","description":"Delete a reference the owner requested (their own data). Audited.","operationId":"delete_my_reference_v1_candidates_me_references__reference_id__delete","parameters":[{"name":"reference_id","in":"path","required":true,"schema":{"type":"string","title":"Reference Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Delete My Reference V1 Candidates Me References  Reference Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/contributions":{"get":{"tags":["candidates"],"summary":"List My Contributions","description":"List contributions addressed to the authenticated candidate.\n\nOptional status filter (pending | accepted | rejected). Each item carries the\ncontributor name, type, proposed payload, status, created_at, and (once\naccepted for a claim) the resulting verification level.","operationId":"list_my_contributions_v1_candidates_me_contributions_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContributionsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/contributions/{contribution_id}/accept":{"post":{"tags":["candidates"],"summary":"Accept My Contribution","description":"Accept a contribution, applying it to the owner's canonical profile.\n\nclaim -> creates a new claim (company/institution verified when the domain-\nverified contributor org matches the claim organization, else self_claimed);\nskill -> adds the skill signal; preference -> applies allowed preference\nfields. Recomputes the derived verification level. Only the owner may accept\n(403 otherwise). Audited (contribution.accepted).","operationId":"accept_my_contribution_v1_candidates_me_contributions__contribution_id__accept_post","parameters":[{"name":"contribution_id","in":"path","required":true,"schema":{"type":"string","title":"Contribution Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contribution"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/contributions/{contribution_id}/reject":{"post":{"tags":["candidates"],"summary":"Reject My Contribution","description":"Reject a contribution. The profile is unchanged. Only the owner may reject\n(403 otherwise). Audited (contribution.rejected).","operationId":"reject_my_contribution_v1_candidates_me_contributions__contribution_id__reject_post","parameters":[{"name":"contribution_id","in":"path","required":true,"schema":{"type":"string","title":"Contribution Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contribution"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/publish":{"post":{"tags":["candidates"],"summary":"Publish Me","description":"Publish the owner's card. Optionally set/validate a unique handle.","operationId":"publish_me_v1_candidates_me_publish_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/unpublish":{"post":{"tags":["candidates"],"summary":"Unpublish Me","description":"Unpublish the owner's card (is_published = false).","operationId":"unpublish_me_v1_candidates_me_unpublish_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/export":{"get":{"tags":["candidates"],"summary":"Export Me","description":"GDPR data export. Returns the authenticated owner's full data bundle.","operationId":"export_me_v1_candidates_me_export_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateExport"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/onboarding/chat":{"post":{"tags":["candidates"],"summary":"Onboarding Chat","operationId":"onboarding_chat_v1_candidates_onboarding_chat_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OnboardingChatRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OnboardingChatResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/onboarding/import-linkedin":{"post":{"tags":["candidates"],"summary":"Import Linkedin","operationId":"import_linkedin_v1_candidates_onboarding_import_linkedin_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportLinkedInRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StructuredProfile"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/onboarding/upload-profile-text":{"post":{"tags":["candidates"],"summary":"Upload Profile Text","operationId":"upload_profile_text_v1_candidates_onboarding_upload_profile_text_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadProfileTextRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StructuredProfile"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/imports/sources":{"get":{"tags":["candidates"],"summary":"List Import Sources","description":"Static catalog of what can be imported. Owner-scoped (session required).\n\nconnected is always False: connectors read public data and hold no\nper-candidate connection state. requires tells the UI what identifier the\nsource needs (\"username\" for GitHub).","operationId":"list_import_sources_v1_candidates_me_imports_sources_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportSourcesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/imports":{"post":{"tags":["candidates"],"summary":"Import From Source","description":"Run an import connector and attach the result as PENDING items to the OWNER.\n\nOwner-scoped via get_current_user: a candidate can only import into their own\nprofile. Imported claims are self_claimed, pending, and not public; nothing\nbecomes verified. When the provider returns nothing (offline or not found),\nthis returns imported 0 with explanatory notes and does not error.","operationId":"import_from_source_v1_candidates_me_imports_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/notifications":{"get":{"tags":["candidates"],"summary":"List My Notifications","description":"List the authenticated candidate's notifications and unread count.","operationId":"list_my_notifications_v1_candidates_me_notifications_get","parameters":[{"name":"unread_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Unread Only"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/notifications/{notification_id}/read":{"post":{"tags":["candidates"],"summary":"Mark My Notification Read","description":"Mark one of the owner's notifications read. 404 if it is not theirs.","operationId":"mark_my_notification_read_v1_candidates_me_notifications__notification_id__read_post","parameters":[{"name":"notification_id","in":"path","required":true,"schema":{"type":"string","title":"Notification Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationMarkReadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/notifications/read-all":{"post":{"tags":["candidates"],"summary":"Mark All My Notifications Read","description":"Mark all of the owner's notifications read.","operationId":"mark_all_my_notifications_read_v1_candidates_me_notifications_read_all_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationMarkAllReadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/credentials":{"get":{"tags":["candidates"],"summary":"List My Credentials","description":"List the authenticated owner's attested credentials, hidden ones included.\n\nEach item carries hidden_by_candidate and revoked_by_issuer so the owner can\nsee and manage credentials that are deep-hidden or issuer-revoked.","operationId":"list_my_credentials_v1_candidates_me_credentials_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttestedCredentialList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["portable"],"summary":"Issue Credential","operationId":"issue_credential_v1_candidates_me_credentials_post","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"Idempotency-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssueCredentialRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialTokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/credentials/{credential_id}/hide":{"post":{"tags":["candidates"],"summary":"Hide My Credential","description":"Deep-hide one of the owner's attested credentials.\n\nA deep-hidden credential never appears in the public card, discovery, signal,\nor to employers, and never contributes to the derived verification level, but\nit remains stored immutably. Owner-scoped: 404 if the credential is not the\ncaller's (a credential belonging to another candidate is treated as not\nfound).","operationId":"hide_my_credential_v1_candidates_me_credentials__credential_id__hide_post","parameters":[{"name":"credential_id","in":"path","required":true,"schema":{"type":"string","title":"Credential Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttestedCredential"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/credentials/{credential_id}/unhide":{"post":{"tags":["candidates"],"summary":"Unhide My Credential","description":"Un-hide a previously deep-hidden attested credential (owner-scoped).","operationId":"unhide_my_credential_v1_candidates_me_credentials__credential_id__unhide_post","parameters":[{"name":"credential_id","in":"path","required":true,"schema":{"type":"string","title":"Credential Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttestedCredential"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/credentials/licenses":{"post":{"tags":["candidates"],"summary":"Add My License","description":"Add a license/certification for the authenticated owner.\n\nBody: { kind, name, authority_name, number?, jurisdiction_country?, issued_on?,\nexpiry? }. If a number is supplied ONLY its sha256 hash + last-4 are stored\n(never the raw number, never logged). Records a self canonical attribute.","operationId":"add_my_license_v1_candidates_me_credentials_licenses_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LicenseCredentialCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LicenseCredentialView"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["candidates"],"summary":"List My Licenses","description":"List the owner's licenses/certifications (masked).\n\nIncludes name, authority, jurisdiction, status, level, and number_last4.\nNEVER the number_hash or the raw number.","operationId":"list_my_licenses_v1_candidates_me_credentials_licenses_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LicenseCredentialListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/credentials/licenses/{credential_id}/verify":{"post":{"tags":["candidates"],"summary":"Verify My License","description":"Trigger verification for the owner's license/certification.\n\nBest-effort: routes to the issuing authority's verifier inbox (issuer), a real\nregistry (when configured), or a manual/interim pending state. Never blocks.","operationId":"verify_my_license_v1_candidates_me_credentials_licenses__credential_id__verify_post","parameters":[{"name":"credential_id","in":"path","required":true,"schema":{"type":"string","title":"Credential Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LicenseCredentialView"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/{candidate_id}/public-card":{"get":{"tags":["candidates"],"summary":"Public Card","operationId":"public_card_v1_candidates__candidate_id__public_card_get","parameters":[{"name":"candidate_id","in":"path","required":true,"schema":{"type":"string","title":"Candidate Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCard"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/{candidate_id}/visibility":{"patch":{"tags":["candidates"],"summary":"Update Visibility","operationId":"update_visibility_v1_candidates__candidate_id__visibility_patch","parameters":[{"name":"candidate_id","in":"path","required":true,"schema":{"type":"string","title":"Candidate Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisibilityUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Update Visibility V1 Candidates  Candidate Id  Visibility Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/eligibility":{"get":{"tags":["candidates"],"summary":"Get My Eligibility","description":"Owner view of private eligibility.\n\nReturns has_dob, work_authorized, and the derived boolean predicates\n(over_18, over_21). The raw date_of_birth is never returned on any surface,\nincluding this one; it stays encrypted at rest.","operationId":"get_my_eligibility_v1_candidates_me_eligibility_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EligibilityView"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["candidates"],"summary":"Set My Eligibility","description":"Set private eligibility for the authenticated owner.\n\nBody: { date_of_birth?: \"YYYY-MM-DD\" (null to clear), work_authorized?: bool }.\nThe DOB is validated (a future date or an absurd age is rejected 422) and\nstored ENCRYPTED via envelope encryption. Age is NEVER stored; only the\nencrypted DOB is kept and predicates are computed at read time. The response\nreturns has_dob + predicates only, never the DOB number or an age.","operationId":"set_my_eligibility_v1_candidates_me_eligibility_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EligibilityUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EligibilityView"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/phone/start":{"post":{"tags":["candidates"],"summary":"Start Phone Verification","description":"Begin phone verification for the authenticated owner.\n\nNormalizes the number to E.164 (422 on invalid), stores a HASHED OTP\nchallenge, encrypts+stores the number in the Vault contact, and \"delivers\" a\ncode over the selected channel (WhatsApp preferred, SMS fallback; mock in\ndev). NEVER returns the code (unless XP_OTP_ECHO=1 for local testing).","operationId":"start_phone_verification_v1_candidates_me_phone_start_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneStartRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneStartResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/phone/confirm":{"post":{"tags":["candidates"],"summary":"Confirm Phone Verification","description":"Confirm a phone verification code for the authenticated owner.\n\nOn success sets phone_verified=True (a predicate) plus non-PII descriptors.\nNever returns the phone number. Rate-limited to blunt code-guessing.","operationId":"confirm_phone_verification_v1_candidates_me_phone_confirm_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneConfirmRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneConfirmResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/work-authorization":{"put":{"tags":["candidates"],"summary":"Set My Work Authorization","description":"Set structured work authorization for the authenticated owner.\n\nBody: { work_right_countries[]?, visa_type?, visa_expiry?, sponsorship_required? }.\nCountries are normalized to ISO alpha-2 (unknown ignored); visa_expiry is\nnormalized to an ISO date. Only omitted fields are preserved.","operationId":"set_my_work_authorization_v1_candidates_me_work_authorization_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkAuthorizationUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkAuthorizationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/identity/start":{"post":{"tags":["identity"],"summary":"Start Identity Verification","description":"Begin an identity-verification session for the authenticated owner.\n\nCreates a pending verification and returns the session + optional redirect_url\n(the mock returns None and completes synchronously). Rate-limited per owner.","operationId":"start_identity_verification_v1_candidates_me_identity_start_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityStartRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityStartResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/identity/complete":{"post":{"tags":["identity"],"summary":"Complete Identity Verification","description":"Finalize an identity verification for the authenticated owner.\n\nThe mock/dev path completes synchronously; real providers would confirm via a\nwebhook. On success sets identity_verified and records the document legal name\nas the SUPREME (private) canonical source without touching display_name. Never\nreturns the legal name/country/DOB. Rate-limited per owner.","operationId":"complete_identity_verification_v1_candidates_me_identity_complete_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityCompleteRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityCompleteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/identity":{"get":{"tags":["identity"],"summary":"Get Identity Status","description":"Owner status: BOOLEANS + status only. Never the legal name/country/DOB.","operationId":"get_identity_status_v1_candidates_me_identity_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidate/documents/extract":{"post":{"tags":["documents"],"summary":"Extract Document","description":"Read the holder's own identity document and return the two facts on it.\n\nBody: { kind: \"visa\" | \"national_id\" | \"passport\", image_base64, media_type }.\nReturns { document_type, expiry_date, confidence, read_at }.\n\nA HIGH-confidence VISA read feeds the candidate's existing work\nauthorization (the same record the typed form writes, never a second copy).\nA LOW-confidence read, a passport, or a national id changes nothing on the\nserver: the values come back for the person to confirm or correct.\n\nReading is not verifying. The strongest rung this can ever grant is\nevidence_attached; see the ladder note in the service.\n\n422 for a malformed request (unknown kind, absent or unusable image, a file\nthat is not an image, or one over the size limit). A reader that is down or\na document that is illegible is NOT an error: it comes back as nulls with\nconfidence \"low\". The person does NOT then type the values: a date\nsomeone types is exactly the self-declaration this endpoint exists to\nreplace. Their only move is to photograph the document again.","operationId":"extract_document_v1_candidate_documents_extract_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentExtractRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentExtractResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/cards/{handle}":{"get":{"tags":["cards"],"summary":"Get Card","description":"Return the minimal public card for a handle.\n\n404 if the handle does not exist or the card is not published. Generates the\nQR on read with target_url {APP_URL}/r/{handle}. Rate limited per client IP.","operationId":"get_card_v1_cards__handle__get","parameters":[{"name":"handle","in":"path","required":true,"schema":{"type":"string","title":"Handle"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCard"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/cards/{handle}/access-request":{"post":{"tags":["cards"],"summary":"Create Access Request","description":"Create a pending access request tied to the scanned candidate.\n\nPurpose is mandatory. Writes an audit log entry (vault.access_requested).\nRate limited per client IP.","operationId":"create_access_request_v1_cards__handle__access_request_post","parameters":[{"name":"handle","in":"path","required":true,"schema":{"type":"string","title":"Handle"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicAccessRequestCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicAccessRequestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies":{"post":{"tags":["companies"],"summary":"Create Company","description":"Create the organization + company.\n\nTWO SHAPES, and the difference is who ends up holding the keys.\n\nWITH owner_email: an invited owner is created and mailed a link. NO key is\nreturned here. The owner's key is minted when they accept, and only whoever\nopens that mailbox ever sees it — it never lands in an HTTP response, a\nbrowser log, or a screenshot pasted into a chat. Such an org has no\nbootstrap key at all, so there is nothing to leak and nothing to demote\nlater: the machine keys it needs are minted afterwards, by a human, one at a\ntime, from the console.\n\nWITHOUT it: the legacy bootstrap key, shown once. This is the shape that made\n\"the owner\" a STRING rather than a person — whoever holds it is the owner as\nfar as XP is concerned, and nobody tracks where an API key gets pasted. It\nstays because 18 test files and the demo path depend on it, and it should be\nthe exception, not the default.","operationId":"create_company_v1_companies_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyCreated"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/me":{"get":{"tags":["companies"],"summary":"Get Me","description":"The caller's own organization profile. Tenant scoped by the key's org.","operationId":"get_me_v1_companies_me_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyProfile"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/profile":{"get":{"tags":["companies"],"summary":"Get Company Profile","description":"The organization's public face as it stands, for its owner. org:owner.","operationId":"get_company_profile_v1_companies_profile_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationProfileState"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["companies"],"summary":"Update Company Profile","description":"Edit the organization's public face. org:owner.\n\nPublishing is a decision, so is_public is just another field here and it\nstarts False. Nothing an admin types becomes a trust mark: domain_verified\nis not settable and never will be — it is earned with a DNS record.","operationId":"update_company_profile_v1_companies_profile_patch","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyProfileUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationProfileState"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/logo":{"post":{"tags":["companies"],"summary":"Upload Company Logo","description":"Upload the organization's logo. org:owner. multipart/form-data.\n\nThe bytes are read here and checked here. file.content_type is NOT trusted:\nit is typed by the client and anything can claim image/png. What decides is\nwhat the leading bytes actually are — see services/storage_service.py.\n\nThe read is capped rather than unbounded: read(MAX + 1) means a hostile\n100 MB upload costs 2 MB of memory and a 422, not the process.","operationId":"upload_company_logo_v1_companies_logo_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_company_logo_v1_companies_logo_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationProfileState"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/public":{"get":{"tags":["companies"],"summary":"List Public Organizations","description":"Every organization that opted in. NO auth: this feeds the sitemap.\n\nDeclared ABOVE /public/{slug} on purpose. FastAPI matches in declaration\norder, so the reverse would let the literal path be swallowed as a slug and\nthe directory would 404 forever.","operationId":"list_public_organizations_v1_companies_public_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicOrganizationDirectory"}}}}}}},"/v1/companies/public/{slug}":{"get":{"tags":["companies"],"summary":"Get Public Organization","description":"The public company page. NO auth: this is the front door.\n\n404s for an org that has not opted in, and the 404 is the same one an\nunknown slug gets — whether a company exists on XP but chose to stay unlisted\nis not something a stranger gets to learn by guessing URLs.","operationId":"get_public_organization_v1_companies_public__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicOrganization"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{slug}/verify-request":{"post":{"tags":["companies"],"summary":"Request Company Verification","description":"Behind the public page's QR. A logged-in person asks a verified company to\nconfirm they worked there.\n\nHalf a step: the person picked one relationship, and this creates the\nself_claimed employment claim PLUS a company verification request that lands\nin the company's inbox — pseudonymous, by handle. When the company approves,\nthe claim becomes company_verified. It is the two-sided validation, entered\nfrom a scan, reusing the machinery a candidate uses to request org\nverification of any claim.","operationId":"request_company_verification_v1_companies__slug__verify_request_post","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyVerifyRequestCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyVerifyRequestResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/ownership/challenge":{"post":{"tags":["companies"],"summary":"Ownership Challenge","description":"The TXT record this member must publish to claim ownership.\n\nThe value is bound to the CALLER, so one admin cannot ride on a record\nanother published. It is derived, not stored: stable per member, unguessable\nwithout AUTH_SECRET, and needing no column and no expiry.","operationId":"ownership_challenge_v1_companies_ownership_challenge_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainChallengeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainChallengeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/ownership/claim":{"post":{"tags":["companies"],"summary":"Ownership Claim","description":"Claim org:owner by proving control of the domain over live DNS.\n\nThis is the ONLY way back into an organization whose owner is gone, and\nwithout it \"only an owner can invite an owner\" is a time bomb: the day they\nleave, nobody can ever verify a domain or revoke a credential again.\n\nIt displaces a healthy owner too, because no server can observe \"unreachable\".\nWhoever controls the DNS already controls the company in every way that\nmatters; refusing them the seat would only make XP wrong about who runs it.\nThe displaced owner is notified and keeps admin — they lose the four\nirreversible powers, not their job.","operationId":"ownership_claim_v1_companies_ownership_claim_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyDomainRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OwnershipClaimResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/domain/challenge":{"post":{"tags":["companies"],"summary":"Domain Challenge","description":"Issue a DNS TXT verification token bound to the caller's organization.\n\nThe token is stored on the organization and returned inside the TXT record\nvalue the caller must publish. It is never logged.","operationId":"domain_challenge_v1_companies_domain_challenge_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainChallengeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainChallengeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/verify-domain":{"post":{"tags":["companies"],"summary":"Verify Domain","description":"Verify domain ownership via a LIVE DNS TXT lookup.\n\nResolves _xp-verification.<domain> server-side and checks that a TXT record\nequals xp-domain-verification=<token> for the token issued by the challenge\nendpoint. On success the company/org domain is set and marked verified. The\nclient-provided proof is never trusted; DNS is always resolved server-side.","operationId":"verify_domain_v1_companies_verify_domain_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyDomainRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyDomainResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/api-keys":{"post":{"tags":["companies"],"summary":"Create Api Key","operationId":"create_api_key_v1_companies_api_keys_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyCreated"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["companies"],"summary":"List Api Keys","operationId":"list_api_keys_v1_companies_api_keys_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Page size.","default":50,"title":"Limit"},"description":"Page size."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":32},{"type":"null"}],"description":"Continuation token from the previous page.","title":"Cursor"},"description":"Continuation token from the previous page."},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ApiKeyPublic"},"title":"Response List Api Keys V1 Companies Api Keys Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/api-keys/{key_id}":{"delete":{"tags":["companies"],"summary":"Revoke Api Key","operationId":"revoke_api_key_v1_companies_api_keys__key_id__delete","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","title":"Key Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Revoke Api Key V1 Companies Api Keys  Key Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/members":{"post":{"tags":["companies"],"summary":"Create Member","description":"Create a member (role: admin | recruiter) and mint their API key ONCE.\n\nThe minted key can never carry more scopes than the calling admin/owner key.","operationId":"create_member_v1_companies_members_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemberCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemberCreated"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["companies"],"summary":"List Members","operationId":"list_members_v1_companies_members_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Page size.","default":50,"title":"Limit"},"description":"Page size."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":32},{"type":"null"}],"description":"Continuation token from the previous page.","title":"Cursor"},"description":"Continuation token from the previous page."},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemberList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/members/{member_id}":{"delete":{"tags":["companies"],"summary":"Revoke Member","operationId":"revoke_member_v1_companies_members__member_id__delete","parameters":[{"name":"member_id","in":"path","required":true,"schema":{"type":"string","title":"Member Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Revoke Member V1 Companies Members  Member Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/members/invite":{"post":{"tags":["companies"],"summary":"Invite Member","description":"Invite a colleague on their WORK email. Mints no key (see accept below).\n\nThe address must sit on this organization's DNS-verified domain, which is\nwhat makes the invite proof of employment rather than a guess.","operationId":"invite_member_v1_companies_members_invite_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemberInvite"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteCreated"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/members/accept":{"post":{"tags":["companies"],"summary":"Accept Member Invite","description":"Redeem an invite and receive the member key ONCE. PUBLIC by necessity.\n\nThis is the one member endpoint with no API key on it, because the person\ncalling it is here to collect their first credential. The invite token IS\nthe authentication: HMAC-signed, expiring, and single use against the\nmember record.","operationId":"accept_member_invite_v1_companies_members_accept_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteAccept"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemberCreated"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/agents":{"post":{"tags":["companies"],"summary":"Create Agent","description":"Create an agent and return its token ONCE.\n\nThe token is shown exactly once and XP keeps only its hash — there is no\nendpoint that shows it again, and that is deliberate: a secret a platform can\nre-display is a secret the platform is storing.\n\nThe agent's scopes are the intersection of what was requested and what the\nCALLING key holds (ctx.scopes), and its rate limit is capped by the calling\nkey's (ctx.rate_limit). An agent is never a way to acquire authority its\ncreator lacks, nor a way around a throttle its humans live under.","operationId":"create_agent_v1_companies_agents_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgAgentCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgAgentCreated"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["companies"],"summary":"List Agents","description":"List this organization's agents, newest first. Never carries a token.\n\nTENANT SCOPED. Revoked agents are included: what a robot did, and when it was\nstopped, is history a human may need to read.","operationId":"list_agents_v1_companies_agents_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Page size.","default":50,"title":"Limit"},"description":"Page size."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":32},{"type":"null"}],"description":"Continuation token from the previous page.","title":"Cursor"},"description":"Continuation token from the previous page."},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgAgentList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/agents/{agent_id}":{"delete":{"tags":["companies"],"summary":"Revoke Agent","description":"Revoke an agent. The token stops working on the next call — resolution\nfilters revoked agents at the repository, so there is no cache to wait for.\n\nTENANT SCOPED: another org's agent is 404, never 403. A 403 would confirm the\nid exists, which is an answer the caller has not earned.","operationId":"revoke_agent_v1_companies_agents__agent_id__delete","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Revoke Agent V1 Companies Agents  Agent Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/approvals":{"get":{"tags":["companies"],"summary":"List Approvals","description":"This organization's approval queue, newest first. org:read.\n\nTENANT SCOPED. Decided and expired proposals are included when unfiltered:\nthe queue is the history of what the robots asked and what the humans did,\nnot just an inbox. `status` filters on the DERIVED status, so ?status=pending\nreturns what can actually be signed rather than what the column says.\n\npending_count is the sidebar badge and counts only rows that are pending AND\nstill signable -- a badge that counts things nobody can act on is a badge\npeople learn to ignore.","operationId":"list_approvals_v1_companies_approvals_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Page size.","default":50,"title":"Limit"},"description":"Page size."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":32},{"type":"null"}],"description":"Continuation token from the previous page.","title":"Cursor"},"description":"Continuation token from the previous page."},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProposalList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/approvals/policy":{"get":{"tags":["companies"],"summary":"Get Approval Policy","description":"The organization's own queue policy. org:owner.\n\nOwner rather than admin, matching PATCH below: setting the policy IS the\nstrategic act, and it is the one thing on this surface that is not\noperational.","operationId":"get_approval_policy_v1_companies_approvals_policy_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApprovalPolicy"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["companies"],"summary":"Update Approval Policy","description":"Set how long a proposal stays signable and how often the digest arrives.\norg:owner.\n\nXP ships the mechanism; the organization sets the policy. These two numbers\ngovern how a CUSTOMER works, so they are theirs -- XP only guarantees the\nmechanism is correct and the default is defensible.\n\nWidening proposal_ttl_days affects the NEXT proposal, never the last one:\nexpires_at is stamped at creation, so nothing already lapsed comes back.","operationId":"update_approval_policy_v1_companies_approvals_policy_patch","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApprovalPolicyUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApprovalPolicy"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/approvals/{proposal_id}/accept":{"post":{"tags":["companies"],"summary":"Accept Approval","description":"Sign a proposal and RUN THE ACT. The only place the act ever runs.\n\nThe scope required depends on the KIND and mirrors the gate on the route\nthat performs the act directly -- a proposal is never a softer door into an\nact than doing it yourself. An expired proposal is refused: signing what an\nagent proposed three weeks ago is signing blind, and re-proposing is\nreversible where executing stale is not.","operationId":"accept_approval_v1_companies_approvals__proposal_id__accept_post","parameters":[{"name":"proposal_id","in":"path","required":true,"schema":{"type":"string","title":"Proposal Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProposalPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/approvals/{proposal_id}/reject":{"post":{"tags":["companies"],"summary":"Reject Approval","description":"Decline a proposal. Runs nothing.\n\nGated by the same per-kind scope as accepting, and deliberately: who may say\nno is the same question as who may say yes. A recruiter who cannot sign a\nprofile change cannot bin it either -- silently dropping an owner's decision\noff the queue is its own kind of acting without authority.","operationId":"reject_approval_v1_companies_approvals__proposal_id__reject_post","parameters":[{"name":"proposal_id","in":"path","required":true,"schema":{"type":"string","title":"Proposal Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProposalPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/signal/structure":{"post":{"tags":["signal"],"summary":"Structure","operationId":"structure_v1_signal_structure_post","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"Idempotency-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StructureRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StructureResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/signal/score":{"post":{"tags":["signal"],"summary":"Score","operationId":"score_v1_signal_score_post","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"Idempotency-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScoreRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignalScore"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/signal/rank":{"post":{"tags":["signal"],"summary":"Rank","operationId":"rank_v1_signal_rank_post","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"Idempotency-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RankRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RankResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/signal/risk-review":{"post":{"tags":["signal"],"summary":"Risk Review","operationId":"risk_review_v1_signal_risk_review_post","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"Idempotency-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskReviewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskReviewResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/signal/candidates/{candidate_id}":{"get":{"tags":["signal"],"summary":"Get Candidate Signal","operationId":"get_candidate_signal_v1_signal_candidates__candidate_id__get","parameters":[{"name":"candidate_id","in":"path","required":true,"schema":{"type":"string","title":"Candidate Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignalScore"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/signal/discover":{"post":{"tags":["signal"],"summary":"Discover","description":"Pseudonymous candidate discovery (API key, scope discovery:read).\n\nSearches the published candidate pool for candidates whose job_seeking_status\nis in the requested statuses (never \"private\"), scores each against the target\nrole/geography with the momentum engine, and returns PSEUDONYMOUS results\n(handle + approved-public data + coarse geo + score) ranked by total_score.\nNo display_name, contact, exact city (unless opted in), references, or private\nclaims are ever returned. Geography and status are transparent filters, not\nhidden quality penalties.\n\nAn org that has not proved a domain is throttled (see the constant above).\nProving one lifts it to the normal API limit — the same DNS proof that\nalready anchors every credential XP issues.","operationId":"discover_v1_signal_discover_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscoverRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscoverResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/requisitions":{"post":{"tags":["requisitions"],"summary":"Create Requisition","operationId":"create_requisition_v1_requisitions_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequisitionCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Requisition"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["requisitions"],"summary":"List Requisitions","operationId":"list_requisitions_v1_requisitions_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Page size.","default":50,"title":"Limit"},"description":"Page size."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":32},{"type":"null"}],"description":"Continuation token from the previous page.","title":"Cursor"},"description":"Continuation token from the previous page."},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequisitionList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/requisitions/{requisition_id}":{"get":{"tags":["requisitions"],"summary":"Get Requisition","operationId":"get_requisition_v1_requisitions__requisition_id__get","parameters":[{"name":"requisition_id","in":"path","required":true,"schema":{"type":"string","title":"Requisition Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Requisition"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["requisitions"],"summary":"Update Requisition","operationId":"update_requisition_v1_requisitions__requisition_id__patch","parameters":[{"name":"requisition_id","in":"path","required":true,"schema":{"type":"string","title":"Requisition Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequisitionUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Requisition"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["requisitions"],"summary":"Delete Requisition","operationId":"delete_requisition_v1_requisitions__requisition_id__delete","parameters":[{"name":"requisition_id","in":"path","required":true,"schema":{"type":"string","title":"Requisition Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Delete Requisition V1 Requisitions  Requisition Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/requisitions/{requisition_id}/search":{"post":{"tags":["requisitions"],"summary":"Search Requisition","description":"Run the requisition's requirements as a pseudonymous discovery query over\nthe pool. Reuses signal_service.discover; each result carries in_pipeline and\nthe current stage when the candidate is already tracked here.","operationId":"search_requisition_v1_requisitions__requisition_id__search_post","parameters":[{"name":"requisition_id","in":"path","required":true,"schema":{"type":"string","title":"Requisition Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/RequisitionSearchRequest"},{"type":"null"}],"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequisitionSearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/requisitions/{requisition_id}/interested":{"get":{"tags":["requisitions"],"summary":"List Interested Candidates","description":"List the pseudonymous candidates who signaled interest in this requisition.\n\nTENANT SCOPED: a requisition owned by another org is a 404. Each entry carries\nhandle, verification level, coarse public location, the two-sided fit\n(mutual_match / candidate_fit / employer-fit score), and whether the candidate\nis already in the pipeline. Never a name or contact.","operationId":"list_interested_candidates_v1_requisitions__requisition_id__interested_get","parameters":[{"name":"requisition_id","in":"path","required":true,"schema":{"type":"string","title":"Requisition Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Page size.","default":50,"title":"Limit"},"description":"Page size."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":32},{"type":"null"}],"description":"Continuation token from the previous page.","title":"Cursor"},"description":"Continuation token from the previous page."},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterestedListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/requisitions/{requisition_id}/fairness":{"get":{"tags":["requisitions"],"summary":"Get Requisition Fairness","description":"Per-requisition fairness process audit. TENANT SCOPED: a requisition owned\nby another org is a 404. Returns the funnel, selection rates, factor summary,\nproxy flags, the suppressed flag, and methodology notes. Aggregate only.","operationId":"get_requisition_fairness_v1_requisitions__requisition_id__fairness_get","parameters":[{"name":"requisition_id","in":"path","required":true,"schema":{"type":"string","title":"Requisition Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FairnessReport"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/requisitions/{requisition_id}/fairness/export":{"get":{"tags":["requisitions"],"summary":"Export Requisition Fairness","description":"Downloadable fairness report. json returns the report object with a\ngenerated_at timestamp; csv returns aggregate funnel and factor-summary rows.\nNo identities in either export. TENANT SCOPED (404 for another org).","operationId":"export_requisition_fairness_v1_requisitions__requisition_id__fairness_export_get","parameters":[{"name":"requisition_id","in":"path","required":true,"schema":{"type":"string","title":"Requisition Id"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(json|csv)$","default":"json","title":"Format"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/requisitions/{requisition_id}/candidates":{"post":{"tags":["requisitions"],"summary":"Add Pipeline Candidate","description":"Add a candidate (by handle or candidate_id) to the pipeline. Idempotent per\ncandidate per requisition. 404 if the requisition or candidate is not found.","operationId":"add_pipeline_candidate_v1_requisitions__requisition_id__candidates_post","parameters":[{"name":"requisition_id","in":"path","required":true,"schema":{"type":"string","title":"Requisition Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PipelineCandidateAdd"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PipelineCandidate"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["requisitions"],"summary":"List Pipeline Candidates","description":"List the pipeline grouped by stage, paged. Entries are pseudonymous.\n\nThe page window runs over the stage-ordered flat pipeline; every stage key\nstays present (possibly empty) so the grouped shape is stable.","operationId":"list_pipeline_candidates_v1_requisitions__requisition_id__candidates_get","parameters":[{"name":"requisition_id","in":"path","required":true,"schema":{"type":"string","title":"Requisition Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Page size.","default":50,"title":"Limit"},"description":"Page size."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":32},{"type":"null"}],"description":"Continuation token from the previous page.","title":"Cursor"},"description":"Continuation token from the previous page."},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PipelineGrouped"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/requisitions/{requisition_id}/candidates/{rc_id}":{"patch":{"tags":["requisitions"],"summary":"Update Pipeline Candidate","description":"Move a candidate's stage or edit their note.","operationId":"update_pipeline_candidate_v1_requisitions__requisition_id__candidates__rc_id__patch","parameters":[{"name":"requisition_id","in":"path","required":true,"schema":{"type":"string","title":"Requisition Id"}},{"name":"rc_id","in":"path","required":true,"schema":{"type":"string","title":"Rc Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PipelineCandidateUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PipelineCandidate"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["requisitions"],"summary":"Remove Pipeline Candidate","description":"Remove a candidate from the pipeline.","operationId":"remove_pipeline_candidate_v1_requisitions__requisition_id__candidates__rc_id__delete","parameters":[{"name":"requisition_id","in":"path","required":true,"schema":{"type":"string","title":"Requisition Id"}},{"name":"rc_id","in":"path","required":true,"schema":{"type":"string","title":"Rc Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Remove Pipeline Candidate V1 Requisitions  Requisition Id  Candidates  Rc Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/core-sync/sources":{"post":{"tags":["core-sync"],"summary":"Attach Source","description":"Hand one source over. It is read, decided on, and DISCARDED.\n\nThe response is what the librarian did: filed with the facts it shelved, or\nset aside with the reason printed. XP never keeps the document.","operationId":"attach_source_v1_core_sync_sources_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachSourceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachSourceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/core-sync/library":{"get":{"tags":["core-sync"],"summary":"Get Library","description":"The company's own shelf: counts, the derived facts, and the source ledger.","operationId":"get_library_v1_core_sync_library_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LibraryView"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/core-sync/policy":{"get":{"tags":["core-sync"],"summary":"Get Policy","description":"The org's effective rules for the librarian -- its own, or XP's default.\n\nTENANT SCOPED on ctx.organization_id: a company sees only its own policy, and\nan org that never saved one reads the version-0 default rather than an empty\nstate or an error. is_default in the response says which it is, honestly, so\nthe Rules screen can show \"you are on XP's default\" instead of pretending a\nsaved policy exists.\n\nCarries nothing about any person -- a policy is about WHAT to read, never WHO\nis on XP.","operationId":"get_policy_v1_core_sync_policy_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtractionPolicyPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["core-sync"],"summary":"Save Policy","description":"Save the org's rules as a NEW active version. Prior versions stay as history.\n\nValidation is the service's, not restated here: create_policy runs the SPINE\nBAN (who / role / where / when / evidenced_by are XP's and fixed) and the\nunknown-key refusal before anything is written, so a body that names a spine\nfield -- or tries to reach the anti-oracle context threshold, which is not a\npolicy field -- is REFUSED and nothing is persisted. PolicyValidationError is\nmapped to the standard 422 envelope so the refusal's sharp message reaches the\nscreen instead of a generic 500.\n\nTENANT SCOPED on ctx.organization_id: a company can only write its own policy.","operationId":"save_policy_v1_core_sync_policy_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavePolicyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtractionPolicyPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/core-sync/topics":{"get":{"tags":["core-sync"],"summary":"List Topics","description":"The nine fixed topics with their document counts. Always nine, zeros included.\n\nTENANT SCOPED on ctx.organization_id: the counts are this company's own filed\nknowledge and reveal nothing about who is on XP.","operationId":"list_topics_v1_core_sync_topics_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TopicCount"},"title":"Response List Topics V1 Core Sync Topics Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/core-sync/topics/{topic_key}/documents":{"get":{"tags":["core-sync"],"summary":"List Topic Documents","description":"Every distilled document filed under one topic, newest first.\n\nAn unknown topic is a 404 -- there is no such folder. Each document is the\nDISTILLED .md, never the raw source, and carries no email and no roster.","operationId":"list_topic_documents_v1_core_sync_topics__topic_key__documents_get","parameters":[{"name":"topic_key","in":"path","required":true,"schema":{"type":"string","title":"Topic Key"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LibraryDocument"},"title":"Response List Topic Documents V1 Core Sync Topics  Topic Key  Documents Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/core-sync/topics/{topic_key}/synthesis":{"get":{"tags":["core-sync"],"summary":"Get Topic Synthesis","description":"Generate (never store) a professional synthesis of one topic folder.","operationId":"get_topic_synthesis_v1_core_sync_topics__topic_key__synthesis_get","parameters":[{"name":"topic_key","in":"path","required":true,"schema":{"type":"string","title":"Topic Key"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SynthesisResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/core-sync/documents":{"post":{"tags":["core-sync"],"summary":"File Document","description":"Distil one document and file the knowledge; the raw source is DISCARDED.\n\nThis is the richer replacement for POST /sources. It still runs the untouched\npeople-event pipeline (the events about people not on XP flow to the blind\nlatent store), and additionally distils a knowledge \".md\" filed under a topic.\nThe response is the filed document, or a set_aside verdict with the reason when\nthe document held no organizational knowledge to keep.","operationId":"file_document_v1_core_sync_documents_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileDocumentRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LibraryDocument"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/core-sync/reports":{"get":{"tags":["core-sync"],"summary":"List Reports","description":"Every report on this organization's shelf, newest first.","operationId":"list_reports_v1_core_sync_reports_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GeneratedReport"},"title":"Response List Reports V1 Core Sync Reports Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["core-sync"],"summary":"Generate Report","description":"Compose a report from a topic folder via the librarian AI (origin=manual).","operationId":"generate_report_v1_core_sync_reports_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateReportRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneratedReport"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/core-sync/reports/ingest":{"post":{"tags":["core-sync"],"summary":"Ingest Report","description":"Archive a report produced by another platform tool (Discover, Openings).\n\nScope is org:admin OR a platform-tool scope (requisitions:write /\ndiscovery:read), so a tool can file its own report without full admin. The\nbody is stored as the tool's own markdown; topic_key is optional.","operationId":"ingest_report_v1_core_sync_reports_ingest_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestReportRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneratedReport"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vault/contact":{"post":{"tags":["vault"],"summary":"Store Contact","operationId":"store_contact_v1_vault_contact_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactInput"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreContactResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vault/access-requests":{"get":{"tags":["vault"],"summary":"List Access Requests","operationId":"list_access_requests_v1_vault_access_requests_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"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"}}}}}},"post":{"tags":["vault"],"summary":"Create Access Request","description":"Company-side access request (API key, scope vault:request).\n\nThe recruiting company asks a candidate for contact access. Identify the\ncandidate by candidate_id OR public handle. The request is tied to the\ncaller's organization (derived from the API key context, never the body) and\nthe candidate, and writes the vault.access_requested audit event. Idempotent\nper Idempotency-Key so a retry does not create a duplicate.","operationId":"create_access_request_v1_vault_access_requests_post","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"Idempotency-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessRequestCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessRequestCreated"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vault/access-requests/{request_id}/approve":{"post":{"tags":["vault"],"summary":"Approve Access","operationId":"approve_access_v1_vault_access_requests__request_id__approve_post","parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"string","title":"Request Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveGrantResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vault/access-requests/{request_id}/deny":{"post":{"tags":["vault"],"summary":"Deny Access","operationId":"deny_access_v1_vault_access_requests__request_id__deny_post","parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"string","title":"Request Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessRequestPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vault/access-grants/{grant_id}/revoke":{"post":{"tags":["vault"],"summary":"Revoke Access","operationId":"revoke_access_v1_vault_access_grants__grant_id__revoke_post","parameters":[{"name":"grant_id","in":"path","required":true,"schema":{"type":"string","title":"Grant Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessGrantPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vault/access-grants":{"get":{"tags":["vault"],"summary":"List Access Grants","description":"Owner view of grants issued over their data (active and recent).","operationId":"list_access_grants_v1_vault_access_grants_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessGrantListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vault/access-log":{"get":{"tags":["vault"],"summary":"Access Log","description":"Owner-scoped audit history, paged: who requested, was granted, revoked,\nor accessed their data and when. Only ever the authenticated owner's own\nevents; never leaks candidate contact data.","operationId":"access_log_v1_vault_access_log_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Page size.","default":50,"title":"Limit"},"description":"Page size."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":32},{"type":"null"}],"description":"Continuation token from the previous page.","title":"Cursor"},"description":"Continuation token from the previous page."},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessLogResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vault/contact/{candidate_id}":{"get":{"tags":["vault"],"summary":"Read Granted Contact","description":"Authorized contact read (API key, scope vault:read).\n\nReturns the candidate contact ONLY when the caller organization holds an\nACTIVE grant (not expired, not revoked) for that candidate. Expiry and\nrevocation are re-checked on every call. Every successful read writes the\nvault.contact_accessed audit event and never logs the contact plaintext.\nReturns 403 when there is no active grant.","operationId":"read_granted_contact_v1_vault_contact__candidate_id__get","parameters":[{"name":"candidate_id","in":"path","required":true,"schema":{"type":"string","title":"Candidate Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GrantedContactResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vault/requests":{"get":{"tags":["vault"],"summary":"List Company Requests","description":"List the access requests the caller ORG has made (API key, vault:request).\n\nTENANT SCOPED by the caller organization. Shows request status and, when a\ngrant exists, the grant_id and expires_at so the console can enable the\nauthorized contact read while the grant is active. Distinct from the\ncandidate-owner GET /vault/access-requests.","operationId":"list_company_requests_v1_vault_requests_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyAccessRequestListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/verifications":{"get":{"tags":["verifications"],"summary":"List Pending","description":"Pending verification requests addressed to the caller ORG.\n\nMatched by target_organization_id == caller org OR target_domain == the\ncaller org's verified domain. PSEUDONYMOUS output (handle only).","operationId":"list_pending_v1_verifications_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifierInbox"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/verifications/{request_id}/approve":{"post":{"tags":["verifications"],"summary":"Approve","description":"Approve a request. The caller org must be domain-verified; the claim is\npromoted to company_verified or institution_verified by the org's type.","operationId":"approve_v1_verifications__request_id__approve_post","parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"string","title":"Request Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/VerifierDecision"},{"type":"null"}],"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationRequest"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/verifications/{request_id}/reject":{"post":{"tags":["verifications"],"summary":"Reject","description":"Reject a request with an optional reason. Audited.","operationId":"reject_v1_verifications__request_id__reject_post","parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"string","title":"Request Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/VerifierDecision"},{"type":"null"}],"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationRequest"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/references/token/{token}":{"get":{"tags":["references"],"summary":"Get Reference By Token","description":"Show the pseudonymous context for a referee token.\n\nReturns the candidate's chosen public identity, the relationship, the context,\nand the current status. 404 for an unknown or expired token. Reveals no\ncandidate contact or private data. Rate limited per client IP.","operationId":"get_reference_by_token_v1_references_token__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefereePublicView"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["references"],"summary":"Submit Reference","description":"Submit a reference through the tokenized link (a VERIFIED ATTESTATION).\n\nBody: { statement (required, min length), relationship? (confirm/adjust),\nagree: true, relationship_type?, attested_skills?, impact_note? }. Records\nthe attestation as submitted and notifies the candidate (event\nreference.submitted). A second submit on the same token is rejected (409).\n\nIDENTITY BINDING: this route stays PUBLIC (no auth required). IF the request\ncarries a valid session, the attester identity is bound so the attestation\nis graded identity_verified (or org_verified for an active member of a\ndomain-verified org). With no session, it proceeds as email_reachable.\nSelf-attestation (attesting your own passport) is rejected (409). Rate\nlimited per client IP.","operationId":"submit_reference_v1_references_token__token__post","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefereeSubmit"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefereePublicView"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/references/token/{token}/decline":{"post":{"tags":["references"],"summary":"Decline Reference","description":"Decline a reference request. 404 for an unknown/expired token; 409 if it was\nalready submitted. Rate limited per client IP.","operationId":"decline_reference_v1_references_token__token__decline_post","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/RefereeDecline"},{"type":"null"}],"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefereePublicView"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/contributions":{"post":{"tags":["contributions"],"summary":"Create Contribution","description":"Propose an enrichment to a candidate's profile.\n\nResolve the candidate by handle or id. Create a PENDING contribution with the\ncontributor org's provenance and notify the candidate (contribution.received).\nThe profile is NOT modified; nothing becomes public or verified here. Contact\nand PII fields in the payload are stripped defensively.","operationId":"create_contribution_v1_contributions_post","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"Idempotency-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContributionCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContributionCreated"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/notifications":{"get":{"tags":["notifications"],"summary":"List Org Notifications","description":"List the caller ORG's notifications. TENANT SCOPED by the API key org.","operationId":"list_org_notifications_v1_notifications_get","parameters":[{"name":"unread_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Unread Only"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/notifications/{notification_id}/read":{"post":{"tags":["notifications"],"summary":"Mark Org Notification Read","description":"Mark one of the caller ORG's notifications read. 404 if not theirs.","operationId":"mark_org_notification_read_v1_notifications__notification_id__read_post","parameters":[{"name":"notification_id","in":"path","required":true,"schema":{"type":"string","title":"Notification Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationMarkReadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/notifications/read-all":{"post":{"tags":["notifications"],"summary":"Mark All Org Notifications Read","description":"Mark all of the caller ORG's notifications read.","operationId":"mark_all_org_notifications_read_v1_notifications_read_all_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationMarkAllReadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/credentials/issue":{"post":{"tags":["credentials"],"summary":"Issue Attested Credential","description":"Issue an immutable attested credential for a candidate.\n\nRequires the credentials:issue scope AND a domain-verified issuer org (403\notherwise). The subject is identified by subject_handle or\nsubject_candidate_id (404 if not found). verification_level is\ninstitution_verified for an institution issuer, else company_verified. The\ncontent_hash is computed at issuance and never changes.","operationId":"issue_attested_credential_v1_credentials_issue_post","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"Idempotency-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttestedCredentialIssue"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttestedCredential"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/credentials/issue-batch":{"post":{"tags":["credentials"],"summary":"Issue Batch Credentials","description":"Cohort / bulk issuance of immutable attested credentials.\n\nRequires the credentials:issue scope AND a domain-verified issuer org (403\notherwise). Each recipient is resolved by subject_handle (existing candidate,\nissued) or subject_email (bind to an existing candidate when a login email\nmatches, else create a pending_claim credential that auto-binds at first\nlogin). Per-recipient fields override the template. The batch is capped\n(422 if larger). Nothing is public or editable; the issuer identity is\nrecorded; only the necessary email is stored.","operationId":"issue_batch_credentials_v1_credentials_issue_batch_post","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"Idempotency-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssueBatchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssueBatchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/credentials/outcomes":{"get":{"tags":["credentials"],"summary":"Graduate Outcomes","description":"Privacy-respecting graduate-outcomes aggregate for the caller org.\n\nRequires the credentials:issue scope. Aggregates ONLY over credentials this\norg issued and returns aggregate counts only, never candidate identifiers.\nK-anonymity: when fewer than k_threshold graduates have claimed, the granular\nbreakdowns are suppressed.","operationId":"graduate_outcomes_v1_credentials_outcomes_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutcomesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/credentials/{credential_id}/revoke":{"post":{"tags":["credentials"],"summary":"Revoke Attested Credential","description":"Issuer revocation (e.g. a rescinded degree). org:owner.\n\nONLY the issuing org may revoke (403 otherwise). Sets revoked_by_issuer and\nthe optional reason, audits credential.revoked, and notifies the candidate.\nA revoked credential is removed from every visible surface but remains stored.","operationId":"revoke_attested_credential_v1_credentials__credential_id__revoke_post","parameters":[{"name":"credential_id","in":"path","required":true,"schema":{"type":"string","title":"Credential Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/AttestedCredentialRevoke"},{"type":"null"}],"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttestedCredential"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/credentials/issued":{"get":{"tags":["credentials"],"summary":"List Issued Credentials","description":"List the attested credentials issued by the caller organization, paged.\n\nThe issuer view drops subject_email: raw recipient contact never leaves the\nbackend on this surface (the issuer already holds the list it uploaded).","operationId":"list_issued_credentials_v1_credentials_issued_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Page size.","default":50,"title":"Limit"},"description":"Page size."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":32},{"type":"null"}],"description":"Continuation token from the previous page.","title":"Cursor"},"description":"Continuation token from the previous page."},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssuerCredentialList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/credentials":{"post":{"tags":["credentials"],"summary":"Create Credential","operationId":"create_credential_v1_credentials_post","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Credential"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/credentials/{credential_id}":{"get":{"tags":["credentials"],"summary":"Get Credential","operationId":"get_credential_v1_credentials__credential_id__get","parameters":[{"name":"credential_id","in":"path","required":true,"schema":{"type":"string","title":"Credential Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Credential"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/predicates":{"get":{"tags":["disclosures"],"summary":"List Predicates","description":"The closed predicate catalog for the UI. No candidate data.","operationId":"list_predicates_v1_predicates_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response List Predicates V1 Predicates Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/disclosures":{"post":{"tags":["disclosures"],"summary":"Create Disclosure","operationId":"create_disclosure_v1_candidates_me_disclosures_post","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"Idempotency-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDisclosureRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDisclosureResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["disclosures"],"summary":"List My Disclosures","operationId":"list_my_disclosures_v1_candidates_me_disclosures_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response List My Disclosures V1 Candidates Me Disclosures Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/disclosures/{disclosure_id}/revoke":{"post":{"tags":["disclosures"],"summary":"Revoke Disclosure","operationId":"revoke_disclosure_v1_candidates_me_disclosures__disclosure_id__revoke_post","parameters":[{"name":"disclosure_id","in":"path","required":true,"schema":{"type":"string","title":"Disclosure Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Revoke Disclosure V1 Candidates Me Disclosures  Disclosure Id  Revoke Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/disclosure-requests":{"get":{"tags":["disclosures"],"summary":"List Incoming Requests","operationId":"list_incoming_requests_v1_candidates_me_disclosure_requests_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response List Incoming Requests V1 Candidates Me Disclosure Requests Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/disclosure-requests/{request_id}/approve":{"post":{"tags":["disclosures"],"summary":"Approve Request","operationId":"approve_request_v1_candidates_me_disclosure_requests__request_id__approve_post","parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"string","title":"Request Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveRequestBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Approve Request V1 Candidates Me Disclosure Requests  Request Id  Approve Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/disclosure-requests/{request_id}/deny":{"post":{"tags":["disclosures"],"summary":"Deny Request","operationId":"deny_request_v1_candidates_me_disclosure_requests__request_id__deny_post","parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"string","title":"Request Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Deny Request V1 Candidates Me Disclosure Requests  Request Id  Deny Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/disclosures/verify":{"post":{"tags":["disclosures"],"summary":"Verify Disclosure","operationId":"verify_disclosure_v1_disclosures_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyDisclosureRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyDisclosureResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/disclosure-requests":{"post":{"tags":["disclosures"],"summary":"Create Disclosure Request","operationId":"create_disclosure_request_v1_disclosure_requests_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DisclosureRequestBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Create Disclosure Request V1 Disclosure Requests Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/portable-pass":{"get":{"tags":["portable"],"summary":"Issue Portable Pass","description":"Issue a signed portable pass over the candidate's public standing.","operationId":"issue_portable_pass_v1_candidates_me_portable_pass_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialTokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/portable-credentials":{"get":{"tags":["portable"],"summary":"List My Credentials","operationId":"list_my_credentials_v1_candidates_me_portable_credentials_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response List My Credentials V1 Candidates Me Portable Credentials Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/credentials/import":{"post":{"tags":["portable"],"summary":"Import Credential","operationId":"import_credential_v1_candidates_me_credentials_import_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportCredentialRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Import Credential V1 Candidates Me Credentials Import Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/credentials/{vc_id}/revoke":{"post":{"tags":["portable"],"summary":"Revoke Credential","operationId":"revoke_credential_v1_candidates_me_credentials__vc_id__revoke_post","parameters":[{"name":"vc_id","in":"path","required":true,"schema":{"type":"string","title":"Vc Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Revoke Credential V1 Candidates Me Credentials  Vc Id  Revoke Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/pass/verify":{"post":{"tags":["portable"],"summary":"Verify Pass","operationId":"verify_pass_v1_pass_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyPassRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyPassResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/ats/connections":{"post":{"tags":["integrations"],"summary":"Create Connection","operationId":"create_connection_v1_integrations_ats_connections_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AtsConnectionCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AtsConnectionCreated"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["integrations"],"summary":"List Connections","operationId":"list_connections_v1_integrations_ats_connections_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AtsConnectionList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/ats/connections/{connection_id}":{"delete":{"tags":["integrations"],"summary":"Delete Connection","operationId":"delete_connection_v1_integrations_ats_connections__connection_id__delete","parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","title":"Connection Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Delete Connection V1 Integrations Ats Connections  Connection Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/ats/mapping/preview":{"post":{"tags":["integrations"],"summary":"Preview Mapping","operationId":"preview_mapping_v1_integrations_ats_mapping_preview_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AtsMappingPreviewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AtsMappingPreview"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/ats/push":{"post":{"tags":["integrations"],"summary":"Push Candidate","operationId":"push_candidate_v1_integrations_ats_push_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AtsPushRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AtsPushResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/ats/status":{"get":{"tags":["integrations"],"summary":"Sync Status","operationId":"sync_status_v1_integrations_ats_status_get","parameters":[{"name":"provider","in":"query","required":false,"schema":{"type":"string","default":"mock","title":"Provider"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AtsSyncStatus"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/ats/webhook/{provider}":{"post":{"tags":["integrations"],"summary":"Ats Webhook","operationId":"ats_webhook_v1_integrations_ats_webhook__provider__post","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"x-ats-signature","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ats-Signature"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AtsWebhookAck"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/consents":{"get":{"tags":["compliance"],"summary":"List My Consents","description":"List the authenticated candidate's consent grants.","operationId":"list_my_consents_v1_candidates_me_consents_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response List My Consents V1 Candidates Me Consents Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["compliance"],"summary":"Record My Consent","description":"Record a consent grant for a named purpose.","operationId":"record_my_consent_v1_candidates_me_consents_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsentCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Record My Consent V1 Candidates Me Consents Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/consents/{grant_id}/withdraw":{"post":{"tags":["compliance"],"summary":"Withdraw My Consent","description":"Withdraw one of the candidate's own consent grants.","operationId":"withdraw_my_consent_v1_candidates_me_consents__grant_id__withdraw_post","parameters":[{"name":"grant_id","in":"path","required":true,"schema":{"type":"string","title":"Grant Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Withdraw My Consent V1 Candidates Me Consents  Grant Id  Withdraw Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/compliance":{"get":{"tags":["compliance"],"summary":"My Compliance","description":"Region-aware compliance view: resolved NEUTRAL jurisdiction + retention.","operationId":"my_compliance_v1_candidates_me_compliance_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response My Compliance V1 Candidates Me Compliance Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/compliance/jurisdictions":{"get":{"tags":["compliance"],"summary":"List Jurisdictions","description":"Read the NEUTRAL jurisdiction registry (admin panel).","operationId":"list_jurisdictions_v1_compliance_jurisdictions_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response List Jurisdictions V1 Compliance Jurisdictions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/pass-views":{"get":{"tags":["analytics"],"summary":"My Pass Views","description":"K-anonymous count of verifications of the candidate's portable pass.","operationId":"my_pass_views_v1_candidates_me_pass_views_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PassViewStats"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/analytics/org-usage":{"get":{"tags":["analytics"],"summary":"Org Usage","description":"Read this organization's coarse usage counters (tenant scoped).","operationId":"org_usage_v1_analytics_org_usage_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgUsageStats"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/moderation/overview":{"get":{"tags":["moderation"],"summary":"Overview","description":"A tenant-scoped operational snapshot. Counts only, no PII.","operationId":"overview_v1_moderation_overview_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModerationOverview"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/moderation/webhooks/{webhook_id}/revoke":{"post":{"tags":["moderation"],"summary":"Revoke Webhook","description":"Revoke (delete) a webhook this organization owns. 404 if not owned.","operationId":"revoke_webhook_v1_moderation_webhooks__webhook_id__revoke_post","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","title":"Webhook Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModerationRevokeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/moderation/credentials/{credential_id}/revoke":{"post":{"tags":["moderation"],"summary":"Revoke Credential","description":"Revoke an attested credential this organization issued. 404 if not owned.","operationId":"revoke_credential_v1_moderation_credentials__credential_id__revoke_post","parameters":[{"name":"credential_id","in":"path","required":true,"schema":{"type":"string","title":"Credential Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ModerationRevokeRequest"},{"type":"null"}],"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModerationRevokeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/assessments":{"post":{"tags":["assessments"],"summary":"Create Assessment","description":"Create an assessment. The author org id comes from the API-key context.","operationId":"create_assessment_v1_assessments_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssessmentCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Create Assessment V1 Assessments Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["assessments"],"summary":"List Assessments","description":"List active assessments (taker view, no answers), paged.","operationId":"list_assessments_v1_assessments_get","parameters":[{"name":"skill","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Skill"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Page size.","default":50,"title":"Limit"},"description":"Page size."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":32},{"type":"null"}],"description":"Continuation token from the previous page.","title":"Cursor"},"description":"Continuation token from the previous page."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response List Assessments V1 Assessments Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/assessments/{assessment_id}/questions":{"post":{"tags":["assessments"],"summary":"Add Question","description":"Add a question. The answer key is accepted here but never returned.","operationId":"add_question_v1_assessments__assessment_id__questions_post","parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","title":"Assessment Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuestionCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Add Question V1 Assessments  Assessment Id  Questions Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/assessments/{assessment_id}":{"get":{"tags":["assessments"],"summary":"Get Assessment","description":"Fetch an assessment for taking (questions WITHOUT answers).","operationId":"get_assessment_v1_assessments__assessment_id__get","parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Assessment V1 Assessments  Assessment Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/assessments/{assessment_id}/start":{"post":{"tags":["assessments"],"summary":"Start Attempt","description":"Start an attempt. Returns the attempt id, expiry, and questions (no\nanswers). Enforces a single active attempt and an attempts cap.","operationId":"start_attempt_v1_candidates_me_assessments__assessment_id__start_post","parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","title":"Assessment Id"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"Idempotency-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Start Attempt V1 Candidates Me Assessments  Assessment Id  Start Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/assessments/attempts/{attempt_id}/submit":{"post":{"tags":["assessments"],"summary":"Submit Attempt","description":"Submit responses and score the attempt. On a PASS the candidate's skill\nverification level is raised and a canonical assessment attribute recorded.","operationId":"submit_attempt_v1_candidates_me_assessments_attempts__attempt_id__submit_post","parameters":[{"name":"attempt_id","in":"path","required":true,"schema":{"type":"string","title":"Attempt Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitAttemptRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Submit Attempt V1 Candidates Me Assessments Attempts  Attempt Id  Submit Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/issuers/{organization_id}":{"get":{"tags":["issuers"],"summary":"Get Issuer Profile","description":"Return the public issuer profile for a co-branded verification page.","operationId":"get_issuer_profile_v1_issuers__organization_id__get","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssuerProfile"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/webhooks":{"post":{"tags":["webhooks"],"summary":"Create Webhook","operationId":"create_webhook_v1_webhooks_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEndpoint"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["webhooks"],"summary":"List Webhooks","operationId":"list_webhooks_v1_webhooks_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WebhookEndpoint"},"title":"Response List Webhooks V1 Webhooks Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/webhooks/{webhook_id}":{"delete":{"tags":["webhooks"],"summary":"Delete Webhook","operationId":"delete_webhook_v1_webhooks__webhook_id__delete","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","title":"Webhook Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Delete Webhook V1 Webhooks  Webhook Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/webhooks/test":{"post":{"tags":["webhooks"],"summary":"Test Webhook","operationId":"test_webhook_v1_webhooks_test_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookTestRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookDeliveryResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/docs-meta":{"get":{"tags":["docs"],"summary":"Docs Meta","operationId":"docs_meta_v1_docs_meta_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Docs Meta V1 Docs Meta Get"}}}}}}},"/v1/waitlist":{"post":{"tags":["waitlist"],"summary":"Join Waitlist","operationId":"join_waitlist_v1_waitlist_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WaitlistCreate"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WaitlistAck"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/mcp":{"post":{"tags":["mcp"],"summary":"Mcp Endpoint","description":"One JSON-RPC entry point for every assistant.\n\nReturns 200 with a JSON-RPC error object rather than an HTTP error for\nprotocol-level problems: an MCP client expects to parse a JSON-RPC envelope,\nand a bare 4xx tells the model nothing it can act on.","operationId":"mcp_endpoint_v1_mcp_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Mcp Endpoint V1 Mcp Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/mcp/employer":{"post":{"tags":["mcp"],"summary":"Employer Mcp Endpoint","description":"One JSON-RPC entry point for an organization's agents.\n\nReturns 200 with a JSON-RPC error object rather than an HTTP error for\nprotocol-level problems: an MCP client expects to parse a JSON-RPC envelope,\nand a bare 4xx tells the model nothing it can act on.","operationId":"employer_mcp_endpoint_v1_mcp_employer_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Employer Mcp Endpoint V1 Mcp Employer Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/business/access":{"post":{"tags":["business"],"summary":"Request Business Access","description":"Mail a demo link to a work address. Returns as soon as it is queued.","operationId":"request_business_access_v1_business_access_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessSent"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/business/access/verify":{"post":{"tags":["business"],"summary":"Verify Business Access","description":"Redeem a demo link. Grants NO credential: the sandbox has none to give.","operationId":"verify_business_access_v1_business_access_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessVerify"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessGranted"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/pilot":{"get":{"tags":["pilot"],"summary":"Get Candidate Pilot","description":"Pilot state plus the candidate's real connected agents.","operationId":"get_candidate_pilot_v1_candidates_me_pilot_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PilotState"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/pilot/connect":{"post":{"tags":["pilot"],"summary":"Connect Candidate Pilot","description":"Connect an external provider for the candidate.\n\nMints a real delegated grant and returns the token ONCE. Rate-limited per\nowner. In Fase 2 this write is audit-logged like the vault (no PII is ever\nwritten to a log).","operationId":"connect_candidate_pilot_v1_candidates_me_pilot_connect_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/pilot/disconnect":{"post":{"tags":["pilot"],"summary":"Disconnect Candidate Pilot","description":"Disconnect a provider for the candidate: REVOKE the grant.\n\nThis used to answer \"revoked\" while revoking nothing, which is the worst\npossible lie for this particular button — the one a person presses when they\nhave decided an agent should stop reading their life. Now the grant is\nrevoked and its token stops resolving on the next call.","operationId":"disconnect_candidate_pilot_v1_candidates_me_pilot_disconnect_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DisconnectResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/candidates/me/pilot/telemetry":{"get":{"tags":["pilot"],"summary":"Get Candidate Pilot Telemetry","description":"Executive-language telemetry feed for the candidate pilot (pre-programmed).","operationId":"get_candidate_pilot_telemetry_v1_candidates_me_pilot_telemetry_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"xp_session","in":"cookie","required":false,"schema":{"type":"string","default":"","title":"Xp Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TelemetryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/company/pilot":{"get":{"tags":["pilot"],"summary":"Get Company Pilot","description":"Pilot state plus the organization's real connected agents.","operationId":"get_company_pilot_v1_company_pilot_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PilotState"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/company/pilot/connect":{"post":{"tags":["pilot"],"summary":"Connect Company Pilot","description":"Connect an external provider for the organization.\n\nOn the company side the owner IS the organization_id, so the grant is\ntenant-scoped by construction.","operationId":"connect_company_pilot_v1_company_pilot_connect_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/company/pilot/disconnect":{"post":{"tags":["pilot"],"summary":"Disconnect Company Pilot","description":"Disconnect a provider for the organization: REVOKE the grant.","operationId":"disconnect_company_pilot_v1_company_pilot_disconnect_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DisconnectResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/company/pilot/telemetry":{"get":{"tags":["pilot"],"summary":"Get Company Pilot Telemetry","description":"Executive-language telemetry feed for the company pilot (pre-programmed).","operationId":"get_company_pilot_telemetry_v1_company_pilot_telemetry_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TelemetryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/.well-known/did.json":{"get":{"tags":["well-known"],"summary":"Did Document","description":"Return the did:web DID document. Public, rate-limited per client IP.","operationId":"did_document__well_known_did_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Did Document  Well Known Did Json Get"}}}}}}},"/llms.txt":{"get":{"tags":["well-known"],"summary":"Llms Txt","description":"Describe XP's surface to an agent. Public, rate-limited per client IP.\n\nRate-limited like any other public read: this is a door onto the API, and a\ndoor that can be hammered for free is a door worth hammering. The content is\nstatic and identical for every caller -- it states the shape of the platform,\nnever anything about a candidate, a company, or a caller's own data.","operationId":"llms_txt_llms_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/":{"get":{"tags":["root"],"summary":"Root","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Root  Get"}}}}}}}},"components":{"schemas":{"AccessGrantListResponse":{"properties":{"grants":{"items":{"$ref":"#/components/schemas/AccessGrantSummary"},"type":"array","title":"Grants"}},"type":"object","title":"AccessGrantListResponse"},"AccessGrantPublic":{"properties":{"grant_id":{"type":"string","title":"Grant Id"},"request_id":{"type":"string","title":"Request Id"},"candidate_id":{"type":"string","title":"Candidate Id"},"company_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Id"},"granted_at":{"type":"string","format":"date-time","title":"Granted At"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"revoked":{"type":"boolean","title":"Revoked","default":false}},"type":"object","required":["grant_id","request_id","candidate_id","granted_at","expires_at"],"title":"AccessGrantPublic"},"AccessGrantSummary":{"properties":{"grant_id":{"type":"string","title":"Grant Id"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name"},"scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"status":{"type":"string","title":"Status"}},"type":"object","required":["grant_id","created_at","expires_at","status"],"title":"AccessGrantSummary","description":"Owner-facing summary of a grant issued over their data."},"AccessGranted":{"properties":{"ok":{"type":"boolean","title":"Ok"},"email_domain":{"type":"string","title":"Email Domain"}},"type":"object","required":["ok","email_domain"],"title":"AccessGranted","description":"Carries the DOMAIN, not the address — because the token no longer knows\nthe address (see mint_access_token). This used to echo the full email; the\nonly caller (`EnterClient.tsx`) discards the body entirely, so nothing was\nreading it. A field nobody consumed was the only thing arguing for keeping\nthe address recoverable at all."},"AccessLogEvent":{"properties":{"event":{"type":"string","title":"Event"},"actor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name"},"purpose":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Purpose"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp"}},"type":"object","required":["event","timestamp"],"title":"AccessLogEvent","description":"A single audit-history event in the owner's access log.\n\nNever carries candidate contact data. actor and company_name describe the\nrequester/company only, when known."},"AccessLogResponse":{"properties":{"events":{"items":{"$ref":"#/components/schemas/AccessLogEvent"},"type":"array","title":"Events"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","title":"AccessLogResponse"},"AccessRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"}},"type":"object","required":["email"],"title":"AccessRequest"},"AccessRequestCreate":{"properties":{"candidate_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Candidate Id"},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Handle"},"company_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Id"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name"},"purpose":{"type":"string","minLength":3,"title":"Purpose"},"requested_scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requested Scope"},"requester_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requester Name"},"requester_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requester Email"},"requested_ttl_hours":{"type":"integer","maximum":8760.0,"minimum":1.0,"title":"Requested Ttl Hours","default":72}},"type":"object","required":["purpose"],"title":"AccessRequestCreate","description":"Company-side access request submitted with an API key (vault:request).\n\nIdentify the candidate by candidate_id OR by their public handle (at least\none is required). Purpose is mandatory. The organization is derived from the\nAPI key context, never trusted from the body."},"AccessRequestCreated":{"properties":{"request_id":{"type":"string","title":"Request Id"},"status":{"$ref":"#/components/schemas/AccessRequestStatus","default":"pending"}},"type":"object","required":["request_id"],"title":"AccessRequestCreated","description":"Minimal company-facing result of creating an access request."},"AccessRequestListResponse":{"properties":{"requests":{"items":{"$ref":"#/components/schemas/AccessRequestPublic"},"type":"array","title":"Requests"}},"type":"object","title":"AccessRequestListResponse"},"AccessRequestPublic":{"properties":{"request_id":{"type":"string","title":"Request Id"},"candidate_id":{"type":"string","title":"Candidate Id"},"company_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Id"},"requester_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requester Name"},"requester_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requester Email"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name"},"requested_scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requested Scope"},"purpose":{"type":"string","title":"Purpose"},"status":{"$ref":"#/components/schemas/AccessRequestStatus"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"requested_ttl_hours":{"type":"integer","title":"Requested Ttl Hours"}},"type":"object","required":["request_id","candidate_id","purpose","status","created_at","requested_ttl_hours"],"title":"AccessRequestPublic"},"AccessRequestStatus":{"type":"string","enum":["pending","approved","denied","revoked","expired"],"title":"AccessRequestStatus"},"AccessSent":{"properties":{"sent":{"type":"boolean","title":"Sent"},"email":{"type":"string","title":"Email"}},"type":"object","required":["sent","email"],"title":"AccessSent","description":"Deliberately carries no link and no token. The whole point of mailing it\nis that possession of the mailbox is the proof; returning it here would hand\nthe proof back to whoever asked.\n\n`sent` means \"a real mail connector is configured and the send is queued\" —\nNOT \"it arrived\". Delivery is asynchronous by nature and no request could\nhonestly promise it."},"AccessVerify":{"properties":{"token":{"type":"string","title":"Token"}},"type":"object","required":["token"],"title":"AccessVerify"},"ApiKeyCreate":{"properties":{"name":{"type":"string","title":"Name"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"rate_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rate Limit"}},"type":"object","required":["name"],"title":"ApiKeyCreate"},"ApiKeyCreated":{"properties":{"key_id":{"type":"string","title":"Key Id"},"name":{"type":"string","title":"Name"},"prefix":{"type":"string","title":"Prefix"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"rate_limit":{"type":"integer","title":"Rate Limit"},"revoked":{"type":"boolean","title":"Revoked","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At"},"api_key":{"type":"string","title":"Api Key"}},"type":"object","required":["key_id","name","prefix","scopes","rate_limit","created_at","api_key"],"title":"ApiKeyCreated"},"ApiKeyPublic":{"properties":{"key_id":{"type":"string","title":"Key Id"},"name":{"type":"string","title":"Name"},"prefix":{"type":"string","title":"Prefix"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"rate_limit":{"type":"integer","title":"Rate Limit"},"revoked":{"type":"boolean","title":"Revoked","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"}},"type":"object","required":["key_id","name","prefix","scopes","rate_limit","created_at"],"title":"ApiKeyPublic"},"ApprovalPolicy":{"properties":{"proposal_ttl_days":{"type":"integer","title":"Proposal Ttl Days","default":7},"digest_cadence":{"type":"string","title":"Digest Cadence","default":"daily"}},"type":"object","title":"ApprovalPolicy","description":"The organization's own queue policy. Owner-owned."},"ApprovalPolicyUpdate":{"properties":{"proposal_ttl_days":{"anyOf":[{"type":"integer","maximum":90.0,"minimum":1.0},{"type":"null"}],"title":"Proposal Ttl Days"},"digest_cadence":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Digest Cadence"}},"type":"object","title":"ApprovalPolicyUpdate","description":"PATCH the queue policy. Every field optional: send what changed."},"ApproveClaimsRequest":{"properties":{"decisions":{"items":{"$ref":"#/components/schemas/ClaimDecision"},"type":"array","title":"Decisions"}},"type":"object","title":"ApproveClaimsRequest","description":"Approve or reject a set of claims in one call.\n\nEach decision approves or rejects a claim; approved claims become\npublic-eligible. Nothing becomes public until approved."},"ApproveGrantResponse":{"properties":{"grant_id":{"type":"string","title":"Grant Id"},"status":{"type":"string","title":"Status","default":"active"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"}},"type":"object","required":["grant_id","expires_at"],"title":"ApproveGrantResponse","description":"Minimal approve result returned to the owner."},"ApproveRequestBody":{"properties":{"predicates":{"anyOf":[{"items":{"$ref":"#/components/schemas/PredicateSpec"},"type":"array"},{"type":"null"}],"title":"Predicates"}},"type":"object","title":"ApproveRequestBody"},"AssessmentCreateRequest":{"properties":{"skill":{"type":"string","title":"Skill"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"rigor":{"type":"string","title":"Rigor","default":"self_check"},"passing_score":{"type":"integer","title":"Passing Score","default":70},"time_limit_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Time Limit Seconds"}},"type":"object","required":["skill","title"],"title":"AssessmentCreateRequest"},"AtsConnectionCreate":{"properties":{"provider":{"type":"string","title":"Provider","default":"mock"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"}},"type":"object","title":"AtsConnectionCreate"},"AtsConnectionCreated":{"properties":{"connection_id":{"type":"string","title":"Connection Id"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"},"provider":{"type":"string","title":"Provider"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"active":{"type":"boolean","title":"Active","default":true},"live":{"type":"boolean","title":"Live","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At"},"webhook_secret":{"type":"string","title":"Webhook Secret"}},"type":"object","required":["connection_id","provider","webhook_secret"],"title":"AtsConnectionCreated","description":"Returned ONCE, on create. Carries the per-connection inbound-webhook\nsecret so the operator can configure the ATS to sign its webhooks. The secret\nis never returned again on any list/read."},"AtsConnectionList":{"properties":{"connections":{"items":{"$ref":"#/components/schemas/AtsConnectionPublic"},"type":"array","title":"Connections"}},"type":"object","title":"AtsConnectionList"},"AtsConnectionPublic":{"properties":{"connection_id":{"type":"string","title":"Connection Id"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"},"provider":{"type":"string","title":"Provider"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"active":{"type":"boolean","title":"Active","default":true},"live":{"type":"boolean","title":"Live","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["connection_id","provider"],"title":"AtsConnectionPublic"},"AtsMappingPreview":{"properties":{"handle":{"type":"string","title":"Handle"},"published":{"type":"boolean","title":"Published","default":false},"identity_verified":{"type":"boolean","title":"Identity Verified","default":false},"reputation_counts":{"additionalProperties":{"type":"integer"},"type":"object","title":"Reputation Counts"},"skills":{"items":{"type":"string"},"type":"array","title":"Skills"},"verify_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Verify Url"},"contact_available":{"type":"boolean","title":"Contact Available","default":false},"external_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Ref"}},"type":"object","required":["handle"],"title":"AtsMappingPreview","description":"The exact minimized payload that WOULD be pushed. Pseudonymous by design.\n\nRendered so an operator can SEE that no protected attribute leaves XP before\nany real push is enabled. ``contact_available`` is a boolean only."},"AtsMappingPreviewRequest":{"properties":{"candidate_id":{"type":"string","title":"Candidate Id"},"external_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Ref"}},"type":"object","required":["candidate_id"],"title":"AtsMappingPreviewRequest"},"AtsPushRequest":{"properties":{"connection_id":{"type":"string","title":"Connection Id"},"candidate_id":{"type":"string","title":"Candidate Id"},"external_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Ref"}},"type":"object","required":["connection_id","candidate_id"],"title":"AtsPushRequest"},"AtsPushResponse":{"properties":{"provider":{"type":"string","title":"Provider"},"external_id":{"type":"string","title":"External Id"},"status":{"type":"string","title":"Status","default":"accepted"},"mock":{"type":"boolean","title":"Mock","default":true},"mapping_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mapping Id"}},"type":"object","required":["provider","external_id"],"title":"AtsPushResponse"},"AtsSyncStatus":{"properties":{"provider":{"type":"string","title":"Provider"},"connected":{"type":"boolean","title":"Connected","default":false},"live":{"type":"boolean","title":"Live","default":false},"mapped_count":{"type":"integer","title":"Mapped Count","default":0},"last_event_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Event At"}},"type":"object","required":["provider"],"title":"AtsSyncStatus"},"AtsWebhookAck":{"properties":{"received":{"type":"boolean","title":"Received","default":true},"provider":{"type":"string","title":"Provider"},"event":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event"},"candidate_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Candidate Id"},"matched":{"type":"boolean","title":"Matched","default":false}},"type":"object","required":["provider"],"title":"AtsWebhookAck"},"AttachSourceRequest":{"properties":{"name":{"type":"string","title":"Name"},"text":{"type":"string","title":"Text","default":""},"media_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Media Type"},"document_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Date"}},"type":"object","required":["name"],"title":"AttachSourceRequest","description":"A source handed to the librarian. Text only in v1.\n\nThe client extracts the text; XP never stores the file (SourceDocument:\n\"storage is a conveyor belt, not a warehouse\"). PDF parsing is a later loop."},"AttachSourceResponse":{"properties":{"source_name":{"type":"string","title":"Source Name"},"verdict":{"$ref":"#/components/schemas/SourceVerdict"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"filed":{"type":"integer","title":"Filed","default":0},"events":{"items":{"$ref":"#/components/schemas/LibraryEvent"},"type":"array","title":"Events"}},"type":"object","required":["source_name","verdict"],"title":"AttachSourceResponse"},"AttemptResponse":{"properties":{"question_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Question Id"},"position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Position"},"response":{"title":"Response"}},"type":"object","title":"AttemptResponse"},"AttestedCredential":{"properties":{"id":{"type":"string","title":"Id"},"subject_candidate_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject Candidate Id"},"subject_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject Email"},"status":{"type":"string","title":"Status","default":"issued"},"issuer_organization_id":{"type":"string","title":"Issuer Organization Id"},"issuer_name":{"type":"string","title":"Issuer Name"},"issuer_kind":{"type":"string","title":"Issuer Kind","default":"none"},"credential_type":{"type":"string","title":"Credential Type"},"title":{"type":"string","title":"Title"},"field_of_study":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Field Of Study"},"level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Level"},"issued_on":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Issued On"},"issued_on_iso":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Issued On Iso"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"verification_level":{"type":"string","title":"Verification Level"},"content_hash":{"type":"string","title":"Content Hash"},"revoked_by_issuer":{"type":"boolean","title":"Revoked By Issuer","default":false},"revoked_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Revoked Reason"},"hidden_by_candidate":{"type":"boolean","title":"Hidden By Candidate","default":false},"claimed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Claimed At"},"issuer_blind":{"type":"boolean","title":"Issuer Blind","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","issuer_organization_id","issuer_name","credential_type","title","verification_level","content_hash"],"title":"AttestedCredential","description":"An immutable, issuer-anchored verified fact about a candidate.\n\nIMMUTABILITY: content and content_hash are set at issuance and never change.\nThere is no update path and no candidate delete path. The candidate can only\ndeep-hide (hidden_by_candidate); only the issuer can revoke\n(revoked_by_issuer). A credential contributes to the candidate's derived\nverification level and appears on public surfaces ONLY when it is neither\nhidden nor revoked.\n\nUNCLAIMED STATE: when issued to a graduate who is not yet a candidate,\nsubject_candidate_id is None, subject_email carries the normalized target\nemail, and status is \"pending_claim\". Binding at first login sets\nsubject_candidate_id, flips status to \"issued\", and stamps claimed_at. The\ncontent_hash is computed over the immutable credential fields and stays\nstable across binding (it deliberately excludes the mutable subject binding\nand lifecycle state)."},"AttestedCredentialIssue":{"properties":{"subject_handle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject Handle"},"subject_candidate_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject Candidate Id"},"credential_type":{"type":"string","title":"Credential Type","description":"degree | certificate | course | employment | license"},"title":{"type":"string","title":"Title"},"field_of_study":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Field Of Study"},"level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Level"},"issued_on":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Issued On"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["credential_type","title"],"title":"AttestedCredentialIssue","description":"Body for POST /credentials/issue.\n\nThe subject is identified by EITHER subject_handle OR subject_candidate_id.\nThe immutable content (credential_type, title, field_of_study, level,\nissued_on, description) is set once at issuance and never changes."},"AttestedCredentialList":{"properties":{"credentials":{"items":{"$ref":"#/components/schemas/AttestedCredential"},"type":"array","title":"Credentials"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","title":"AttestedCredentialList"},"AttestedCredentialRevoke":{"properties":{"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","title":"AttestedCredentialRevoke","description":"Body for POST /credentials/{id}/revoke (issuer revocation)."},"AuthUser":{"properties":{"user_id":{"type":"string","title":"User Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"candidate_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Candidate Id"}},"type":"object","required":["user_id"],"title":"AuthUser","description":"Authenticated candidate user identity returned to the client."},"BatchError":{"properties":{"index":{"type":"integer","title":"Index"},"reason":{"type":"string","title":"Reason"}},"type":"object","required":["index","reason"],"title":"BatchError"},"BatchRecipient":{"properties":{"subject_handle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject Handle"},"subject_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject Email"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"field_of_study":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Field Of Study"},"level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Level"},"issued_on":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Issued On"}},"type":"object","title":"BatchRecipient","description":"One recipient in a cohort issuance.\n\nResolved by subject_handle (existing candidate) or subject_email (bind to an\nexisting candidate/auth-user when one has that login email, else create a\npending_claim credential). Per-recipient fields override the template."},"BatchResultItem":{"properties":{"index":{"type":"integer","title":"Index"},"status":{"type":"string","title":"Status"},"credential_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Credential Id"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["index","status"],"title":"BatchResultItem"},"BatchTemplate":{"properties":{"credential_type":{"type":"string","title":"Credential Type","description":"degree | certificate | course | employment | license"},"field_of_study":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Field Of Study"},"level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Level"},"issued_on":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Issued On"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"}},"type":"object","required":["credential_type"],"title":"BatchTemplate","description":"Shared fields applied to every recipient in a cohort issuance. Per-recipient\nfields override these."},"Body_upload_company_logo_v1_companies_logo_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_company_logo_v1_companies_logo_post"},"Candidate":{"properties":{"candidate_id":{"type":"string","title":"Candidate Id"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"handle":{"type":"string","title":"Handle"},"display_name":{"type":"string","title":"Display Name"},"headline":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Headline"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location"},"photo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Photo Url"},"github_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Github Url"},"public_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Public Summary"},"verification_level":{"$ref":"#/components/schemas/VerificationLevel","default":"self_claimed"},"is_published":{"type":"boolean","title":"Is Published","default":true},"visibility_level":{"type":"string","title":"Visibility Level","default":"private"},"geography":{"anyOf":[{"$ref":"#/components/schemas/Geography"},{"type":"null"}]},"job_seeking_status":{"type":"string","title":"Job Seeking Status","default":"open"},"desired_roles":{"items":{"type":"string"},"type":"array","title":"Desired Roles"},"industries":{"items":{"type":"string"},"type":"array","title":"Industries"},"company_types":{"items":{"type":"string"},"type":"array","title":"Company Types"},"availability":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Availability"},"identity_verified":{"type":"boolean","title":"Identity Verified","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["candidate_id","handle","display_name"],"title":"Candidate"},"CandidateClaim":{"properties":{"claim_id":{"type":"string","title":"Claim Id"},"claim_type":{"type":"string","title":"Claim Type"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"organization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization"},"start_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"},"end_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"verification_level":{"$ref":"#/components/schemas/VerificationLevel","default":"self_claimed"},"confidence_score":{"type":"number","title":"Confidence Score","default":0.0},"is_public":{"type":"boolean","title":"Is Public","default":false},"status":{"$ref":"#/components/schemas/ClaimStatus","default":"pending"}},"type":"object","required":["claim_id","claim_type"],"title":"CandidateClaim","description":"Owner-facing claim card for the approval loop."},"CandidateCreate":{"properties":{"display_name":{"type":"string","title":"Display Name"},"headline":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Headline"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location"},"public_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Public Summary"}},"type":"object","required":["display_name"],"title":"CandidateCreate"},"CandidateDeleteResponse":{"properties":{"candidate_id":{"type":"string","title":"Candidate Id"},"deleted":{"type":"boolean","title":"Deleted","default":true},"revoked_grants":{"type":"integer","title":"Revoked Grants","default":0},"deleted_credentials":{"type":"integer","title":"Deleted Credentials","default":0},"message":{"type":"string","title":"Message","default":"Your data has been erased."}},"type":"object","required":["candidate_id"],"title":"CandidateDeleteResponse","description":"Confirmation of a completed erasure."},"CandidateExport":{"properties":{"candidate_id":{"type":"string","title":"Candidate Id"},"profile":{"anyOf":[{"$ref":"#/components/schemas/Candidate"},{"type":"null"}]},"claims":{"items":{"$ref":"#/components/schemas/Claim-Output"},"type":"array","title":"Claims"},"skill_signals":{"items":{"$ref":"#/components/schemas/SkillSignal"},"type":"array","title":"Skill Signals"},"contact":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Contact"},"eligibility":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Eligibility"},"access_grants":{"items":{"type":"object"},"type":"array","title":"Access Grants"},"audit_entries":{"items":{"type":"object"},"type":"array","title":"Audit Entries"},"consent_records":{"items":{"type":"object"},"type":"array","title":"Consent Records"},"credentials":{"items":{"type":"object"},"type":"array","title":"Credentials"},"references":{"items":{"type":"object"},"type":"array","title":"References"},"reputation":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Reputation"},"licenses":{"items":{"type":"object"},"type":"array","title":"Licenses"},"assessment_attempts":{"items":{"type":"object"},"type":"array","title":"Assessment Attempts"},"identity":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Identity"},"disclosures":{"items":{"type":"object"},"type":"array","title":"Disclosures"},"disclosure_requests":{"items":{"type":"object"},"type":"array","title":"Disclosure Requests"},"languages":{"items":{"type":"object"},"type":"array","title":"Languages"},"verified_attributes":{"items":{"type":"object"},"type":"array","title":"Verified Attributes"},"phone_verified":{"type":"boolean","title":"Phone Verified","default":false},"notifications_count":{"type":"integer","title":"Notifications Count","default":0},"notifications":{"items":{"type":"object"},"type":"array","title":"Notifications"},"contributions":{"items":{"type":"object"},"type":"array","title":"Contributions"},"pipeline_placements":{"items":{"type":"object"},"type":"array","title":"Pipeline Placements"},"verification_requests":{"items":{"type":"object"},"type":"array","title":"Verification Requests"},"signal_scores":{"items":{"type":"object"},"type":"array","title":"Signal Scores"},"verifiable_credentials":{"items":{"type":"object"},"type":"array","title":"Verifiable Credentials"},"ats_external_maps":{"items":{"type":"object"},"type":"array","title":"Ats External Maps"},"compliance":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Compliance"},"analytics":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Analytics"},"connected_agents":{"items":{"type":"object"},"type":"array","title":"Connected Agents"},"exported_at":{"type":"string","format":"date-time","title":"Exported At"}},"type":"object","required":["candidate_id"],"title":"CandidateExport","description":"A candidate's own data bundle (GDPR right of access / portability).\n\nContact is DECRYPTED here because the caller is the data subject (owner).\nThis is only ever returned to the authenticated owner over a private channel."},"CandidateGeographyInput":{"properties":{"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"remote_preference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Remote Preference"},"open_to_relocation":{"type":"boolean","title":"Open To Relocation","default":false},"work_radius_km":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Work Radius Km"},"lat":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lat"},"lng":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lng"}},"type":"object","title":"CandidateGeographyInput","description":"Inline structured candidate geography for scoring. When a candidate_id is\ngiven and this is omitted, the service may pull it from the candidate profile."},"CandidateIntent":{"properties":{"desired_roles":{"items":{"type":"string"},"type":"array","title":"Desired Roles"},"industries":{"items":{"type":"string"},"type":"array","title":"Industries"},"company_types":{"items":{"type":"string"},"type":"array","title":"Company Types"},"availability":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Availability"}},"type":"object","title":"CandidateIntent","description":"Structured, candidate-controlled intent for two-sided matching.\n\ndesired_roles / industries / company_types are declared preferences.\navailability is one of AVAILABILITY_VALUES (or None until declared). Intent is\na TRANSPARENT matching factor, never a quality penalty, and NEVER a protected\nattribute. Geography, remote_preference, open_to_relocation, and\njob_seeking_status are reused from the candidate profile and are not\nduplicated here."},"CandidateIntentUpdate":{"properties":{"desired_roles":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Desired Roles"},"industries":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Industries"},"company_types":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Company Types"},"availability":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Availability"}},"type":"object","title":"CandidateIntentUpdate","description":"Partial update for candidate intent. Only provided fields are applied.\n\nEvery field is optional so PATCH /candidates/me/intent can set one field\nwithout clearing the others."},"CandidateOpportunity":{"properties":{"requisition_id":{"type":"string","title":"Requisition Id"},"organization_name":{"type":"string","title":"Organization Name"},"title":{"type":"string","title":"Title"},"area":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Area"},"pitch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pitch"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"location_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Summary"},"requirements_summary":{"items":{"type":"string"},"type":"array","title":"Requirements Summary"},"mutual_match":{"type":"number","title":"Mutual Match","default":0.0},"candidate_fit":{"type":"number","title":"Candidate Fit","default":0.0},"employer_fit":{"type":"number","title":"Employer Fit","default":0.0},"confidence":{"type":"number","title":"Confidence","default":0.0},"explainability_notes":{"items":{"type":"string"},"type":"array","title":"Explainability Notes"},"interested":{"type":"boolean","title":"Interested","default":false},"interested_count":{"type":"integer","title":"Interested Count","default":0}},"type":"object","required":["requisition_id","organization_name","title"],"title":"CandidateOpportunity","description":"One open-to-pool requisition surfaced to a candidate as an opportunity.\n\nThe candidate side of discovery: the tool SUGGESTS, the candidate does NOT\napply. Never exposes the org's internal data. organization_name is the public\ndisplay name (requisition public_company_name, falling back to the org name).\ninterested reflects the candidate's own current interest signal."},"CandidateProfile":{"properties":{"candidate_id":{"type":"string","title":"Candidate Id"},"handle":{"type":"string","title":"Handle"},"display_name":{"type":"string","title":"Display Name"},"headline":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Headline"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location"},"public_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Public Summary"},"photo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Photo Url"},"github_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Github Url"},"verification_level":{"$ref":"#/components/schemas/VerificationLevel","default":"self_claimed"},"is_published":{"type":"boolean","title":"Is Published","default":false},"visibility_level":{"type":"string","title":"Visibility Level","default":"private"},"geography":{"anyOf":[{"$ref":"#/components/schemas/Geography"},{"type":"null"}]},"job_seeking_status":{"type":"string","title":"Job Seeking Status","default":"open"},"intent":{"$ref":"#/components/schemas/CandidateIntent"},"public_url":{"type":"string","title":"Public Url"},"reputation":{"$ref":"#/components/schemas/ReputationSummary"}},"type":"object","required":["candidate_id","handle","display_name","public_url"],"title":"CandidateProfile","description":"Owner-facing candidate profile returned by GET/PATCH /candidates/me and\nthe publish endpoints. public_url is derived, not stored."},"CandidateUpdate":{"properties":{"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"headline":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Headline"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location"},"public_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Public Summary"},"photo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Photo Url"},"github_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Github Url"},"visibility_level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Visibility Level"},"job_seeking_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Seeking Status"},"geography":{"anyOf":[{"$ref":"#/components/schemas/Geography"},{"type":"null"}]}},"type":"object","title":"CandidateUpdate"},"Claim-Input":{"properties":{"claim_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Claim Id"},"candidate_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Candidate Id"},"category":{"type":"string","title":"Category","description":"e.g. role, achievement, education, skill"},"statement":{"type":"string","title":"Statement"},"verification_level":{"$ref":"#/components/schemas/VerificationLevel","default":"self_claimed"},"evidence":{"items":{"$ref":"#/components/schemas/Evidence"},"type":"array","title":"Evidence"},"approved":{"type":"boolean","title":"Approved","default":false},"status":{"$ref":"#/components/schemas/ClaimStatus","default":"pending"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"organization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization"},"start_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"},"end_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"},"start_date_iso":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date Iso"},"end_date_iso":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date Iso"},"linked_organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linked Organization Id"},"organization_canonical":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Canonical"},"org_link_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Org Link Status"},"seniority":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seniority"},"employment_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Employment Type"},"degree_level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Degree Level"},"field_of_study":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Field Of Study"},"field_of_study_canonical":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Field Of Study Canonical"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"confidence_score":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Confidence Score","default":0.0},"is_public":{"type":"boolean","title":"Is Public","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["category","statement"],"title":"Claim"},"Claim-Output":{"properties":{"claim_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Claim Id"},"candidate_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Candidate Id"},"category":{"type":"string","title":"Category","description":"e.g. role, achievement, education, skill"},"statement":{"type":"string","title":"Statement"},"verification_level":{"$ref":"#/components/schemas/VerificationLevel","default":"self_claimed"},"evidence":{"items":{"$ref":"#/components/schemas/Evidence"},"type":"array","title":"Evidence"},"approved":{"type":"boolean","title":"Approved","default":false},"status":{"$ref":"#/components/schemas/ClaimStatus","default":"pending"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"organization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization"},"start_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"},"end_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"},"start_date_iso":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date Iso"},"end_date_iso":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date Iso"},"linked_organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linked Organization Id"},"organization_canonical":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Canonical"},"org_link_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Org Link Status"},"seniority":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seniority"},"employment_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Employment Type"},"degree_level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Degree Level"},"field_of_study":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Field Of Study"},"field_of_study_canonical":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Field Of Study Canonical"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"confidence_score":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Confidence Score","default":0.0},"is_public":{"type":"boolean","title":"Is Public","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["category","statement"],"title":"Claim"},"ClaimDecision":{"properties":{"claim_id":{"type":"string","title":"Claim Id"},"action":{"type":"string","title":"Action","description":"\"approve\" or \"reject\""},"edits":{"anyOf":[{"$ref":"#/components/schemas/ClaimEdits"},{"type":"null"}]}},"type":"object","required":["claim_id","action"],"title":"ClaimDecision"},"ClaimEdits":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"organization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"is_public":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Public"},"seniority":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seniority"},"employment_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Employment Type"},"degree_level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Degree Level"},"field_of_study":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Field Of Study"}},"type":"object","title":"ClaimEdits","description":"Optional owner edits applied when approving a claim."},"ClaimEvidence":{"properties":{"type":{"type":"string","title":"Type","default":"self_report"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"}},"type":"object","title":"ClaimEvidence","description":"Public proof attached to an APPROVED PUBLIC claim: type, label, url only.\n\nNever carries PII. Only surfaced for approved public claims; evidence on\nprivate or unapproved claims is never included."},"ClaimStatus":{"type":"string","enum":["pending","approved","rejected"],"title":"ClaimStatus","description":"Approval status of a claim in the candidate approval loop."},"ClaimsResponse":{"properties":{"claims":{"items":{"$ref":"#/components/schemas/CandidateClaim"},"type":"array","title":"Claims"}},"type":"object","title":"ClaimsResponse"},"Company":{"properties":{"company_id":{"type":"string","title":"Company Id"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"},"name":{"type":"string","title":"Name"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"},"domain_verified":{"type":"boolean","title":"Domain Verified","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["company_id","name"],"title":"Company"},"CompanyAccessRequest":{"properties":{"request_id":{"type":"string","title":"Request Id"},"candidate_id":{"type":"string","title":"Candidate Id"},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Handle"},"purpose":{"type":"string","title":"Purpose"},"status":{"type":"string","title":"Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"grant_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Grant Id"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"}},"type":"object","required":["request_id","candidate_id","purpose","status","created_at"],"title":"CompanyAccessRequest","description":"A single access request the caller ORG has made (company console view).\n\ngrant_id and expires_at are populated when the request has been approved into\nan active/known grant so the console can enable the contact read."},"CompanyAccessRequestListResponse":{"properties":{"requests":{"items":{"$ref":"#/components/schemas/CompanyAccessRequest"},"type":"array","title":"Requests"}},"type":"object","title":"CompanyAccessRequestListResponse"},"CompanyCreate":{"properties":{"name":{"type":"string","title":"Name"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type","default":"company"},"owner_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Email"}},"type":"object","required":["name"],"title":"CompanyCreate"},"CompanyCreated":{"properties":{"company":{"$ref":"#/components/schemas/Company"},"admin_api_key":{"anyOf":[{"$ref":"#/components/schemas/ApiKeyCreated"},{"type":"null"}]},"owner_invited":{"anyOf":[{"$ref":"#/components/schemas/OrganizationMemberPublic"},{"type":"null"}]}},"type":"object","required":["company"],"title":"CompanyCreated","description":"Response for POST /companies.\n\nEXACTLY ONE of admin_api_key / owner_invited is set:\n  - owner_email given  -> owner_invited, and NO key in this response. The\n    key is minted when the owner accepts, and only they ever see it.\n  - owner_email omitted -> admin_api_key, the legacy bootstrap key, shown\n    once. Kept for the existing tests and the demo path."},"CompanyProfile":{"properties":{"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"},"company_id":{"type":"string","title":"Company Id"},"name":{"type":"string","title":"Name"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"},"domain_verified":{"type":"boolean","title":"Domain Verified","default":false},"plan":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["company_id","name","created_at"],"title":"CompanyProfile","description":"Caller-facing company/org profile returned by GET /companies/me."},"CompanyProfileUpdate":{"properties":{"is_public":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Public"},"logo_url":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Logo Url"},"description":{"anyOf":[{"type":"string","maxLength":600},{"type":"null"}],"title":"Description"},"website":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Website"},"linkedin_url":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Linkedin Url"},"whatsapp_url":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Whatsapp Url"},"x_url":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"X Url"}},"type":"object","title":"CompanyProfileUpdate","description":"PATCH /companies/profile. Every field optional: send what changed."},"CompanyVerifyRequestCreate":{"properties":{"relationship":{"type":"string","enum":["active","legacy"],"title":"Relationship"}},"type":"object","required":["relationship"],"title":"CompanyVerifyRequestCreate","description":"The half-step behind the company QR.\n\nA logged-in person confirms the ONE thing they choose — the type of role —\nand the request is sent. The QR carries the company; the person carries this.\nTwo role types: an ACTIVE role (they are there now) or a LEGACY role (they\nwere)."},"CompanyVerifyRequestResult":{"properties":{"status":{"type":"string","title":"Status","default":"pending"},"company_name":{"type":"string","title":"Company Name"},"relationship":{"type":"string","title":"Relationship"}},"type":"object","required":["company_name","relationship"],"title":"CompanyVerifyRequestResult","description":"What the person gets back: it is pending the company's confirmation."},"ConnectRequest":{"properties":{"provider":{"type":"string","enum":["chatgpt","claude","gemini"],"title":"Provider"}},"type":"object","required":["provider"],"title":"ConnectRequest"},"ConnectResponse":{"properties":{"provider":{"type":"string","title":"Provider"},"status":{"type":"string","title":"Status"},"token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"},"mcp_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mcp Url"},"agent":{"anyOf":[{"$ref":"#/components/schemas/ConnectedAgent"},{"type":"null"}]},"note":{"type":"string","title":"Note"},"mock":{"type":"boolean","title":"Mock","default":true}},"type":"object","required":["provider","status","note"],"title":"ConnectResponse"},"ConnectedAgent":{"properties":{"side":{"type":"string","title":"Side"},"provider":{"type":"string","title":"Provider"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"status":{"type":"string","title":"Status"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expires At"},"revoked_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Revoked At"}},"type":"object","required":["side","provider","scopes","status"],"title":"ConnectedAgent"},"ConsentCreateRequest":{"properties":{"purpose":{"type":"string","title":"Purpose"}},"type":"object","required":["purpose"],"title":"ConsentCreateRequest"},"ContactInput":{"properties":{"candidate_id":{"type":"string","title":"Candidate Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"private_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Private Notes"}},"type":"object","required":["candidate_id"],"title":"ContactInput","description":"Private contact data. Stored encrypted, never logged."},"Contribution":{"properties":{"contribution_id":{"type":"string","title":"Contribution Id"},"contributor_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contributor Name"},"type":{"type":"string","title":"Type"},"payload":{"type":"object","title":"Payload"},"status":{"type":"string","title":"Status","default":"pending"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"resulting_level":{"anyOf":[{"$ref":"#/components/schemas/VerificationLevel"},{"type":"null"}]}},"type":"object","required":["contribution_id","type"],"title":"Contribution","description":"Candidate-facing view of a contribution in the review inbox."},"ContributionCreate":{"properties":{"candidate_handle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Candidate Handle"},"candidate_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Candidate Id"},"type":{"type":"string","title":"Type"},"payload":{"type":"object","title":"Payload"}},"type":"object","required":["type"],"title":"ContributionCreate","description":"Contributor-side request body for POST /v1/contributions.\n\nExactly one of candidate_handle or candidate_id must resolve a candidate.\npayload shape depends on type (see the module docstring and the service)."},"ContributionCreated":{"properties":{"contribution_id":{"type":"string","title":"Contribution Id"},"status":{"type":"string","title":"Status","default":"pending"}},"type":"object","required":["contribution_id"],"title":"ContributionCreated","description":"Response for a successful POST /v1/contributions."},"ContributionsResponse":{"properties":{"contributions":{"items":{"$ref":"#/components/schemas/Contribution"},"type":"array","title":"Contributions"}},"type":"object","title":"ContributionsResponse"},"CreateDisclosureRequest":{"properties":{"predicates":{"items":{"$ref":"#/components/schemas/PredicateSpec"},"type":"array","title":"Predicates"},"audience_organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audience Organization Id"},"ttl_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ttl Minutes"}},"type":"object","required":["predicates"],"title":"CreateDisclosureRequest"},"CreateDisclosureResponse":{"properties":{"disclosure_id":{"type":"string","title":"Disclosure Id"},"token":{"type":"string","title":"Token"},"expires_at":{"anyOf":[{},{"type":"null"}],"title":"Expires At"},"predicates":{"items":{"type":"object"},"type":"array","title":"Predicates"}},"type":"object","required":["disclosure_id","token","predicates"],"title":"CreateDisclosureResponse"},"Credential":{"properties":{"credential_id":{"type":"string","title":"Credential Id"},"candidate_id":{"type":"string","title":"Candidate Id"},"credential_type":{"type":"string","title":"Credential Type"},"metadata_commitment":{"type":"string","title":"Metadata Commitment"},"revoked":{"type":"boolean","title":"Revoked","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["credential_id","candidate_id","credential_type","metadata_commitment"],"title":"Credential"},"CredentialCreate":{"properties":{"candidate_id":{"type":"string","title":"Candidate Id"},"credential_type":{"type":"string","title":"Credential Type","description":"e.g. role_verification, skill_attestation"},"metadata":{"additionalProperties":{"type":"string"},"type":"object","title":"Metadata"}},"type":"object","required":["candidate_id","credential_type"],"title":"CredentialCreate"},"CredentialTokenResponse":{"properties":{"vc_id":{"type":"string","title":"Vc Id"},"token":{"type":"string","title":"Token"},"credential_type":{"type":"string","title":"Credential Type"},"issuer":{"type":"string","title":"Issuer"},"expires_at":{"anyOf":[{},{"type":"null"}],"title":"Expires At"},"credential_subject":{"type":"object","title":"Credential Subject"}},"type":"object","required":["vc_id","token","credential_type","issuer","credential_subject"],"title":"CredentialTokenResponse"},"DisclosureRequestBody":{"properties":{"candidate_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Candidate Id"},"candidate_handle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Candidate Handle"},"predicates":{"items":{"$ref":"#/components/schemas/PredicateSpec"},"type":"array","title":"Predicates"}},"type":"object","required":["predicates"],"title":"DisclosureRequestBody"},"DisconnectResponse":{"properties":{"provider":{"type":"string","title":"Provider"},"status":{"type":"string","title":"Status"},"mock":{"type":"boolean","title":"Mock","default":true}},"type":"object","required":["provider","status"],"title":"DisconnectResponse"},"DiscoverRequest":{"properties":{"target_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Role"},"target_geography":{"anyOf":[{"$ref":"#/components/schemas/TargetGeography"},{"type":"null"}]},"skills":{"items":{"type":"string"},"type":"array","title":"Skills"},"min_verification":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Min Verification"},"statuses":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Statuses"},"limit":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Limit","default":20},"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},"type":"object","title":"DiscoverRequest","description":"Employer-side discovery query over the published, job-seeking candidate\npool. Every filter here is a TRANSPARENT matching factor (role, geography,\nskills, verification, status), never a hidden quality penalty. Protected\nattributes are never accepted or used."},"DiscoverResponse":{"properties":{"results":{"items":{"$ref":"#/components/schemas/DiscoveryResult"},"type":"array","title":"Results"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","title":"DiscoverResponse"},"DiscoveryClaim":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"organization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization"},"claim_type":{"type":"string","title":"Claim Type"},"verification_level":{"$ref":"#/components/schemas/VerificationLevel","default":"self_claimed"},"evidence":{"items":{"$ref":"#/components/schemas/ClaimEvidence"},"type":"array","title":"Evidence"}},"type":"object","required":["claim_type"],"title":"DiscoveryClaim","description":"A public, approved claim shown pseudonymously in discovery results."},"DiscoveryCredential":{"properties":{"issuer_name":{"type":"string","title":"Issuer Name"},"issuer_kind":{"type":"string","title":"Issuer Kind","default":"none"},"credential_type":{"type":"string","title":"Credential Type"},"title":{"type":"string","title":"Title"},"field_of_study":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Field Of Study"},"level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Level"},"issued_on":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Issued On"},"verification_level":{"$ref":"#/components/schemas/VerificationLevel","default":"company_verified"}},"type":"object","required":["issuer_name","credential_type","title"],"title":"DiscoveryCredential","description":"An active (visible, not revoked) attested credential shown pseudonymously.\n\nCarries only the issuer_name / issuer_kind and the credential fields; never\nissuer contact data or candidate PII."},"DiscoveryResult":{"properties":{"handle":{"type":"string","title":"Handle"},"location_public":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Public"},"remote_preference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Remote Preference"},"open_to_relocation":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Open To Relocation"},"verification_level":{"$ref":"#/components/schemas/VerificationLevel","default":"self_claimed"},"job_seeking_status":{"type":"string","title":"Job Seeking Status","default":"open"},"public_claims":{"items":{"$ref":"#/components/schemas/DiscoveryClaim"},"type":"array","title":"Public Claims"},"public_skills":{"items":{"$ref":"#/components/schemas/DiscoverySkill"},"type":"array","title":"Public Skills"},"public_credentials":{"items":{"$ref":"#/components/schemas/DiscoveryCredential"},"type":"array","title":"Public Credentials"},"reputation":{"$ref":"#/components/schemas/PublicReputationSummary"},"score":{"$ref":"#/components/schemas/DiscoveryScore"}},"type":"object","required":["handle","score"],"title":"DiscoveryResult","description":"A single pseudonymous discovery hit.\n\nPSEUDONYMOUS: never carries display_name, contact, exact city (unless the\ncandidate opted into geo_public_level=\"city\"), references, or private claims.\nOnly the handle, approved-public data, coarse geo, and the score."},"DiscoveryScore":{"properties":{"total_score":{"type":"number","title":"Total Score"},"confidence_score":{"type":"number","title":"Confidence Score"},"location_fit_score":{"type":"number","title":"Location Fit Score"},"momentum_score":{"type":"number","title":"Momentum Score"}},"type":"object","required":["total_score","confidence_score","location_fit_score","momentum_score"],"title":"DiscoveryScore"},"DiscoverySkill":{"properties":{"name":{"type":"string","title":"Name"},"proficiency":{"type":"number","title":"Proficiency","default":0.0},"velocity":{"type":"number","title":"Velocity","default":0.0},"verification_level":{"$ref":"#/components/schemas/VerificationLevel","default":"self_claimed"}},"type":"object","required":["name"],"title":"DiscoverySkill","description":"A public skill signal shown in discovery results."},"DocumentExtractRequest":{"properties":{"kind":{"type":"string","title":"Kind","default":""},"image_base64":{"type":"string","title":"Image Base64","default":""},"media_type":{"type":"string","title":"Media Type","default":""}},"type":"object","title":"DocumentExtractRequest","description":"One photographed identity document, in transit and nowhere else.\n\nkind: \"visa\" | \"national_id\" | \"passport\". Validated in the service.\nimage_base64: the decoded-image bytes, base64 encoded. A data-URL prefix\n    (\"data:image/jpeg;base64,...\") is accepted and stripped.\nmedia_type: what the client believes the image is. Recorded in the contract\n    for completeness and DELIBERATELY NOT TRUSTED -- the bytes are sniffed\n    and the sniffed type is what reaches the reader. The header is a claim;\n    the magic bytes are the fact (services/storage_service.sniff_image).\n\nThere is no filename field, and that is on purpose: a filename is one more\npiece of the document that would have to be prevented from surviving the\nrequest, and the cheapest way to guarantee that is to never accept one."},"DocumentExtractResponse":{"properties":{"document_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Type"},"expiry_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expiry Date"},"confidence":{"type":"string","title":"Confidence","default":"low"},"read_at":{"type":"string","format":"date-time","title":"Read At"}},"type":"object","required":["read_at"],"title":"DocumentExtractResponse","description":"What was read. Null when it could not be read.\n\ndocument_type: the short official designation as printed (\"H-1B\",\n    \"Schengen C\"), or null.\nexpiry_date: ISO YYYY-MM-DD, or null. Never a partial date: a half-read\n    \"2027\" is returned as null, because a date nobody read must not arrive\n    with the authority of one that was.\nconfidence: \"high\" | \"low\". Only a \"high\" visa read updates the candidate's\n    work authorization; \"low\" is advisory and changes nothing on the server.\nread_at: when the read happened."},"DomainChallengeRequest":{"properties":{"domain":{"type":"string","title":"Domain"}},"type":"object","required":["domain"],"title":"DomainChallengeRequest"},"DomainChallengeResponse":{"properties":{"domain":{"type":"string","title":"Domain"},"record_name":{"type":"string","title":"Record Name"},"record_value":{"type":"string","title":"Record Value"},"instructions":{"type":"string","title":"Instructions"}},"type":"object","required":["domain","record_name","record_value","instructions"],"title":"DomainChallengeResponse","description":"Instructions for the DNS TXT domain-ownership challenge.\n\nThe caller publishes a TXT record at record_name whose value equals\nrecord_value, then calls POST /companies/verify-domain."},"EligibilityPredicates":{"properties":{"over_18":{"type":"boolean","title":"Over 18","default":false},"over_21":{"type":"boolean","title":"Over 21","default":false}},"type":"object","title":"EligibilityPredicates","description":"Boolean-only eligibility predicates. Never carries the DOB or an age.\n\nFalse means \"not attested\" (no DOB on file), never \"unknown\": an employer\nmust not treat a missing DOB as eligible."},"EligibilityUpdate":{"properties":{"date_of_birth":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date Of Birth"},"work_authorized":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Work Authorized"}},"type":"object","title":"EligibilityUpdate","description":"Owner request to set private eligibility.\n\ndate_of_birth is an ISO YYYY-MM-DD string; pass null to CLEAR a stored DOB.\nwork_authorized is the candidate's self-declared boolean. Both are optional\nso a caller can update one without the other. Use model_fields_set to tell an\nexplicit null (clear the DOB) from an omitted field (leave the DOB untouched)."},"EligibilityView":{"properties":{"has_dob":{"type":"boolean","title":"Has Dob","default":false},"work_authorized":{"type":"boolean","title":"Work Authorized","default":false},"predicates":{"$ref":"#/components/schemas/EligibilityPredicates"}},"type":"object","title":"EligibilityView","description":"Owner-facing eligibility view.\n\nReturns has_dob, work_authorized, and the derived boolean predicates\n(over_18, over_21). The raw date_of_birth is never returned on any surface,\nincluding the owner's own read; it stays encrypted at rest."},"EventTense":{"type":"string","enum":["record","plan"],"title":"EventTense","description":"Was this WRITTEN DOWN as something that happened, or PLANNED?\n\nTHE RULE THIS EXISTS TO ENFORCE: a plan is never evidence. A document from\n2021 that plans a 2023 hire says what a company INTENDED, not what occurred,\nand services/latent_event_service.confirm refuses to raise the ladder for\none. Without this, \"we will hire 20 engineers\" would eventually read as\nevidence that twenty people were hired.\n\nHOW IT IS DECIDED, and it is decided deterministically (the extractor is\ncovered by test_extraction_is_deterministic, so nothing here may consult a\nclock): an event that STARTS AFTER the document was written cannot be a\nrecord of it, and a source that announces itself as a roadmap or a forecast\nis planning by its own words."},"Evidence":{"properties":{"evidence_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Evidence Id"},"type":{"$ref":"#/components/schemas/EvidenceType","default":"self_report"},"description":{"type":"string","title":"Description"},"source_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Ref"},"quality_score":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Quality Score","default":0.0}},"type":"object","required":["description"],"title":"Evidence"},"EvidenceAttachRequest":{"properties":{"evidence_type":{"type":"string","title":"Evidence Type","description":"e.g. document | link | reference | credential"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["evidence_type"],"title":"EvidenceAttachRequest","description":"Body for POST /candidates/me/claims/{claim_id}/evidence."},"EvidenceType":{"type":"string","enum":["document","link","reference","credential","self_report"],"title":"EvidenceType"},"ExtractionPolicy":{"properties":{"read_sources":{"items":{"type":"string"},"type":"array","title":"Read Sources"},"ignore_sources":{"items":{"type":"string"},"type":"array","title":"Ignore Sources"},"evidence_markers":{"items":{"type":"string"},"type":"array","title":"Evidence Markers"},"vocabulary":{"additionalProperties":{"type":"string"},"type":"object","title":"Vocabulary"},"exclude":{"items":{"type":"string"},"type":"array","title":"Exclude"}},"type":"object","title":"ExtractionPolicy","description":"What the CUSTOMER programs. The spine above is what they cannot.\n\nJorge: \"idealmente ellos programan el robot a sus necesidades\". Ship\npre-programmed suggestions (default_extraction_policy below); the customer\ntunes them.\n\nPERSISTED as of Loop 17 in its own versioned table (models.ExtractionPolicy,\nmigration 0040_extraction_policies) — NOT as a column on the organization: a\nchange to these rules changes what PERSONAL data XP extracts about people who\nnever signed up, so unlike proposal_ttl_days or digest_cadence every version\nis kept as history rather than overwritten. This model is only the BODY of a\npolicy; the versioning metadata and the spine ban live in\nschemas/extraction_policy.py, and GET/POST /core-sync/policy read and write it\n(routes/core_sync.py)."},"ExtractionPolicyPublic":{"properties":{"organization_id":{"type":"string","title":"Organization Id"},"version":{"type":"integer","title":"Version"},"is_active":{"type":"boolean","title":"Is Active"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"body":{"$ref":"#/components/schemas/ExtractionPolicy"},"created_by_member_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By Member Id"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"is_default":{"type":"boolean","title":"Is Default","default":false}},"type":"object","required":["organization_id","version","is_active","body"],"title":"ExtractionPolicyPublic","description":"A stored (or default) policy as an API would return it.\n\nCarries NOTHING about any person: the body is the customer's own rules about\nwhat to read, and the only identifiers are the organization's and the setting\nmember's. Reading a policy can never leak who is on XP."},"FairnessFactorAverages":{"properties":{"momentum":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Momentum"},"geography":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Geography"},"skills":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Skills"},"verification":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Verification"},"evidence":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Evidence"}},"type":"object","title":"FairnessFactorAverages"},"FairnessFactorSummary":{"properties":{"considered":{"$ref":"#/components/schemas/FairnessFactorAverages"},"advanced":{"$ref":"#/components/schemas/FairnessFactorAverages"}},"type":"object","required":["considered","advanced"],"title":"FairnessFactorSummary","description":"Average signal component scores for the ADVANCED set vs the full\nconsidered set, so the employer can see which factors are associated with\nadvancing. Aggregate averages only, never per-candidate values. Values are\n0-100 on the same scale as the signal component scores; None when the set is\nempty."},"FairnessFunnel":{"properties":{"surfaced":{"type":"integer","title":"Surfaced","default":0},"shortlisted":{"type":"integer","title":"Shortlisted","default":0},"access_requested":{"type":"integer","title":"Access Requested","default":0},"interviewing":{"type":"integer","title":"Interviewing","default":0},"hired":{"type":"integer","title":"Hired","default":0},"rejected":{"type":"integer","title":"Rejected","default":0},"considered":{"type":"integer","title":"Considered","default":0},"advanced":{"type":"integer","title":"Advanced","default":0}},"type":"object","title":"FairnessFunnel","description":"Aggregate counts per pipeline stage plus the total considered. Counts\nonly, never identities."},"FairnessProxyFlag":{"properties":{"code":{"type":"string","title":"Code"},"explanation":{"type":"string","title":"Explanation"},"suggestion":{"type":"string","title":"Suggestion"}},"type":"object","required":["code","explanation","suggestion"],"title":"FairnessProxyFlag","description":"A calm, neutral proxy-risk flag with a short explanation and a suggested\nreview step. Never an accusation; always framed as decision support."},"FairnessReport":{"properties":{"requisition_id":{"type":"string","title":"Requisition Id"},"funnel":{"$ref":"#/components/schemas/FairnessFunnel"},"selection_rates":{"$ref":"#/components/schemas/FairnessSelectionRates"},"factor_summary":{"anyOf":[{"$ref":"#/components/schemas/FairnessFactorSummary"},{"type":"null"}]},"proxy_flags":{"items":{"$ref":"#/components/schemas/FairnessProxyFlag"},"type":"array","title":"Proxy Flags"},"suppressed":{"type":"boolean","title":"Suppressed","default":false},"k_threshold":{"type":"integer","title":"K Threshold","default":5},"methodology_notes":{"items":{"type":"string"},"type":"array","title":"Methodology Notes"},"generated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Generated At"}},"type":"object","required":["requisition_id"],"title":"FairnessReport","description":"Per-requisition fairness process audit. AGGREGATE and k-anonymous. No\nprotected attributes, no identities, no contact. Decision support only; a\nhuman makes the hiring decision."},"FairnessSelectionRates":{"properties":{"shortlisted_of_considered":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Shortlisted Of Considered"},"interviewing_of_shortlisted":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Interviewing Of Shortlisted"},"hired_of_interviewing":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Hired Of Interviewing"}},"type":"object","title":"FairnessSelectionRates","description":"Stage-to-stage pass-through rates as fractions (0.0-1.0), rounded. None\nwhen the denominator is zero (no rate to report)."},"FileDocumentRequest":{"properties":{"name":{"type":"string","title":"Name"},"text":{"type":"string","title":"Text","default":""},"media_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Media Type"},"document_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Date"}},"type":"object","required":["name"],"title":"FileDocumentRequest","description":"A document handed to the librarian to distil and file. Text only in v1.\n\nThe client extracts the text; XP never stores the file. This is the richer\nreplacement for POST /sources -- it still feeds the blind people-event\npipeline, and additionally distils a knowledge .md."},"GenerateReportRequest":{"properties":{"topic_key":{"type":"string","title":"Topic Key"},"kind":{"type":"string","title":"Kind","default":"text"},"instructions":{"type":"string","title":"Instructions","default":""}},"type":"object","required":["topic_key"],"title":"GenerateReportRequest","description":"Ask the librarian to compose a report from a topic folder."},"GeneratedReport":{"properties":{"id":{"type":"string","title":"Id","default":""},"organization_id":{"type":"string","title":"Organization Id","default":""},"title":{"type":"string","title":"Title","default":""},"kind":{"type":"string","title":"Kind","default":"text"},"body_md":{"type":"string","title":"Body Md","default":""},"origin":{"type":"string","title":"Origin","default":"manual"},"topic_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Topic Key"},"created_at":{"type":"string","title":"Created At","default":""}},"type":"object","title":"GeneratedReport","description":"One report on the shelf: generated by the librarian or ingested from a tool."},"Geography":{"properties":{"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"lat":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lat"},"lng":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lng"},"open_to_relocation":{"type":"boolean","title":"Open To Relocation","default":false},"work_radius_km":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Work Radius Km"},"remote_preference":{"type":"string","title":"Remote Preference","default":"onsite"},"geo_public_level":{"type":"string","title":"Geo Public Level","default":"region"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"},"city_canonical":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City Canonical"},"consistency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Consistency"}},"type":"object","title":"Geography","description":"Candidate-controlled structured geography.\n\nGranularity is country / region (state or province) / city. The candidate\nalso declares job-matching signals (open_to_relocation, work_radius_km,\nremote_preference) and a visibility level (geo_public_level) that controls\nhow coarse the PUBLIC location string may be. Optional geo_lat/geo_lng are\nreserved for future radius math. Geography is a transparent matching factor,\nnever a hidden quality penalty."},"GrantedContactResponse":{"properties":{"candidate_id":{"type":"string","title":"Candidate Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"granted":{"type":"boolean","title":"Granted","default":true},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"eligibility":{"$ref":"#/components/schemas/GrantedEligibility"}},"type":"object","required":["candidate_id","expires_at"],"title":"GrantedContactResponse","description":"Response for the authorized company-side contact read (vault:read).\n\nReturned ONLY when the caller organization holds an ACTIVE grant for the\ncandidate. private_notes are never included in this company-facing view.\n\neligibility carries boolean-only predicates (over_18, over_21,\nwork_authorized) computed server-side; it never includes the DOB or age."},"GrantedEligibility":{"properties":{"over_18":{"type":"boolean","title":"Over 18","default":false},"over_21":{"type":"boolean","title":"Over 21","default":false},"work_authorized":{"type":"boolean","title":"Work Authorized","default":false},"phone_verified":{"type":"boolean","title":"Phone Verified","default":false},"sponsorship_required":{"type":"boolean","title":"Sponsorship Required","default":false},"visa_valid":{"type":"boolean","title":"Visa Valid","default":true},"authorized_countries":{"items":{"type":"string"},"type":"array","title":"Authorized Countries"},"licensed_professions":{"items":{"$ref":"#/components/schemas/LicensedProfession"},"type":"array","title":"Licensed Professions"},"identity_verified":{"type":"boolean","title":"Identity Verified","default":false},"name_match":{"type":"boolean","title":"Name Match","default":false}},"type":"object","title":"GrantedEligibility","description":"Boolean-only eligibility disclosed to an employer under an ACTIVE grant.\n\nBooleans ONLY. Never carries the date of birth or a computed age (age is a\nprotected attribute). over_18/over_21 are False when the candidate attested no\nDOB (False means \"not attested\"). work_authorized is the candidate's\nself-declared boolean."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"IdentityCompleteRequest":{"properties":{"verification_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Verification Id"}},"type":"object","title":"IdentityCompleteRequest"},"IdentityCompleteResponse":{"properties":{"status":{"type":"string","title":"Status"},"identity_verified":{"type":"boolean","title":"Identity Verified"},"verified_level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Verified Level"}},"type":"object","required":["status","identity_verified"],"title":"IdentityCompleteResponse"},"IdentityStartRequest":{"properties":{"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"document_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Type"}},"type":"object","title":"IdentityStartRequest"},"IdentityStartResponse":{"properties":{"verification_id":{"type":"string","title":"Verification Id"},"provider":{"type":"string","title":"Provider"},"redirect_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Redirect Url"},"status":{"type":"string","title":"Status"}},"type":"object","required":["verification_id","provider","status"],"title":"IdentityStartResponse"},"IdentityStatusResponse":{"properties":{"identity_verified":{"type":"boolean","title":"Identity Verified"},"status":{"type":"string","title":"Status"},"verified_level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Verified Level"},"verified_at":{"anyOf":[{},{"type":"null"}],"title":"Verified At"}},"type":"object","required":["identity_verified","status"],"title":"IdentityStatusResponse","description":"Owner status view: BOOLEANS + status only. Never the legal name/country/DOB."},"ImportCredentialRequest":{"properties":{"token":{"type":"string","title":"Token"}},"type":"object","required":["token"],"title":"ImportCredentialRequest"},"ImportLinkedInRequest":{"properties":{"profile_text":{"type":"string","title":"Profile Text"},"candidate_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Candidate Id"}},"type":"object","required":["profile_text"],"title":"ImportLinkedInRequest"},"ImportProposal":{"properties":{"claims":{"items":{"$ref":"#/components/schemas/ProposedImportClaim"},"type":"array","title":"Claims"},"skills":{"items":{"$ref":"#/components/schemas/ProposedImportSkill"},"type":"array","title":"Skills"}},"type":"object","title":"ImportProposal"},"ImportRequest":{"properties":{"source":{"type":"string","title":"Source"},"identifier":{"type":"string","title":"Identifier"}},"type":"object","required":["source","identifier"],"title":"ImportRequest","description":"Body for POST /candidates/me/imports.\n\nsource is a supported source name (for example \"github\"). identifier is the\nsource-specific handle to import (for example a GitHub username)."},"ImportResponse":{"properties":{"source":{"type":"string","title":"Source"},"imported_claims":{"type":"integer","title":"Imported Claims","default":0},"imported_skills":{"type":"integer","title":"Imported Skills","default":0},"proposed":{"$ref":"#/components/schemas/ImportProposal"},"notes":{"items":{"type":"string"},"type":"array","title":"Notes"}},"type":"object","required":["source"],"title":"ImportResponse","description":"Result of an import run.\n\nimported_claims / imported_skills are the counts attached as PENDING items.\nproposed echoes the attached items so the UI can render them immediately.\nnotes explain what happened, including the offline / not-found path where\nboth counts are zero."},"ImportSource":{"properties":{"source":{"type":"string","title":"Source"},"label":{"type":"string","title":"Label"},"connected":{"type":"boolean","title":"Connected","default":false},"requires":{"type":"string","title":"Requires","default":"username"}},"type":"object","required":["source","label"],"title":"ImportSource","description":"One entry in the static catalog of importable sources.\n\nconnected is always False: connectors read public data and hold no\nper-candidate connection state. requires is the identifier the source needs\n(\"username\" for GitHub, \"none\" for sources that import without one)."},"ImportSourcesResponse":{"properties":{"sources":{"items":{"$ref":"#/components/schemas/ImportSource"},"type":"array","title":"Sources"}},"type":"object","title":"ImportSourcesResponse"},"IngestReportRequest":{"properties":{"title":{"type":"string","title":"Title"},"body_md":{"type":"string","title":"Body Md"},"origin":{"type":"string","title":"Origin","default":"manual"},"topic_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Topic Key"}},"type":"object","required":["title","body_md"],"title":"IngestReportRequest","description":"Archive a report produced by another platform tool (Discover, Openings)."},"InterestedCandidate":{"properties":{"interest_id":{"type":"string","title":"Interest Id"},"handle":{"type":"string","title":"Handle"},"verification_level":{"$ref":"#/components/schemas/VerificationLevel","default":"self_claimed"},"location_public":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Public"},"mutual_match":{"type":"number","title":"Mutual Match","default":0.0},"candidate_fit":{"type":"number","title":"Candidate Fit","default":0.0},"score":{"type":"number","title":"Score","default":0.0},"added_to_pipeline":{"type":"boolean","title":"Added To Pipeline","default":false}},"type":"object","required":["interest_id","handle"],"title":"InterestedCandidate","description":"A pseudonymous candidate who signaled interest in a requisition.\n\nEmployer view. NEVER carries name or contact. handle + coarse public location\n+ verification + two-sided fit only. added_to_pipeline lets the recruiter see\nwhich interested candidates are already tracked."},"InterestedListResponse":{"properties":{"interested":{"items":{"$ref":"#/components/schemas/InterestedCandidate"},"type":"array","title":"Interested"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","title":"InterestedListResponse"},"InviteAccept":{"properties":{"token":{"type":"string","title":"Token"}},"type":"object","required":["token"],"title":"InviteAccept","description":"Redeem an invite. Public: the invitee has no credential yet — that is\nprecisely what they are here to collect."},"InviteCreated":{"properties":{"member":{"$ref":"#/components/schemas/OrganizationMemberPublic"},"invite_url":{"type":"string","title":"Invite Url"},"email_sent":{"type":"boolean","title":"Email Sent"}},"type":"object","required":["member","invite_url","email_sent"],"title":"InviteCreated","description":"Response for POST /companies/members/invite.\n\nCarries NO key: an invited member has none until they accept. invite_url is\nreturned to the admin so a failed or unconfigured email is never a dead end\n— they can always hand the link over themselves."},"IssueBatchRequest":{"properties":{"template":{"$ref":"#/components/schemas/BatchTemplate"},"recipients":{"items":{"$ref":"#/components/schemas/BatchRecipient"},"type":"array","title":"Recipients"}},"type":"object","required":["template"],"title":"IssueBatchRequest"},"IssueBatchResponse":{"properties":{"issued":{"type":"integer","title":"Issued","default":0},"pending_claim":{"type":"integer","title":"Pending Claim","default":0},"errors":{"items":{"$ref":"#/components/schemas/BatchError"},"type":"array","title":"Errors"},"results":{"items":{"$ref":"#/components/schemas/BatchResultItem"},"type":"array","title":"Results"}},"type":"object","title":"IssueBatchResponse"},"IssueCredentialRequest":{"properties":{"predicates":{"items":{"$ref":"#/components/schemas/PredicateSpec"},"type":"array","title":"Predicates"},"audience":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audience"},"ttl_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ttl Minutes"}},"type":"object","required":["predicates"],"title":"IssueCredentialRequest"},"IssuerCredentialList":{"properties":{"credentials":{"items":{"$ref":"#/components/schemas/IssuerCredentialView"},"type":"array","title":"Credentials"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","title":"IssuerCredentialList"},"IssuerCredentialView":{"properties":{"id":{"type":"string","title":"Id"},"subject_candidate_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject Candidate Id"},"status":{"type":"string","title":"Status","default":"issued"},"issuer_organization_id":{"type":"string","title":"Issuer Organization Id"},"issuer_name":{"type":"string","title":"Issuer Name"},"issuer_kind":{"type":"string","title":"Issuer Kind","default":"none"},"credential_type":{"type":"string","title":"Credential Type"},"title":{"type":"string","title":"Title"},"field_of_study":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Field Of Study"},"level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Level"},"issued_on":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Issued On"},"issued_on_iso":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Issued On Iso"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"verification_level":{"type":"string","title":"Verification Level"},"content_hash":{"type":"string","title":"Content Hash"},"revoked_by_issuer":{"type":"boolean","title":"Revoked By Issuer","default":false},"revoked_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Revoked Reason"},"hidden_by_candidate":{"type":"boolean","title":"Hidden By Candidate","default":false},"claimed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Claimed At"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","issuer_organization_id","issuer_name","credential_type","title","verification_level","content_hash"],"title":"IssuerCredentialView","description":"Issuer-facing view of a credential the caller organization issued.\n\nDeliberately OMITS subject_email. An unclaimed credential carries the\ngraduate's target email only for internal binding at first login; that raw\ncontact must never leave the backend on an issuer-facing surface. The issuer\nalready holds the recipient list it uploaded, so nothing is lost, and no raw\nPII rides along in the issued-list payload. Everything else mirrors\nAttestedCredential for display."},"IssuerProfile":{"properties":{"organization_id":{"type":"string","title":"Organization Id"},"name":{"type":"string","title":"Name"},"kind":{"type":"string","title":"Kind","default":"none"},"type":{"type":"string","title":"Type","default":"company"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"},"domain_verified":{"type":"boolean","title":"Domain Verified","default":false},"credentials_issued_count":{"type":"integer","title":"Credentials Issued Count","default":0}},"type":"object","required":["organization_id","name"],"title":"IssuerProfile","description":"PUBLIC, non-sensitive issuer profile for a co-branded verification page.\n\nExposes only public org fields plus a count. No contact data and no candidate\ndata. domain_verified reflects the real state so a viewer can see whether the\nissuer is verified."},"LanguageEntry":{"properties":{"language":{"type":"string","title":"Language","description":"ISO-639-1 code or a language name."},"proficiency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proficiency","description":"CEFR level: A1|A2|B1|B2|C1|C2|native."}},"type":"object","required":["language"],"title":"LanguageEntry","description":"One declared language + CEFR proficiency (input shape)."},"LanguageView":{"properties":{"language_code":{"type":"string","title":"Language Code"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"proficiency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proficiency"}},"type":"object","required":["language_code"],"title":"LanguageView","description":"One stored language (output shape)."},"LanguagesResponse":{"properties":{"languages":{"items":{"$ref":"#/components/schemas/LanguageView"},"type":"array","title":"Languages"}},"type":"object","title":"LanguagesResponse"},"LibraryDocument":{"properties":{"id":{"type":"string","title":"Id","default":""},"organization_id":{"type":"string","title":"Organization Id","default":""},"topic_key":{"type":"string","title":"Topic Key","default":"org_structure"},"name":{"type":"string","title":"Name","default":""},"summary_md":{"type":"string","title":"Summary Md","default":""},"source_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Date"},"filed_at":{"type":"string","title":"Filed At","default":""},"verdict":{"type":"string","title":"Verdict","default":"filed"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","title":"LibraryDocument","description":"One distilled document, as the employer is allowed to see it.\n\nsummary_md is the DISTILLED markdown -- never the raw document, which XP\ndiscards. It carries no email and no list of people by construction (the\ndistiller scrubs them); those live only in the blind latent store."},"LibraryEvent":{"properties":{"library_event_id":{"type":"string","title":"Library Event Id","default":""},"category":{"type":"string","title":"Category","default":"People"},"subject_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject Name"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"organization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization"},"start_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"},"end_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"},"statement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Statement"},"tense":{"$ref":"#/components/schemas/EventTense","default":"record"},"source_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Date"},"source_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Ref"}},"type":"object","title":"LibraryEvent","description":"One shelved fact, as the employer is allowed to see it.\n\nNOTE WHAT IS ABSENT AND KEEP IT ABSENT: no subject_email, no candidate_id, no\nbinding state. Those live only in the latent store, which has no\nlist-by-organization precisely so absence cannot betray who joined XP\n(repositories/library_repository.py, the module docstring)."},"LibraryView":{"properties":{"counts":{"additionalProperties":{"type":"integer"},"type":"object","title":"Counts"},"events":{"items":{"$ref":"#/components/schemas/LibraryEvent"},"type":"array","title":"Events"},"sources":{"items":{"$ref":"#/components/schemas/SourceLedgerItem"},"type":"array","title":"Sources"}},"type":"object","title":"LibraryView","description":"The company's own shelf: counts, the facts, and the source ledger."},"LicenseCredentialCreate":{"properties":{"kind":{"type":"string","title":"Kind","default":"license"},"name":{"type":"string","minLength":1,"title":"Name"},"authority_name":{"type":"string","minLength":1,"title":"Authority Name"},"number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Number"},"jurisdiction_country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Jurisdiction Country"},"issued_on":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Issued On"},"expiry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expiry"}},"type":"object","required":["name","authority_name"],"title":"LicenseCredentialCreate","description":"Owner request to add a license/certification.\n\nnumber is optional; when given ONLY its sha256 hash + last-4 are stored (never\nthe raw number, never logged). kind is \"license\" | \"certification\"."},"LicenseCredentialListResponse":{"properties":{"credentials":{"items":{"$ref":"#/components/schemas/LicenseCredentialView"},"type":"array","title":"Credentials"}},"type":"object","title":"LicenseCredentialListResponse"},"LicenseCredentialView":{"properties":{"id":{"type":"string","title":"Id"},"kind":{"type":"string","title":"Kind"},"name":{"type":"string","title":"Name"},"authority_name":{"type":"string","title":"Authority Name"},"authority_organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authority Organization Id"},"jurisdiction_country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Jurisdiction Country"},"number_last4":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Number Last4"},"issued_on":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Issued On"},"expiry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expiry"},"verification_method":{"type":"string","title":"Verification Method"},"verification_level":{"type":"string","title":"Verification Level"},"status":{"type":"string","title":"Status"},"expired":{"type":"boolean","title":"Expired","default":false},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["id","kind","name","authority_name","verification_method","verification_level","status"],"title":"LicenseCredentialView","description":"Owner-facing license/certification. NEVER the hash or raw number.\n\nnumber_last4 is a masked display tail only (may be None when no number was\nsupplied). status/level reflect the current verification state."},"LicensedProfession":{"properties":{"name":{"type":"string","title":"Name"},"authority":{"type":"string","title":"Authority"},"jurisdiction":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Jurisdiction"},"valid":{"type":"boolean","title":"Valid","default":false}},"type":"object","required":["name","authority"],"title":"LicensedProfession","description":"Employer-facing coded predicate under an ACTIVE grant.\n\nname / authority / jurisdiction + validity ONLY. NEVER the number or hash.\nvalid is True when the credential is verified and not expired."},"LogoutResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true}},"type":"object","title":"LogoutResponse"},"MemberCreate":{"properties":{"name":{"type":"string","title":"Name"},"email":{"type":"string","title":"Email"},"role":{"type":"string","title":"Role","default":"recruiter"}},"type":"object","required":["name","email"],"title":"MemberCreate"},"MemberCreated":{"properties":{"member":{"$ref":"#/components/schemas/OrganizationMemberPublic"},"api_key":{"type":"string","title":"Api Key"}},"type":"object","required":["member","api_key"],"title":"MemberCreated","description":"Response for POST /companies/members. Returns the member plus the full\nmember API key ONCE. Only the hash of the key is stored."},"MemberInvite":{"properties":{"name":{"type":"string","title":"Name"},"email":{"type":"string","title":"Email"},"role":{"type":"string","title":"Role","default":"recruiter"}},"type":"object","required":["name","email"],"title":"MemberInvite","description":"Invite a colleague by WORK email. The address is not a contact detail\nhere — it is the evidence of employment the whole flow rests on."},"MemberList":{"properties":{"members":{"items":{"$ref":"#/components/schemas/OrganizationMemberPublic"},"type":"array","title":"Members"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","title":"MemberList"},"ModerationOverview":{"properties":{"organization_id":{"type":"string","title":"Organization Id"},"webhooks_total":{"type":"integer","title":"Webhooks Total","default":0},"webhooks_active":{"type":"integer","title":"Webhooks Active","default":0},"delivery_failures":{"type":"integer","title":"Delivery Failures","default":0},"issued_credentials_total":{"type":"integer","title":"Issued Credentials Total","default":0},"issued_credentials_revoked":{"type":"integer","title":"Issued Credentials Revoked","default":0}},"type":"object","required":["organization_id"],"title":"ModerationOverview","description":"A tenant-scoped operational snapshot for one organization."},"ModerationRevokeRequest":{"properties":{"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","title":"ModerationRevokeRequest"},"ModerationRevokeResponse":{"properties":{"kind":{"type":"string","title":"Kind"},"id":{"type":"string","title":"Id"},"revoked":{"type":"boolean","title":"Revoked"}},"type":"object","required":["kind","id","revoked"],"title":"ModerationRevokeResponse"},"NotificationItem":{"properties":{"id":{"type":"string","title":"Id"},"event":{"type":"string","title":"Event"},"title":{"type":"string","title":"Title"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"},"related_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Related Id"},"read":{"type":"boolean","title":"Read","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","event","title","created_at"],"title":"NotificationItem"},"NotificationListResponse":{"properties":{"notifications":{"items":{"$ref":"#/components/schemas/NotificationItem"},"type":"array","title":"Notifications"},"unread_count":{"type":"integer","title":"Unread Count"}},"type":"object","required":["notifications","unread_count"],"title":"NotificationListResponse"},"NotificationMarkAllReadResponse":{"properties":{"updated":{"type":"integer","title":"Updated"}},"type":"object","required":["updated"],"title":"NotificationMarkAllReadResponse"},"NotificationMarkReadResponse":{"properties":{"id":{"type":"string","title":"Id"},"read":{"type":"boolean","title":"Read","default":true}},"type":"object","required":["id"],"title":"NotificationMarkReadResponse"},"OnboardingChatRequest":{"properties":{"message":{"type":"string","title":"Message"},"candidate_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Candidate Id"}},"type":"object","required":["message"],"title":"OnboardingChatRequest"},"OnboardingChatResponse":{"properties":{"reply":{"type":"string","title":"Reply"},"follow_up_questions":{"items":{"type":"string"},"type":"array","title":"Follow Up Questions"},"captured_facts":{"items":{"type":"string"},"type":"array","title":"Captured Facts"}},"type":"object","required":["reply"],"title":"OnboardingChatResponse"},"OpportunitiesResponse":{"properties":{"opportunities":{"items":{"$ref":"#/components/schemas/CandidateOpportunity"},"type":"array","title":"Opportunities"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","title":"OpportunitiesResponse"},"OpportunityInterestResponse":{"properties":{"requisition_id":{"type":"string","title":"Requisition Id"},"interested":{"type":"boolean","title":"Interested"},"status":{"type":"string","title":"Status","default":"interested"}},"type":"object","required":["requisition_id","interested"],"title":"OpportunityInterestResponse","description":"Result of a candidate interest / uninterest signal. Idempotent."},"OrgAgentCreate":{"properties":{"name":{"type":"string","title":"Name"},"kind":{"type":"string","title":"Kind","default":"mcp"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"rate_limit":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Rate Limit"}},"type":"object","required":["name"],"title":"OrgAgentCreate","description":"Create an agent. The caller names it, says how it connects, and asks for\nscopes; XP decides what it actually gets (see the service: the scope set is\nintersected with the creator's own, and the rate ceiling is inherited)."},"OrgAgentCreated":{"properties":{"agent":{"$ref":"#/components/schemas/OrgAgentPublic"},"token":{"type":"string","title":"Token"}},"type":"object","required":["agent","token"],"title":"OrgAgentCreated","description":"Response for POST /companies/agents. Carries the full token ONCE.\n\nXP stores only the hash, so this response is the single moment the plaintext\nexists anywhere outside the caller's memory. There is no endpoint that shows\nit again, and that is a feature, not an omission."},"OrgAgentList":{"properties":{"agents":{"items":{"$ref":"#/components/schemas/OrgAgentPublic"},"type":"array","title":"Agents"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","title":"OrgAgentList"},"OrgAgentPublic":{"properties":{"id":{"type":"string","title":"Id"},"organization_id":{"type":"string","title":"Organization Id"},"name":{"type":"string","title":"Name"},"kind":{"type":"string","title":"Kind","default":"mcp"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"rate_limit":{"type":"integer","title":"Rate Limit"},"token_prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token Prefix"},"created_by_member_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By Member Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revoked At"},"status":{"type":"string","title":"Status","default":"active"}},"type":"object","required":["id","organization_id","name","rate_limit","created_at"],"title":"OrgAgentPublic","description":"An agent as returned by the API. NEVER carries the token."},"OrgUsageStat":{"properties":{"metric":{"type":"string","title":"Metric"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["metric","count"],"title":"OrgUsageStat"},"OrgUsageStats":{"properties":{"organization_id":{"type":"string","title":"Organization Id"},"metrics":{"items":{"$ref":"#/components/schemas/OrgUsageStat"},"type":"array","title":"Metrics"}},"type":"object","required":["organization_id"],"title":"OrgUsageStats"},"OrganizationMemberPublic":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"email":{"type":"string","title":"Email"},"role":{"type":"string","title":"Role"},"status":{"type":"string","title":"Status","default":"active"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"key_prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Prefix"}},"type":"object","required":["id","name","email","role","created_at"],"title":"OrganizationMemberPublic","description":"A member as returned by GET /companies/members. Never carries the key."},"OrganizationProfileState":{"properties":{"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"type":{"type":"string","title":"Type","default":"company"},"domain_verified":{"type":"boolean","title":"Domain Verified","default":false},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website"},"socials":{"$ref":"#/components/schemas/PublicOrganizationSocials"},"verify_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Verify Url"},"is_public":{"type":"boolean","title":"Is Public","default":false}},"type":"object","required":["slug","name"],"title":"OrganizationProfileState","description":"What the OWNER sees in the editor: the public face plus the switch.\n\nPublicOrganization deliberately omits is_public — for a stranger reading\n/company/{slug} the flag is tautological (an unpublished page 404s, so\nnobody reads it as False). For the owner it is the single most important\nfact on the screen, and there was no endpoint that reported it. The editor\nwas inferring it from the slug, which survives unpublishing: the page would\nhave claimed to be live while it 404'd."},"OutcomesResponse":{"properties":{"total_issued":{"type":"integer","title":"Total Issued","default":0},"total_claimed":{"type":"integer","title":"Total Claimed","default":0},"pending_claim":{"type":"integer","title":"Pending Claim","default":0},"claim_rate":{"type":"number","title":"Claim Rate","default":0.0},"active_graduates":{"type":"integer","title":"Active Graduates","default":0},"discoverable_graduates":{"type":"integer","title":"Discoverable Graduates","default":0},"verification_level_distribution":{"additionalProperties":{"type":"integer"},"type":"object","title":"Verification Level Distribution"},"top_skills":{"items":{"$ref":"#/components/schemas/TopSkill"},"type":"array","title":"Top Skills"},"suppressed":{"type":"boolean","title":"Suppressed","default":false},"k_threshold":{"type":"integer","title":"K Threshold","default":5}},"type":"object","title":"OutcomesResponse","description":"Privacy-respecting aggregate for the caller org over credentials it issued.\n\nK-ANONYMITY: when total_claimed < k_threshold the response is suppressed\n(suppressed=True) and the granular breakdowns (top_skills,\nverification_level_distribution) are emptied so no individual can be\nre-identified. Individual skill buckets below k_threshold are always dropped.\nThis surface NEVER returns candidate identifiers, names, handles, or contact\ndata; only aggregate counts."},"OwnershipClaimResponse":{"properties":{"claimed":{"type":"boolean","title":"Claimed"},"message":{"type":"string","title":"Message"},"owner":{"anyOf":[{"$ref":"#/components/schemas/OrganizationMemberPublic"},{"type":"null"}]}},"type":"object","required":["claimed","message"],"title":"OwnershipClaimResponse","description":"Result of claiming ownership by re-proving the domain."},"PassViewStats":{"properties":{"views":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Views"},"k_anonymous":{"type":"boolean","title":"K Anonymous","default":false},"threshold":{"type":"integer","title":"Threshold"}},"type":"object","required":["threshold"],"title":"PassViewStats","description":"K-anonymous view of a candidate's own portable-pass verifications."},"PeerVerificationDecision":{"properties":{"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","title":"PeerVerificationDecision","description":"Optional body for peer approve/reject (a reason may be attached)."},"PhoneConfirmRequest":{"properties":{"code":{"type":"string","title":"Code"}},"type":"object","required":["code"],"title":"PhoneConfirmRequest","description":"Owner request to confirm a phone verification code."},"PhoneConfirmResponse":{"properties":{"phone_verified":{"type":"boolean","title":"Phone Verified","default":false}},"type":"object","title":"PhoneConfirmResponse"},"PhoneStartRequest":{"properties":{"phone":{"type":"string","title":"Phone"},"default_country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Country"},"prefer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prefer","default":"whatsapp"}},"type":"object","required":["phone"],"title":"PhoneStartRequest","description":"Owner request to begin phone verification.\n\nphone is a raw international number (E.164 preferred, e.g. +573001112233).\ndefault_country is an optional ISO-3166-1 alpha-2 used only to prefix a\nbare national number. prefer selects the delivery channel; WhatsApp is always\npreferred and SMS is the fallback."},"PhoneStartResponse":{"properties":{"channel":{"type":"string","title":"Channel"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"}},"type":"object","required":["channel","expires_at"],"title":"PhoneStartResponse","description":"Result of starting verification. NEVER returns the code or the number.\n\nchannel is the delivery channel actually selected (\"whatsapp\" | \"sms\")."},"PilotState":{"properties":{"enabled":{"type":"boolean","title":"Enabled"},"side":{"type":"string","title":"Side"},"native_provider":{"type":"string","title":"Native Provider"},"available_providers":{"items":{"type":"string"},"type":"array","title":"Available Providers"},"delegated_scopes":{"items":{"type":"string"},"type":"array","title":"Delegated Scopes"},"connected_agents":{"items":{"$ref":"#/components/schemas/ConnectedAgent"},"type":"array","title":"Connected Agents"},"mock":{"type":"boolean","title":"Mock","default":true}},"type":"object","required":["enabled","side","native_provider","available_providers","delegated_scopes","connected_agents"],"title":"PilotState"},"PipelineCandidate":{"properties":{"id":{"type":"string","title":"Id"},"requisition_id":{"type":"string","title":"Requisition Id"},"candidate_id":{"type":"string","title":"Candidate Id"},"handle":{"type":"string","title":"Handle"},"stage":{"type":"string","title":"Stage","default":"surfaced"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"verification_level":{"$ref":"#/components/schemas/VerificationLevel","default":"self_claimed"},"location_public":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Public"},"score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Score"},"added_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Added By"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","requisition_id","candidate_id","handle"],"title":"PipelineCandidate","description":"A pipeline entry. PSEUDONYMOUS: handle + coarse geo + verification + score\n+ stage/note only. NEVER name or contact data."},"PipelineCandidateAdd":{"properties":{"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Handle"},"candidate_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Candidate Id"},"stage":{"type":"string","title":"Stage","default":"surfaced"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","title":"PipelineCandidateAdd","description":"Add a candidate to a requisition pipeline. Resolve by handle OR\ncandidate_id (at least one required)."},"PipelineCandidateUpdate":{"properties":{"stage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stage"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","title":"PipelineCandidateUpdate"},"PipelineGrouped":{"properties":{"stages":{"additionalProperties":{"items":{"$ref":"#/components/schemas/PipelineCandidate"},"type":"array"},"type":"object","title":"Stages"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","title":"PipelineGrouped","description":"Pipeline grouped by stage. Every stage key is present (possibly empty)."},"PredicateSpec":{"properties":{"type":{"type":"string","title":"Type"},"params":{"type":"object","title":"Params","default":{}}},"type":"object","required":["type"],"title":"PredicateSpec"},"ProposalList":{"properties":{"proposals":{"items":{"$ref":"#/components/schemas/ProposalPublic"},"type":"array","title":"Proposals"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"pending_count":{"type":"integer","title":"Pending Count","default":0}},"type":"object","title":"ProposalList"},"ProposalPublic":{"properties":{"id":{"type":"string","title":"Id"},"organization_id":{"type":"string","title":"Organization Id"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Name"},"kind":{"type":"string","title":"Kind"},"payload":{"type":"object","title":"Payload"},"provenance":{"$ref":"#/components/schemas/Provenance"},"status":{"type":"string","title":"Status","default":"pending"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"decided_by_member_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Decided By Member Id"},"decided_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Decided At"},"result":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Result"},"required_scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Required Scope"}},"type":"object","required":["id","organization_id","kind","provenance","created_at"],"title":"ProposalPublic","description":"A proposal as returned by the API."},"ProposedImportClaim":{"properties":{"claim_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Claim Id"},"claim_type":{"type":"string","title":"Claim Type"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"status":{"$ref":"#/components/schemas/ClaimStatus","default":"pending"},"is_public":{"type":"boolean","title":"Is Public","default":false}},"type":"object","required":["claim_type"],"title":"ProposedImportClaim","description":"A pending, self-claimed claim created by an import, echoed back to the UI."},"ProposedImportSkill":{"properties":{"skill":{"type":"string","title":"Skill"},"proficiency":{"type":"number","title":"Proficiency","default":0.0},"velocity":{"type":"number","title":"Velocity","default":0.0}},"type":"object","required":["skill"],"title":"ProposedImportSkill"},"Provenance":{"properties":{"source_url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Source Url"},"fetched_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Fetched At"},"why":{"type":"string","maxLength":1000,"minLength":3,"title":"Why"}},"type":"object","required":["why"],"title":"Provenance","description":"Why this proposal exists and what it was derived from.\n\nREQUIRED ON EVERY PROPOSAL, and this is the point of the object rather than\na nicety. A proposal a human cannot trace is a rumour, and a queue of\nrumours is a queue that gets signed on autopilot — which is precisely the\nfailure the human signature was introduced to prevent. If the agent cannot\nsay where the ask came from, the ask does not get made.\n\n`why` carries the burden: source_url is optional because a legitimate\nproposal may be derived from the organization's own attached data rather\nthan from a page. An unsourced reason is still a reason a human can weigh;\nno reason at all is not."},"PublicAccessRequestCreate":{"properties":{"requester_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requester Name"},"requester_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requester Email"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name"},"purpose":{"type":"string","minLength":3,"title":"Purpose"},"requested_scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requested Scope"}},"type":"object","required":["purpose"],"title":"PublicAccessRequestCreate","description":"Access request submitted from the public QR scan flow.\n\nA recruiter who scanned the card asks the candidate for access. Purpose is\nmandatory. Contact fields identify the requester, not the candidate."},"PublicAccessRequestResponse":{"properties":{"request_id":{"type":"string","title":"Request Id"},"status":{"$ref":"#/components/schemas/AccessRequestStatus","default":"pending"}},"type":"object","required":["request_id"],"title":"PublicAccessRequestResponse"},"PublicCard":{"properties":{"handle":{"type":"string","title":"Handle"},"verification_level":{"$ref":"#/components/schemas/VerificationLevel","default":"self_claimed"},"is_published":{"type":"boolean","title":"Is Published","default":true},"qr":{"$ref":"#/components/schemas/PublicQR"},"request_access_url":{"type":"string","title":"Request Access Url"},"location_public":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Public"},"remote_preference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Remote Preference"},"open_to_relocation":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Open To Relocation"},"public_claims":{"items":{"$ref":"#/components/schemas/PublicCardClaim"},"type":"array","title":"Public Claims"},"reputation":{"$ref":"#/components/schemas/PublicReputationSummary"}},"type":"object","required":["handle","qr","request_access_url"],"title":"PublicCard","description":"Privacy-first public card.\n\nReveals nothing personal. It exposes only the public handle, the\nverification status, the publish flag, a QR code, and a request-access URL.\nNames, headline, location, summary, claims, skill signals, references,\nmomentum, contact, salary, and notes are NOT public and never appear here."},"PublicCardClaim":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"organization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization"},"claim_type":{"type":"string","title":"Claim Type"},"verification_level":{"$ref":"#/components/schemas/VerificationLevel","default":"self_claimed"},"evidence":{"items":{"$ref":"#/components/schemas/PublicClaimEvidence"},"type":"array","title":"Evidence"}},"type":"object","required":["claim_type"],"title":"PublicCardClaim","description":"An approved, public claim shown on the public card, with proof evidence.\n\nOnly approved public claims appear. Evidence on private or unapproved claims\nis never included, and no PII is ever exposed."},"PublicClaimEvidence":{"properties":{"type":{"type":"string","title":"Type","default":"self_report"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"}},"type":"object","title":"PublicClaimEvidence","description":"Public proof attached to an approved public claim: type, label, url only.\n\nNever carries PII. Only surfaced for approved public claims."},"PublicOrganization":{"properties":{"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"type":{"type":"string","title":"Type","default":"company"},"domain_verified":{"type":"boolean","title":"Domain Verified","default":false},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website"},"socials":{"$ref":"#/components/schemas/PublicOrganizationSocials"},"verify_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Verify Url"}},"type":"object","required":["slug","name"],"title":"PublicOrganization","description":"What a stranger sees at /company/{slug}.\n\nCarries NO member, no key, no request and no candidate — nothing about the\npeople on either side of this organization. Everything here is the company\ntalking about itself, plus marks XP derived rather than accepted."},"PublicOrganizationDirectory":{"properties":{"organizations":{"items":{"$ref":"#/components/schemas/PublicOrganizationRef"},"type":"array","title":"Organizations"}},"type":"object","title":"PublicOrganizationDirectory","description":"GET /companies/public — every company that opted in.\n\nThis exists for one reader: the sitemap. A crawler cannot guess slugs, so\nwithout an enumeration a published page is a page nobody finds, which makes\nthe publish switch decorative.\n\nIt carries slug and name only. Not because the rest is secret — the profile\npage serves it to anyone — but because a list is a different object from a\npage: it gets scraped in one request. Whoever wants the description can pay\na request per company for it, like a reader would."},"PublicOrganizationRef":{"properties":{"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"}},"type":"object","required":["slug","name"],"title":"PublicOrganizationRef","description":"One line in the public directory: enough to build a URL, nothing else."},"PublicOrganizationSocials":{"properties":{"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url"},"whatsapp_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Whatsapp Url"},"x_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X Url"}},"type":"object","title":"PublicOrganizationSocials"},"PublicQR":{"properties":{"provider":{"type":"string","title":"Provider"},"svg":{"type":"string","title":"Svg"},"png_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Png Url"},"target_url":{"type":"string","title":"Target Url"}},"type":"object","required":["provider","svg","target_url"],"title":"PublicQR","description":"QR payload exposed on the public card. The target is a public URL only."},"PublicReputationSummary":{"properties":{"verified_references":{"type":"integer","title":"Verified References","default":0},"verified_credentials":{"type":"integer","title":"Verified Credentials","default":0},"reputation_level":{"type":"string","title":"Reputation Level","default":"emerging"},"attestations_by_method":{"type":"object","title":"Attestations By Method"},"verified_licenses":{"type":"integer","title":"Verified Licenses","default":0},"identity_verified":{"type":"boolean","title":"Identity Verified","default":false}},"type":"object","title":"PublicReputationSummary","description":"The PUBLIC / discovery reputation summary: COUNTS ONLY.\n\nNEVER the referee identity or contact. Exposes only verified_references and\nverified_credentials counts plus the modest reputation_level band."},"PublishRequest":{"properties":{"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Handle"}},"type":"object","title":"PublishRequest","description":"Body for POST /candidates/me/publish. handle is optional; when supplied it\nis validated and must be unique."},"PublishResponse":{"properties":{"candidate_id":{"type":"string","title":"Candidate Id"},"handle":{"type":"string","title":"Handle"},"is_published":{"type":"boolean","title":"Is Published"},"public_url":{"type":"string","title":"Public Url"}},"type":"object","required":["candidate_id","handle","is_published","public_url"],"title":"PublishResponse"},"QuestionCreateRequest":{"properties":{"prompt":{"type":"string","title":"Prompt"},"qtype":{"type":"string","title":"Qtype"},"options":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Options"},"answer":{"title":"Answer"},"points":{"type":"integer","title":"Points","default":1},"position":{"type":"integer","title":"Position","default":0}},"type":"object","required":["prompt","qtype"],"title":"QuestionCreateRequest"},"RankCandidateInput":{"properties":{"candidate_id":{"type":"string","title":"Candidate Id"},"candidate_geography":{"anyOf":[{"$ref":"#/components/schemas/CandidateGeographyInput"},{"type":"null"}]},"claims":{"items":{"$ref":"#/components/schemas/Claim-Input"},"type":"array","title":"Claims"},"skill_signals":{"items":{"$ref":"#/components/schemas/SkillSignal"},"type":"array","title":"Skill Signals"}},"type":"object","required":["candidate_id"],"title":"RankCandidateInput"},"RankRequest":{"properties":{"target_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Role"},"target_location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Location"},"target_geography":{"anyOf":[{"$ref":"#/components/schemas/TargetGeography"},{"type":"null"}]},"candidates":{"items":{"$ref":"#/components/schemas/RankCandidateInput"},"type":"array","title":"Candidates"}},"type":"object","title":"RankRequest"},"RankResponse":{"properties":{"target_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Role"},"ranked":{"items":{"$ref":"#/components/schemas/RankedCandidate"},"type":"array","title":"Ranked"},"notes":{"items":{"type":"string"},"type":"array","title":"Notes"}},"type":"object","title":"RankResponse"},"RankedCandidate":{"properties":{"candidate_id":{"type":"string","title":"Candidate Id"},"rank":{"type":"integer","title":"Rank"},"total_score":{"type":"number","title":"Total Score"},"confidence_score":{"type":"number","title":"Confidence Score"},"interpretation":{"type":"string","title":"Interpretation"}},"type":"object","required":["candidate_id","rank","total_score","confidence_score","interpretation"],"title":"RankedCandidate"},"RefereeDecline":{"properties":{"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","title":"RefereeDecline","description":"Optional body for POST /references/token/{token}/decline."},"RefereePublicView":{"properties":{"candidate_handle":{"type":"string","title":"Candidate Handle"},"candidate_display_name":{"type":"string","title":"Candidate Display Name"},"relationship":{"type":"string","title":"Relationship"},"context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context"},"status":{"type":"string","title":"Status","default":"requested"}},"type":"object","required":["candidate_handle","candidate_display_name","relationship"],"title":"RefereePublicView","description":"What a referee sees at GET /references/token/{token}.\n\nPSEUDONYMOUS about the candidate: the chosen public identity (handle +\ndisplay name), the relationship, and the context the candidate asked them to\nspeak to. NEVER the candidate's contact or private data."},"RefereeSubmit":{"properties":{"statement":{"type":"string","title":"Statement"},"relationship":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Relationship"},"agree":{"type":"boolean","title":"Agree","default":false},"relationship_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Relationship Type"},"attested_skills":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":12},{"type":"null"}],"title":"Attested Skills"},"impact_note":{"anyOf":[{"type":"string","maxLength":280},{"type":"null"}],"title":"Impact Note"}},"type":"object","required":["statement"],"title":"RefereeSubmit","description":"Body for POST /references/token/{token}.\n\nstatement is required (min length enforced). relationship optionally confirms\nor adjusts the stated relationship. agree must be true."},"Reference":{"properties":{"id":{"type":"string","title":"Id"},"referee_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Referee Name"},"relationship":{"type":"string","title":"Relationship"},"context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context"},"statement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Statement"},"status":{"type":"string","title":"Status","default":"requested"},"hidden_by_candidate":{"type":"boolean","title":"Hidden By Candidate","default":false},"submitted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Submitted At"},"relationship_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Relationship Type"},"attested_skills":{"items":{"type":"string"},"type":"array","title":"Attested Skills"},"verification_method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Verification Method"},"strength_level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Strength Level"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","relationship"],"title":"Reference","description":"A reference as returned to the OWNER who requested it.\n\nNEVER carries referee_email (a private binding key) and NEVER carries the\ntoken (a referee secret). Those are owner-invisible on purpose."},"ReferenceCreate":{"properties":{"referee_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Referee Name"},"referee_email":{"type":"string","title":"Referee Email"},"relationship":{"type":"string","title":"Relationship"},"context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context"}},"type":"object","required":["referee_email","relationship"],"title":"ReferenceCreate","description":"Body for POST /candidates/me/references.\n\nreferee_email is required (the verification key). referee_name and context are\noptional. relationship is e.g. Manager, Colleague, Client."},"ReferenceListResponse":{"properties":{"references":{"items":{"$ref":"#/components/schemas/Reference"},"type":"array","title":"References"}},"type":"object","title":"ReferenceListResponse"},"ReputationSummary":{"properties":{"verified_references":{"type":"integer","title":"Verified References","default":0},"evidence_items":{"type":"integer","title":"Evidence Items","default":0},"verified_credentials":{"type":"integer","title":"Verified Credentials","default":0},"reputation_level":{"type":"string","title":"Reputation Level","default":"emerging"},"verified_licenses":{"type":"integer","title":"Verified Licenses","default":0}},"type":"object","title":"ReputationSummary","description":"Evidence-based reputation counts for a candidate.\n\nverified_references: submitted, non-hidden references.\nevidence_items: evidence attached to APPROVED PUBLIC claims.\nverified_credentials: active (not hidden, not revoked) attested credentials.\nreputation_level is a modest, explainable band derived from these counts. It\nis never overweighted and never a hiring decision."},"Requisition":{"properties":{"id":{"type":"string","title":"Id"},"organization_id":{"type":"string","title":"Organization Id"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"title":{"type":"string","title":"Title"},"area":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Area"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"requirements":{"$ref":"#/components/schemas/RequisitionRequirements"},"status":{"type":"string","title":"Status","default":"open"},"is_open_to_pool":{"type":"boolean","title":"Is Open To Pool","default":false},"public_company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Public Company Name"},"pitch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pitch"},"public_company_logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Public Company Logo Url"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"candidate_count":{"type":"integer","title":"Candidate Count","default":0},"interested_count":{"type":"integer","title":"Interested Count","default":0}},"type":"object","required":["id","organization_id","title"],"title":"Requisition"},"RequisitionCreate":{"properties":{"title":{"type":"string","title":"Title"},"area":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Area"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"requirements":{"anyOf":[{"$ref":"#/components/schemas/RequisitionRequirements"},{"type":"null"}]},"public_company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Public Company Name"},"pitch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pitch"},"public_company_logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Public Company Logo Url"}},"type":"object","required":["title"],"title":"RequisitionCreate"},"RequisitionList":{"properties":{"requisitions":{"items":{"$ref":"#/components/schemas/Requisition"},"type":"array","title":"Requisitions"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","title":"RequisitionList"},"RequisitionRequirements":{"properties":{"skills":{"items":{"type":"string"},"type":"array","title":"Skills"},"min_verification":{"anyOf":[{"$ref":"#/components/schemas/VerificationLevel"},{"type":"null"}]},"target_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Role"},"target_geography":{"anyOf":[{"$ref":"#/components/schemas/TargetGeography"},{"type":"null"}]}},"type":"object","title":"RequisitionRequirements","description":"The saved-search requirements for a requisition. Mapped onto the pool\ndiscovery filters. Every field is a TRANSPARENT matching factor."},"RequisitionSearchRequest":{"properties":{"limit":{"anyOf":[{"type":"integer","maximum":100.0,"minimum":1.0},{"type":"null"}],"title":"Limit"},"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},"type":"object","title":"RequisitionSearchRequest","description":"Optional overrides for the saved search. The requirements come from the\nrequisition; only paging is overridable here."},"RequisitionSearchResponse":{"properties":{"results":{"items":{"$ref":"#/components/schemas/RequisitionSearchResult"},"type":"array","title":"Results"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","title":"RequisitionSearchResponse"},"RequisitionSearchResult":{"properties":{"handle":{"type":"string","title":"Handle"},"location_public":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Public"},"remote_preference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Remote Preference"},"open_to_relocation":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Open To Relocation"},"verification_level":{"$ref":"#/components/schemas/VerificationLevel","default":"self_claimed"},"job_seeking_status":{"type":"string","title":"Job Seeking Status","default":"open"},"public_claims":{"items":{"$ref":"#/components/schemas/DiscoveryClaim"},"type":"array","title":"Public Claims"},"public_skills":{"items":{"$ref":"#/components/schemas/DiscoverySkill"},"type":"array","title":"Public Skills"},"public_credentials":{"items":{"$ref":"#/components/schemas/DiscoveryCredential"},"type":"array","title":"Public Credentials"},"reputation":{"$ref":"#/components/schemas/PublicReputationSummary"},"score":{"$ref":"#/components/schemas/DiscoveryScore"},"in_pipeline":{"type":"boolean","title":"In Pipeline","default":false},"stage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stage"},"employer_fit":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Employer Fit"},"candidate_fit":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Candidate Fit"},"mutual_match":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Mutual Match"},"match_confidence":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Match Confidence"}},"type":"object","required":["handle","score"],"title":"RequisitionSearchResult","description":"A discovery hit annotated with pipeline membership for this requisition.\n\nReuses the pseudonymous DiscoveryResult shape and adds in_pipeline / stage so\nthe client can show which surfaced candidates are already tracked. Wave C also\nannotates each hit with the TWO-SIDED fit: employer_fit (how well the\ncandidate meets the requirements, == the discovery total_score),\ncandidate_fit (how well this requisition matches the candidate's intent), and\nmutual_match (the combined score). Still NEVER carries name or contact."},"RequisitionUpdate":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"area":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Area"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"requirements":{"anyOf":[{"$ref":"#/components/schemas/RequisitionRequirements"},{"type":"null"}]},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"is_open_to_pool":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Open To Pool"},"public_company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Public Company Name"},"pitch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pitch"},"public_company_logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Public Company Logo Url"}},"type":"object","title":"RequisitionUpdate","description":"Partial update. Only provided fields are applied."},"RiskReviewRequest":{"properties":{"candidate_id":{"type":"string","title":"Candidate Id"},"claims":{"items":{"$ref":"#/components/schemas/Claim-Input"},"type":"array","title":"Claims"}},"type":"object","required":["candidate_id"],"title":"RiskReviewRequest"},"RiskReviewResponse":{"properties":{"candidate_id":{"type":"string","title":"Candidate Id"},"risk_flags":{"items":{"type":"string"},"type":"array","title":"Risk Flags"},"risk_score":{"type":"number","title":"Risk Score"},"confidence_score":{"type":"number","title":"Confidence Score"},"notes":{"items":{"type":"string"},"type":"array","title":"Notes"}},"type":"object","required":["candidate_id","risk_score","confidence_score"],"title":"RiskReviewResponse"},"SavePolicyRequest":{"properties":{"body":{"title":"Body"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"type":"object","required":["body"],"title":"SavePolicyRequest","description":"What the Rules screen POSTs to save a policy.\n\nbody is the tunable surface as a RAW object, handed straight to the service's\nvalidate_policy_body -- NOT re-parsed through ExtractionPolicy here on purpose.\nA strict model would silently drop a spine field (who / role / where / when /\nevidenced_by) or an unknown key, turning the spine ban's honest refusal into a\nquiet lie; passing the raw object through lets the service raise its own sharp\nmessage. name is optional display metadata, kept OUT of body so it is never\nmistaken for a tunable key and refused as unknown."},"ScoreRequest":{"properties":{"candidate_id":{"type":"string","title":"Candidate Id"},"target_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Role"},"target_location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Location"},"target_geography":{"anyOf":[{"$ref":"#/components/schemas/TargetGeography"},{"type":"null"}]},"candidate_geography":{"anyOf":[{"$ref":"#/components/schemas/CandidateGeographyInput"},{"type":"null"}]},"claims":{"items":{"$ref":"#/components/schemas/Claim-Input"},"type":"array","title":"Claims"},"skill_signals":{"items":{"$ref":"#/components/schemas/SkillSignal"},"type":"array","title":"Skill Signals"}},"type":"object","required":["candidate_id"],"title":"ScoreRequest"},"SetLanguagesRequest":{"properties":{"entries":{"items":{"$ref":"#/components/schemas/LanguageEntry"},"type":"array","title":"Entries"}},"type":"object","title":"SetLanguagesRequest","description":"Replace-set the candidate's languages. Invalid entries are ignored."},"SignalScore":{"properties":{"candidate_id":{"type":"string","title":"Candidate Id"},"target_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Role"},"target_location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Location"},"total_score":{"type":"number","title":"Total Score"},"momentum_score":{"type":"number","title":"Momentum Score"},"evidence_quality_score":{"type":"number","title":"Evidence Quality Score"},"role_fit_score":{"type":"number","title":"Role Fit Score"},"location_fit_score":{"type":"number","title":"Location Fit Score"},"verification_score":{"type":"number","title":"Verification Score"},"risk_score":{"type":"number","title":"Risk Score"},"confidence_score":{"type":"number","title":"Confidence Score"},"explainability_notes":{"items":{"type":"string"},"type":"array","title":"Explainability Notes"},"risk_flags":{"items":{"type":"string"},"type":"array","title":"Risk Flags"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["candidate_id","total_score","momentum_score","evidence_quality_score","role_fit_score","location_fit_score","verification_score","risk_score","confidence_score"],"title":"SignalScore","description":"Structured signal score. Not a hiring decision."},"SkillSignal":{"properties":{"skill":{"type":"string","title":"Skill"},"proficiency":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Proficiency","default":0.0},"velocity":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Velocity","description":"Recent growth signal","default":0.0},"verification_level":{"$ref":"#/components/schemas/VerificationLevel","default":"self_claimed"},"evidence_count":{"type":"integer","title":"Evidence Count","default":0}},"type":"object","required":["skill"],"title":"SkillSignal"},"SkillView":{"properties":{"name":{"type":"string","title":"Name"},"proficiency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proficiency"},"verification_level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Verification Level"}},"type":"object","required":["name"],"title":"SkillView","description":"One stored skill (output shape)."},"SkillsListResponse":{"properties":{"skills":{"items":{"$ref":"#/components/schemas/SkillView"},"type":"array","title":"Skills"}},"type":"object","title":"SkillsListResponse"},"SourceLedgerItem":{"properties":{"source_name":{"type":"string","title":"Source Name"},"verdict":{"$ref":"#/components/schemas/SourceVerdict"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"event_count":{"type":"integer","title":"Event Count","default":0},"attached_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Attached At"}},"type":"object","required":["source_name","verdict"],"title":"SourceLedgerItem","description":"What the librarian decided about one source. The reason is the product."},"SourceVerdict":{"type":"string","enum":["filed","set_aside"],"title":"SourceVerdict","description":"What the librarian decided about a source it was handed.\n\nset_aside is not an error. It is the context rule doing its job, and the\nreason is printed on the Core Sync screen because a refusal with a reason is\nan argument where a privacy banner is a disclaimer nobody reads."},"StoreContactResponse":{"properties":{"candidate_id":{"type":"string","title":"Candidate Id"},"stored":{"type":"boolean","title":"Stored","default":true},"key_reference":{"type":"string","title":"Key Reference"}},"type":"object","required":["candidate_id","key_reference"],"title":"StoreContactResponse"},"StructureRequest":{"properties":{"candidate_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Candidate Id"},"raw_text":{"type":"string","title":"Raw Text"}},"type":"object","required":["raw_text"],"title":"StructureRequest"},"StructureResponse":{"properties":{"structured_profile":{"$ref":"#/components/schemas/StructuredProfile"}},"type":"object","required":["structured_profile"],"title":"StructureResponse"},"StructuredProfile":{"properties":{"candidate_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Candidate Id"},"claims":{"items":{"$ref":"#/components/schemas/Claim-Output"},"type":"array","title":"Claims"},"skill_signals":{"items":{"$ref":"#/components/schemas/SkillSignal"},"type":"array","title":"Skill Signals"},"missing_info":{"items":{"type":"string"},"type":"array","title":"Missing Info"},"approval_checklist":{"items":{"type":"string"},"type":"array","title":"Approval Checklist"}},"type":"object","title":"StructuredProfile","description":"Output of the profile structuring service."},"SubmitAttemptRequest":{"properties":{"responses":{"items":{"$ref":"#/components/schemas/AttemptResponse"},"type":"array","title":"Responses"}},"type":"object","title":"SubmitAttemptRequest"},"SynthesisResponse":{"properties":{"topic_key":{"type":"string","title":"Topic Key"},"synthesis_md":{"type":"string","title":"Synthesis Md"},"generated_at":{"type":"string","title":"Generated At"}},"type":"object","required":["topic_key","synthesis_md","generated_at"],"title":"SynthesisResponse","description":"A folder synthesis, generated on demand and never stored."},"TargetGeography":{"properties":{"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"remote":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Remote"},"lat":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lat"},"lng":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lng"}},"type":"object","title":"TargetGeography","description":"Optional structured target (role) geography for location fit. All fields\noptional; target_location on the request remains for backward compatibility."},"TelemetryEvent":{"properties":{"at":{"type":"string","title":"At"},"level":{"type":"string","title":"Level"},"message":{"type":"string","title":"Message"}},"type":"object","required":["at","level","message"],"title":"TelemetryEvent"},"TelemetryResponse":{"properties":{"side":{"type":"string","title":"Side"},"events":{"items":{"$ref":"#/components/schemas/TelemetryEvent"},"type":"array","title":"Events"},"mock":{"type":"boolean","title":"Mock","default":true}},"type":"object","required":["side","events"],"title":"TelemetryResponse"},"TopSkill":{"properties":{"skill":{"type":"string","title":"Skill"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["skill","count"],"title":"TopSkill"},"TopicCount":{"properties":{"topic_key":{"type":"string","title":"Topic Key"},"label":{"type":"string","title":"Label"},"document_count":{"type":"integer","title":"Document Count","default":0}},"type":"object","required":["topic_key","label"],"title":"TopicCount","description":"One cell of the 3x3 grid: a topic and how many documents are filed in it."},"UploadProfileTextRequest":{"properties":{"raw_text":{"type":"string","title":"Raw Text"},"candidate_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Candidate Id"}},"type":"object","required":["raw_text"],"title":"UploadProfileTextRequest"},"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"},"VerificationLevel":{"type":"string","enum":["self_claimed","evidence_attached","peer_verified","company_verified","institution_verified","protocol_verified"],"title":"VerificationLevel","description":"Verification ladder. Keep values stable, the frontend and docs match."},"VerificationRequest":{"properties":{"request_id":{"type":"string","title":"Request Id"},"claim_id":{"type":"string","title":"Claim Id"},"candidate_id":{"type":"string","title":"Candidate Id"},"verifier_type":{"type":"string","title":"Verifier Type"},"target_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Domain"},"target_organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Organization Id"},"peer_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Peer Email"},"status":{"type":"string","title":"Status","default":"pending"},"requested_level":{"$ref":"#/components/schemas/VerificationLevel"},"resulting_level":{"anyOf":[{"$ref":"#/components/schemas/VerificationLevel"},{"type":"null"}]},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"decided_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Decided At"},"decided_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Decided By"}},"type":"object","required":["request_id","claim_id","candidate_id","verifier_type","requested_level"],"title":"VerificationRequest","description":"A verification request as returned to the candidate who initiated it."},"VerificationRequestCreate":{"properties":{"verifier_type":{"type":"string","title":"Verifier Type","description":"\"peer\" | \"company\" | \"institution\""},"peer_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Peer Email"},"organization_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Domain"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["verifier_type"],"title":"VerificationRequestCreate","description":"Body for POST /candidates/me/claims/{claim_id}/verification-requests."},"VerificationRequestList":{"properties":{"requests":{"items":{"$ref":"#/components/schemas/VerificationRequest"},"type":"array","title":"Requests"}},"type":"object","title":"VerificationRequestList"},"VerifierDecision":{"properties":{"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","title":"VerifierDecision","description":"Optional body for verifier approve/reject (a reason may be attached)."},"VerifierInbox":{"properties":{"requests":{"items":{"$ref":"#/components/schemas/VerifierInboxItem"},"type":"array","title":"Requests"}},"type":"object","title":"VerifierInbox"},"VerifierInboxItem":{"properties":{"request_id":{"type":"string","title":"Request Id"},"claim_id":{"type":"string","title":"Claim Id"},"candidate_handle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Candidate Handle"},"claim_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Claim Title"},"claim_organization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Claim Organization"},"verifier_type":{"type":"string","title":"Verifier Type"},"requested_level":{"$ref":"#/components/schemas/VerificationLevel"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["request_id","claim_id","verifier_type","requested_level","created_at"],"title":"VerifierInboxItem","description":"A pending request addressed to a verifier ORG. PSEUDONYMOUS: the candidate\nis identified by handle only, never by name or contact."},"VerifyDisclosureRequest":{"properties":{"token":{"type":"string","title":"Token"}},"type":"object","required":["token"],"title":"VerifyDisclosureRequest"},"VerifyDisclosureResponse":{"properties":{"valid":{"type":"boolean","title":"Valid"},"subject_handle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject Handle"},"audience":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audience"},"predicates":{"items":{"type":"object"},"type":"array","title":"Predicates","default":[]},"issued_at":{"anyOf":[{},{"type":"null"}],"title":"Issued At"},"expires_at":{"anyOf":[{},{"type":"null"}],"title":"Expires At"}},"type":"object","required":["valid"],"title":"VerifyDisclosureResponse"},"VerifyDomainRequest":{"properties":{"domain":{"type":"string","title":"Domain"}},"type":"object","required":["domain"],"title":"VerifyDomainRequest"},"VerifyDomainResponse":{"properties":{"domain":{"type":"string","title":"Domain"},"verified":{"type":"boolean","title":"Verified"},"method":{"type":"string","title":"Method","default":"dns_txt"},"checked_at":{"type":"string","format":"date-time","title":"Checked At"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instructions"}},"type":"object","required":["domain","verified"],"title":"VerifyDomainResponse"},"VerifyPassRequest":{"properties":{"token":{"type":"string","title":"Token"}},"type":"object","required":["token"],"title":"VerifyPassRequest"},"VerifyPassResponse":{"properties":{"valid":{"type":"boolean","title":"Valid"},"issuer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Issuer"},"subject_handle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject Handle"},"credential_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Credential Type"},"credential_subject":{"type":"object","title":"Credential Subject","default":{}},"issued_at":{"anyOf":[{},{"type":"null"}],"title":"Issued At"},"expires_at":{"anyOf":[{},{"type":"null"}],"title":"Expires At"}},"type":"object","required":["valid"],"title":"VerifyPassResponse"},"VisibilityUpdate":{"properties":{"public":{"type":"boolean","title":"Public","default":true},"show_location":{"type":"boolean","title":"Show Location","default":true},"show_momentum":{"type":"boolean","title":"Show Momentum","default":true}},"type":"object","title":"VisibilityUpdate"},"WaitlistAck":{"properties":{"ok":{"type":"boolean","title":"Ok","default":true}},"type":"object","title":"WaitlistAck","description":"Acknowledgement. Deliberately carries no data back."},"WaitlistCreate":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"company":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Company"}},"type":"object","required":["email"],"title":"WaitlistCreate","description":"A request to be contacted when real accounts open."},"WebhookCreate":{"properties":{"url":{"type":"string","title":"Url"},"events":{"items":{"$ref":"#/components/schemas/WebhookEvent"},"type":"array","title":"Events"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["url"],"title":"WebhookCreate"},"WebhookDeliveryResult":{"properties":{"event_id":{"type":"string","title":"Event Id"},"event":{"$ref":"#/components/schemas/WebhookEvent"},"webhook_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Id"},"status":{"type":"string","title":"Status"},"attempts":{"type":"integer","title":"Attempts"},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error"},"status_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Status Code"},"signature":{"type":"string","title":"Signature"},"timestamp":{"type":"integer","title":"Timestamp"}},"type":"object","required":["event_id","event","status","attempts","signature","timestamp"],"title":"WebhookDeliveryResult","description":"Outcome of a real delivery attempt (with retries)."},"WebhookEndpoint":{"properties":{"webhook_id":{"type":"string","title":"Webhook Id"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"},"company_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Id"},"url":{"type":"string","title":"Url"},"events":{"items":{"$ref":"#/components/schemas/WebhookEvent"},"type":"array","title":"Events"},"active":{"type":"boolean","title":"Active","default":true},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["webhook_id","url","events"],"title":"WebhookEndpoint"},"WebhookEvent":{"type":"string","enum":["candidate.structured","candidate.claims_approved","signal.scored","vault.access_requested","vault.access_granted","vault.access_revoked","credential.created","credential.revoked"],"title":"WebhookEvent"},"WebhookTestRequest":{"properties":{"webhook_id":{"type":"string","title":"Webhook Id"},"event":{"$ref":"#/components/schemas/WebhookEvent","default":"signal.scored"}},"type":"object","required":["webhook_id"],"title":"WebhookTestRequest"},"WorkAuthorizationResponse":{"properties":{"ok":{"type":"boolean","title":"Ok","default":true}},"type":"object","title":"WorkAuthorizationResponse"},"WorkAuthorizationUpdate":{"properties":{"work_right_countries":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Work Right Countries"},"visa_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Visa Type"},"visa_expiry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Visa Expiry"},"sponsorship_required":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Sponsorship Required"}},"type":"object","title":"WorkAuthorizationUpdate","description":"Owner request to set structured work authorization (coded, non-PII).\n\nwork_right_countries is a list of country inputs normalized to ISO-3166-1\nalpha-2 codes (unknown countries are ignored). visa_type is coded/free-text\nand is NEVER exposed across the grant boundary. visa_expiry is an ISO date.\nsponsorship_required is a self-declared boolean. Work rights are expressed\nONLY as authorized_countries; nationality is never stored."}}}}