{"openapi":"3.1.0","info":{"title":"Nodi Public API","description":"Public REST and MCP surface for Nodi Global recruiters.\n\nAuthenticate with `Authorization: Bearer <token>`, where the token is either an API access token from `POST /auth/login` or a Firebase ID token.\n\n### Pagination\n\nEndpoints that return a `Paginated` envelope accept `page` and `page_size`. **`page` defaults to 1 and `page_size` to 20, with a maximum of 100.** Out-of-range and unparseable values are normalized rather than rejected, so a request never fails on pagination alone — read `page_size` in the response to see what was applied, and `total` to know how many rows exist across every page.\n\nEndpoints that return a plain JSON array are not paginated and return the full set: the catalogs, `/companies`, and the collections that hang off a single job offer (applications, stages, competencies, questions, notes, an applicant's offer letters).","version":"1.0.0"},"paths":{"/auth/login":{"post":{"tags":["auth"],"summary":"Login","description":"Exchange email and password for a long-lived API access token.","operationId":"login_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/token":{"post":{"tags":["auth"],"summary":"Create Token","description":"Exchange a Firebase session cookie or ID token for an access token.\n\nCovers SSO recruiters (e.g. Google), whose sign-in never goes through\n``/auth/login``. The credential is read from the body, the ``Authorization``\nheader or the ``firebase_session`` cookie, in that order.","operationId":"create_token_auth_token_post","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CreateTokenRequest"},{"type":"null"}],"title":"Payload"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTokenResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["auth"],"summary":"Revoke Token","description":"Revoke the access token used to authenticate this request.","operationId":"revoke_token_auth_token_delete","responses":{"204":{"description":"Successful Response"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}}}}}},"/catalogs/currencies":{"get":{"tags":["catalogs"],"summary":"List Currencies","description":"List the available currencies.","operationId":"list_currencies_catalogs_currencies_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/CatalogItem"},"type":"array","title":"Response List Currencies Catalogs Currencies Get"}}}}}}},"/catalogs/payment-frequencies":{"get":{"tags":["catalogs"],"summary":"List Payment Frequencies","description":"List the available payment frequencies.","operationId":"list_payment_frequencies_catalogs_payment_frequencies_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/CatalogItem"},"type":"array","title":"Response List Payment Frequencies Catalogs Payment Frequencies Get"}}}}}}},"/catalogs/job-modalities":{"get":{"tags":["catalogs"],"summary":"List Job Modalities","description":"List the available job modalities.","operationId":"list_job_modalities_catalogs_job_modalities_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/CatalogItem"},"type":"array","title":"Response List Job Modalities Catalogs Job Modalities Get"}}}}}}},"/catalogs/job-types":{"get":{"tags":["catalogs"],"summary":"List Job Types","description":"List the available job types.","operationId":"list_job_types_catalogs_job_types_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/CatalogItem"},"type":"array","title":"Response List Job Types Catalogs Job Types Get"}}}}}}},"/catalogs/statuses":{"get":{"tags":["catalogs"],"summary":"List Statuses","description":"List the available job offer statuses.","operationId":"list_statuses_catalogs_statuses_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/CatalogItem"},"type":"array","title":"Response List Statuses Catalogs Statuses Get"}}}}}}},"/catalogs/job-seniorities":{"get":{"tags":["catalogs"],"summary":"List Job Seniorities","description":"List the selected company's seniorities without duplicate labels.\n\nLabels are compared case-insensitively after trimming whitespace. When old\ndata contains equivalent rows, the company's normal catalog order decides\nwhich stable ID is returned.","operationId":"list_job_seniorities_catalogs_job_seniorities_get","parameters":[{"name":"company_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Company UUID. Optional when the recruiter belongs to a single company. Only that company's seniority options are returned.","title":"Company Id"},"description":"Company UUID. Optional when the recruiter belongs to a single company. Only that company's seniority options are returned."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CatalogItem"},"title":"Response List Job Seniorities Catalogs Job Seniorities Get"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/companies":{"get":{"tags":["companies"],"summary":"List Companies","description":"List every company the recruiter owns or actively belongs to.","operationId":"list_companies_companies_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/CompanyResponse"},"type":"array","title":"Response List Companies Companies Get"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}}}}}},"/companies/{id}/members":{"get":{"tags":["companies"],"summary":"List Company Members","description":"List a company's members, including pending invitations.","operationId":"list_company_members_companies__id__members_get","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Company ID","title":"Id"},"description":"Company ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CompanyMemberResponse"},"title":"Response List Company Members Companies  Id  Members Get"}}}},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/candidates/search":{"get":{"tags":["candidates"],"summary":"Search Candidates","description":"Search Nodi candidates from a natural-language role description.","operationId":"search_candidates_candidates_search_get","parameters":[{"name":"description","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Natural-language description of the role","title":"Description"},"description":"Natural-language description of the role"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateSearchResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Service Unavailable"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/candidates/profile-notes":{"post":{"tags":["candidates","candidate-notes"],"summary":"Create Candidate Profile Note","description":"Create a CRM-level note for a Nodi or LinkedIn candidate.","operationId":"create_candidate_profile_note_candidates_profile_notes_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateProfileNoteRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateProfileNoteResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/candidates/{profile_id}":{"get":{"tags":["candidates"],"summary":"Get Candidate","description":"Get a candidate's public profile.","operationId":"get_candidate_candidates__profile_id__get","parameters":[{"name":"profile_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Candidate profile ID","title":"Profile Id"},"description":"Candidate profile ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateDetailResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/candidates/{profile_id}/contact":{"post":{"tags":["candidates"],"summary":"Contact Candidate","description":"Queue an outreach email to a candidate.","operationId":"contact_candidate_candidates__profile_id__contact_post","parameters":[{"name":"profile_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Candidate profile ID","title":"Profile Id"},"description":"Candidate profile ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactCandidateRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueuedResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Service Unavailable"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/candidates/{profile_id}/notes":{"get":{"tags":["candidates","candidate-notes"],"summary":"List Candidate Profile Notes","description":"List CRM-level notes attached directly to a candidate profile.","operationId":"list_candidate_profile_notes_candidates__profile_id__notes_get","parameters":[{"name":"profile_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Candidate profile ID","title":"Profile Id"},"description":"Candidate profile ID"},{"name":"company_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Company UUID","title":"Company Id"},"description":"Company UUID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CandidateProfileNoteResponse"},"title":"Response List Candidate Profile Notes Candidates  Profile Id  Notes Get"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/candidates/linkedin/{linkedin_profile_id}/notes":{"get":{"tags":["candidates","candidate-notes"],"summary":"List Linkedin Candidate Profile Notes","description":"List CRM-level notes attached to an imported LinkedIn profile.","operationId":"list_linkedin_candidate_profile_notes_candidates_linkedin__linkedin_profile_id__notes_get","parameters":[{"name":"linkedin_profile_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Candidate profile ID","title":"Linkedin Profile Id"},"description":"Candidate profile ID"},{"name":"company_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Company UUID","title":"Company Id"},"description":"Company UUID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CandidateProfileNoteResponse"},"title":"Response List Linkedin Candidate Profile Notes Candidates Linkedin  Linkedin Profile Id  Notes Get"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/candidates/profile-notes/{note_id}":{"patch":{"tags":["candidates","candidate-notes"],"summary":"Update Candidate Profile Note","description":"Update a CRM note authored by the caller.","operationId":"update_candidate_profile_note_candidates_profile_notes__note_id__patch","parameters":[{"name":"note_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Note ID","title":"Note Id"},"description":"Note ID"},{"name":"company_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Company UUID","title":"Company Id"},"description":"Company UUID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateProfileNoteResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["candidates","candidate-notes"],"summary":"Delete Candidate Profile Note","description":"Delete a CRM note authored by the caller.","operationId":"delete_candidate_profile_note_candidates_profile_notes__note_id__delete","parameters":[{"name":"note_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Note ID","title":"Note Id"},"description":"Note ID"},{"name":"company_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Company UUID","title":"Company Id"},"description":"Company UUID"}],"responses":{"204":{"description":"Successful Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/job-offers":{"get":{"tags":["job-offers"],"summary":"List Job Offers","description":"List the recruiter's job offers, or a company's offers.","operationId":"list_job_offers_job_offers_get","parameters":[{"name":"company_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Browse a company's offers","title":"Company Id"},"description":"Browse a company's offers"},{"name":"page","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"1-based page number. Defaults to 1. Values below 1 and unparseable values fall back to the default instead of failing.","title":"Page"},"description":"1-based page number. Defaults to 1. Values below 1 and unparseable values fall back to the default instead of failing."},{"name":"page_size","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Rows per page. Defaults to 20, maximum 100. Larger values are clamped to the maximum and unparseable values fall back to the default; neither is rejected. Read `page_size` in the response to see what was applied.","title":"Page Size"},"description":"Rows per page. Defaults to 20, maximum 100. Larger values are clamped to the maximum and unparseable values fall back to the default; neither is rejected. Read `page_size` in the response to see what was applied."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Paginated_JobOfferResponse_"}}}},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["job-offers"],"summary":"Create Job Offer","description":"Create a job offer owned by the authenticated recruiter.","operationId":"create_job_offer_job_offers_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateJobOfferRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobOfferResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/job-offers/questions/types":{"get":{"tags":["job-offers"],"summary":"List Question Types","description":"List the screening-question type catalog.","operationId":"list_question_types_job_offers_questions_types_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/QuestionTypeResponse"},"type":"array","title":"Response List Question Types Job Offers Questions Types Get"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}}}}}},"/job-offers/{id}":{"get":{"tags":["job-offers"],"summary":"Get Job Offer","description":"Get one job offer.","operationId":"get_job_offer_job_offers__id__get","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Job offer ID","title":"Id"},"description":"Job offer ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobOfferResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["job-offers"],"summary":"Update Job Offer","description":"Partially update a job offer.","operationId":"update_job_offer_job_offers__id__patch","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Job offer ID","title":"Id"},"description":"Job offer ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateJobOfferRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobOfferResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["job-offers"],"summary":"Delete Job Offer","description":"Delete a job offer.","operationId":"delete_job_offer_job_offers__id__delete","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Job offer ID","title":"Id"},"description":"Job offer ID"}],"responses":{"204":{"description":"Successful Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/job-offers/{id}/company-image":{"post":{"tags":["job-offers"],"summary":"Upload Company Image","description":"Upload the company image shown on a job offer.","operationId":"upload_company_image_job_offers__id__company_image_post","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Job offer ID","title":"Id"},"description":"Job offer ID"}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_company_image_job_offers__id__company_image_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadCompanyImageResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Internal Server Error"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/job-offers/{id}/applications":{"get":{"tags":["job-offers"],"summary":"List Applications","description":"List the candidates that applied to a job offer.","operationId":"list_applications_job_offers__id__applications_get","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Job offer ID","title":"Id"},"description":"Job offer ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ApplicationResponse"},"title":"Response List Applications Job Offers  Id  Applications Get"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/job-offers/{id}/applications/{profile_id}":{"get":{"tags":["job-offers","applicants"],"summary":"Get Application Details","description":"Get the complete candidate view for one offer application.","operationId":"get_application_details_job_offers__id__applications__profile_id__get","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Job offer ID","title":"Id"},"description":"Job offer ID"},{"name":"profile_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Candidate profile ID","title":"Profile Id"},"description":"Candidate profile ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateApplicationDetailResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/job-offers/{id}/applicants/{profile_id}/activity-log":{"get":{"tags":["job-offers","applicants"],"summary":"Get Candidate Activity Log","description":"Get a candidate's activity log for one job offer, newest event first.","operationId":"get_candidate_activity_log_job_offers__id__applicants__profile_id__activity_log_get","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Job offer ID","title":"Id"},"description":"Job offer ID"},{"name":"profile_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Candidate profile ID","title":"Profile Id"},"description":"Candidate profile ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateActivityLogResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/job-offers/{id}/applicants/{profile_id}/answers":{"get":{"tags":["job-offers","applicants"],"summary":"List Screening Answers","description":"List screening answers visible to the caller.","operationId":"list_screening_answers_job_offers__id__applicants__profile_id__answers_get","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Job offer ID","title":"Id"},"description":"Job offer ID"},{"name":"profile_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Candidate profile ID","title":"Profile Id"},"description":"Candidate profile ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CandidateScreeningAnswerResponse"},"title":"Response List Screening Answers Job Offers  Id  Applicants  Profile Id  Answers Get"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/job-offers/{id}/applicants/{profile_id}/offer-letters":{"get":{"tags":["job-offers","applicants","offer-letters"],"summary":"List Applicant Offer Letters","description":"List every offer letter made to an applicant, newest first.\n\nIncludes the offer's normalized terms, the signed PDF and, for\norganizations with a configured offer form, the flattened hire summary.\nRequires `view_offer_letters` in the offer's organization.","operationId":"list_applicant_offer_letters_job_offers__id__applicants__profile_id__offer_letters_get","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Job offer ID","title":"Id"},"description":"Job offer ID"},{"name":"profile_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Candidate profile ID","title":"Profile Id"},"description":"Candidate profile ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OfferLetterExportResponse"},"title":"Response List Applicant Offer Letters Job Offers  Id  Applicants  Profile Id  Offer Letters Get"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/job-offers/{id}/applicants/{profile_id}/status":{"patch":{"tags":["job-offers","applicants"],"summary":"Update Applicant Status","description":"Set an applicant's Like, Pending or Dislike review status.","operationId":"update_applicant_status_job_offers__id__applicants__profile_id__status_patch","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Job offer ID","title":"Id"},"description":"Job offer ID"},{"name":"profile_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Candidate profile ID","title":"Profile Id"},"description":"Candidate profile ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicantStatusRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicantStatusResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/job-offers/{id}/invitations":{"post":{"tags":["job-offers"],"summary":"Invite Candidates","description":"Invite candidates to apply to a job offer.","operationId":"invite_candidates_job_offers__id__invitations_post","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Job offer ID","title":"Id"},"description":"Job offer ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteCandidatesRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueuedResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Service Unavailable"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/job-offers/{id}/stages":{"get":{"tags":["job-offers","pipeline-stages"],"summary":"List Stages","description":"List a job offer's pipeline stages.","operationId":"list_stages_job_offers__id__stages_get","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Job offer ID","title":"Id"},"description":"Job offer ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/StageResponse"},"title":"Response List Stages Job Offers  Id  Stages Get"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["job-offers","pipeline-stages"],"summary":"Create Stage","description":"Append a stage to a job offer's pipeline.","operationId":"create_stage_job_offers__id__stages_post","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Job offer ID","title":"Id"},"description":"Job offer ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateStageRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StageResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/job-offers/{id}/stages/reorder":{"post":{"tags":["job-offers","pipeline-stages"],"summary":"Reorder Stages","description":"Reorder a job offer's pipeline stages.","operationId":"reorder_stages_job_offers__id__stages_reorder_post","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Job offer ID","title":"Id"},"description":"Job offer ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReorderStagesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/StageResponse"},"title":"Response Reorder Stages Job Offers  Id  Stages Reorder Post"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/job-offers/{id}/stages/{stage_id}":{"patch":{"tags":["job-offers","pipeline-stages"],"summary":"Update Stage","description":"Partially update a pipeline stage.","operationId":"update_stage_job_offers__id__stages__stage_id__patch","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Job offer ID","title":"Id"},"description":"Job offer ID"},{"name":"stage_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Pipeline stage ID","title":"Stage Id"},"description":"Pipeline stage ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateStageRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StageResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["job-offers","pipeline-stages"],"summary":"Delete Stage","description":"Delete a pipeline stage.","operationId":"delete_stage_job_offers__id__stages__stage_id__delete","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Job offer ID","title":"Id"},"description":"Job offer ID"},{"name":"stage_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Pipeline stage ID","title":"Stage Id"},"description":"Pipeline stage ID"}],"responses":{"204":{"description":"Successful Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/job-offers/{id}/applicants/{profile_id}/stage":{"put":{"tags":["job-offers","pipeline-stages"],"summary":"Move Applicant To Stage","description":"Move a candidate to a pipeline stage and run that stage's action.","operationId":"move_applicant_to_stage_job_offers__id__applicants__profile_id__stage_put","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Job offer ID","title":"Id"},"description":"Job offer ID"},{"name":"profile_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Candidate profile ID","title":"Profile Id"},"description":"Candidate profile ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MoveApplicantRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MoveApplicantResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/job-offers/{id}/stages/{stage_id}/competencies":{"get":{"tags":["job-offers","interview-feedback"],"summary":"List Competencies","description":"List the competencies scored at a pipeline stage.","operationId":"list_competencies_job_offers__id__stages__stage_id__competencies_get","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Job offer ID","title":"Id"},"description":"Job offer ID"},{"name":"stage_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Pipeline stage ID","title":"Stage Id"},"description":"Pipeline stage ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CompetencyResponse"},"title":"Response List Competencies Job Offers  Id  Stages  Stage Id  Competencies Get"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["job-offers","interview-feedback"],"summary":"Create Competency","description":"Add a competency to a pipeline stage.","operationId":"create_competency_job_offers__id__stages__stage_id__competencies_post","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Job offer ID","title":"Id"},"description":"Job offer ID"},{"name":"stage_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Pipeline stage ID","title":"Stage Id"},"description":"Pipeline stage ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCompetencyRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompetencyResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/job-offers/{id}/stages/{stage_id}/competencies/reorder":{"post":{"tags":["job-offers","interview-feedback"],"summary":"Reorder Competencies","description":"Reorder a stage's competencies.","operationId":"reorder_competencies_job_offers__id__stages__stage_id__competencies_reorder_post","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Job offer ID","title":"Id"},"description":"Job offer ID"},{"name":"stage_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Pipeline stage ID","title":"Stage Id"},"description":"Pipeline stage ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReorderCompetenciesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CompetencyResponse"},"title":"Response Reorder Competencies Job Offers  Id  Stages  Stage Id  Competencies Reorder Post"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/job-offers/{id}/stages/{stage_id}/competencies/{competency_id}":{"patch":{"tags":["job-offers","interview-feedback"],"summary":"Update Competency","description":"Partially update a competency.","operationId":"update_competency_job_offers__id__stages__stage_id__competencies__competency_id__patch","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Job offer ID","title":"Id"},"description":"Job offer ID"},{"name":"stage_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Pipeline stage ID","title":"Stage Id"},"description":"Pipeline stage ID"},{"name":"competency_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Competency ID","title":"Competency Id"},"description":"Competency ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCompetencyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompetencyResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["job-offers","interview-feedback"],"summary":"Delete Competency","description":"Delete a competency.","operationId":"delete_competency_job_offers__id__stages__stage_id__competencies__competency_id__delete","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Job offer ID","title":"Id"},"description":"Job offer ID"},{"name":"stage_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Pipeline stage ID","title":"Stage Id"},"description":"Pipeline stage ID"},{"name":"competency_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Competency ID","title":"Competency Id"},"description":"Competency ID"}],"responses":{"204":{"description":"Successful Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/job-offers/{id}/applicants/{profile_id}/feedback":{"get":{"tags":["job-offers","interview-feedback"],"summary":"Get Applicant Feedback","description":"Get an applicant's interview feedback across every pipeline stage.","operationId":"get_applicant_feedback_job_offers__id__applicants__profile_id__feedback_get","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Job offer ID","title":"Id"},"description":"Job offer ID"},{"name":"profile_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Candidate profile ID","title":"Profile Id"},"description":"Candidate profile ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicantFeedbackBundle"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/job-offers/{id}/applicants/{profile_id}/stages/{stage_id}/feedback":{"put":{"tags":["job-offers","interview-feedback"],"summary":"Upsert Applicant Feedback","description":"Create or replace the caller's feedback for an applicant at a stage.","operationId":"upsert_applicant_feedback_job_offers__id__applicants__profile_id__stages__stage_id__feedback_put","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Job offer ID","title":"Id"},"description":"Job offer ID"},{"name":"profile_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Candidate profile ID","title":"Profile Id"},"description":"Candidate profile ID"},{"name":"stage_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Pipeline stage ID","title":"Stage Id"},"description":"Pipeline stage ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertFeedbackRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/job-offers/{id}/questions":{"get":{"tags":["job-offers","screening-questions"],"summary":"List Questions","description":"List a job offer's screening questions.","operationId":"list_questions_job_offers__id__questions_get","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Job offer ID","title":"Id"},"description":"Job offer ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/QuestionResponse"},"title":"Response List Questions Job Offers  Id  Questions Get"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["job-offers","screening-questions"],"summary":"Create Question","description":"Add a screening question to a job offer.","operationId":"create_question_job_offers__id__questions_post","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Job offer ID","title":"Id"},"description":"Job offer ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateQuestionRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuestionResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/job-offers/{id}/questions/reorder":{"post":{"tags":["job-offers","screening-questions"],"summary":"Reorder Questions","description":"Reorder a job offer's screening questions.","operationId":"reorder_questions_job_offers__id__questions_reorder_post","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Job offer ID","title":"Id"},"description":"Job offer ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReorderQuestionsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/QuestionResponse"},"title":"Response Reorder Questions Job Offers  Id  Questions Reorder Post"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/job-offers/{id}/questions/{question_id}":{"patch":{"tags":["job-offers","screening-questions"],"summary":"Update Question","description":"Partially update a screening question.","operationId":"update_question_job_offers__id__questions__question_id__patch","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Job offer ID","title":"Id"},"description":"Job offer ID"},{"name":"question_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Screening question ID","title":"Question Id"},"description":"Screening question ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateQuestionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuestionResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["job-offers","screening-questions"],"summary":"Delete Question","description":"Delete a screening question.","operationId":"delete_question_job_offers__id__questions__question_id__delete","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Job offer ID","title":"Id"},"description":"Job offer ID"},{"name":"question_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Screening question ID","title":"Question Id"},"description":"Screening question ID"}],"responses":{"204":{"description":"Successful Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/job-offers/{id}/applicants/{profile_id}/notes":{"get":{"tags":["job-offers","applicant-notes"],"summary":"List Notes","description":"List the notes recorded on a candidate's application.","operationId":"list_notes_job_offers__id__applicants__profile_id__notes_get","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Job offer ID","title":"Id"},"description":"Job offer ID"},{"name":"profile_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Candidate profile ID","title":"Profile Id"},"description":"Candidate profile ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/NoteResponse"},"title":"Response List Notes Job Offers  Id  Applicants  Profile Id  Notes Get"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["job-offers","applicant-notes"],"summary":"Create Note","description":"Add a note to a candidate's application.","operationId":"create_note_job_offers__id__applicants__profile_id__notes_post","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Job offer ID","title":"Id"},"description":"Job offer ID"},{"name":"profile_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Candidate profile ID","title":"Profile Id"},"description":"Candidate profile ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/job-offers/{id}/applicants/{profile_id}/notes/{note_id}":{"patch":{"tags":["job-offers","applicant-notes"],"summary":"Update Note","description":"Edit a note the caller authored.","operationId":"update_note_job_offers__id__applicants__profile_id__notes__note_id__patch","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Job offer ID","title":"Id"},"description":"Job offer ID"},{"name":"profile_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Candidate profile ID","title":"Profile Id"},"description":"Candidate profile ID"},{"name":"note_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Note ID","title":"Note Id"},"description":"Note ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["job-offers","applicant-notes"],"summary":"Delete Note","description":"Delete a note the caller authored.","operationId":"delete_note_job_offers__id__applicants__profile_id__notes__note_id__delete","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Job offer ID","title":"Id"},"description":"Job offer ID"},{"name":"profile_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Candidate profile ID","title":"Profile Id"},"description":"Candidate profile ID"},{"name":"note_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Note ID","title":"Note Id"},"description":"Note ID"}],"responses":{"204":{"description":"Successful Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/offer-letters":{"get":{"tags":["offer-letters"],"summary":"List Offer Letters","description":"List a company's offer letters, newest first, for export.\n\nEach item carries the offer's normalized terms, its signatures, the sent\nand signed PDFs and, for organizations with a configured offer form, the\nflattened hire summary. Requires `view_offer_letters` in the company.","operationId":"list_offer_letters_offer_letters_get","parameters":[{"name":"company_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Company UUID. Optional when the recruiter belongs to a single company.","title":"Company Id"},"description":"Company UUID. Optional when the recruiter belongs to a single company."},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/OfferLetterStatus"}},{"type":"null"}],"description":"Keep only these statuses; repeat to pass several.","title":"Status"},"description":"Keep only these statuses; repeat to pass several."},{"name":"job_offer_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Keep only offers made on this job offer.","title":"Job Offer Id"},"description":"Keep only offers made on this job offer."},{"name":"updated_since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Keep only offers changed at or after this moment (ISO 8601). Poll with the time of your previous run to pick up new and amended offers.","title":"Updated Since"},"description":"Keep only offers changed at or after this moment (ISO 8601). Poll with the time of your previous run to pick up new and amended offers."},{"name":"signed_since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Keep only offers signed at or after this moment.","title":"Signed Since"},"description":"Keep only offers signed at or after this moment."},{"name":"page","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"1-based page number. Defaults to 1. Values below 1 and unparseable values fall back to the default instead of failing.","title":"Page"},"description":"1-based page number. Defaults to 1. Values below 1 and unparseable values fall back to the default instead of failing."},{"name":"page_size","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Rows per page. Defaults to 20, maximum 100. Larger values are clamped to the maximum and unparseable values fall back to the default; neither is rejected. Read `page_size` in the response to see what was applied.","title":"Page Size"},"description":"Rows per page. Defaults to 20, maximum 100. Larger values are clamped to the maximum and unparseable values fall back to the default; neither is rejected. Read `page_size` in the response to see what was applied."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Paginated_OfferLetterExportResponse_"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/offer-letters/{offer_letter_id}":{"get":{"tags":["offer-letters"],"summary":"Get Offer Letter","description":"Get one offer letter with its terms, signatures and documents.","operationId":"get_offer_letter_offer_letters__offer_letter_id__get","parameters":[{"name":"offer_letter_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Offer letter ID","title":"Offer Letter Id"},"description":"Offer letter ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OfferLetterExportResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tags":{"get":{"tags":["tags"],"summary":"List Tags","description":"List the CRM tags the recruiter can see, without their candidates.","operationId":"list_tags_tags_get","parameters":[{"name":"company_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","description":"Company UUID. CRM combines the recruiter's tags with this organization's tags and job-offer applicants.","title":"Company Id"},"description":"Company UUID. CRM combines the recruiter's tags with this organization's tags and job-offer applicants."},{"name":"only_own","in":"query","required":false,"schema":{"type":"boolean","description":"Exclude tags owned by the recruiter's organization","default":false,"title":"Only Own"},"description":"Exclude tags owned by the recruiter's organization"},{"name":"page","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"1-based page number. Defaults to 1. Values below 1 and unparseable values fall back to the default instead of failing.","title":"Page"},"description":"1-based page number. Defaults to 1. Values below 1 and unparseable values fall back to the default instead of failing."},{"name":"page_size","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Rows per page. Defaults to 20, maximum 100. Larger values are clamped to the maximum and unparseable values fall back to the default; neither is rejected. Read `page_size` in the response to see what was applied.","title":"Page Size"},"description":"Rows per page. Defaults to 20, maximum 100. Larger values are clamped to the maximum and unparseable values fall back to the default; neither is rejected. Read `page_size` in the response to see what was applied."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Paginated_TagResponse_"}}}},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["tags"],"summary":"Create Tag","description":"Create a CRM tag owned by the authenticated recruiter.","operationId":"create_tag_tags_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTagRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tags/{tag_id}":{"patch":{"tags":["tags"],"summary":"Rename Tag","description":"Rename a CRM tag.","operationId":"rename_tag_tags__tag_id__patch","parameters":[{"name":"tag_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"CRM tag ID","title":"Tag Id"},"description":"CRM tag ID"},{"name":"company_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","description":"Company UUID. CRM combines the recruiter's tags with this organization's tags and job-offer applicants.","title":"Company Id"},"description":"Company UUID. CRM combines the recruiter's tags with this organization's tags and job-offer applicants."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenameTagRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["tags"],"summary":"Delete Tag","description":"Delete a CRM tag. The candidates in it are not deleted.","operationId":"delete_tag_tags__tag_id__delete","parameters":[{"name":"tag_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"CRM tag ID","title":"Tag Id"},"description":"CRM tag ID"},{"name":"company_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","description":"Company UUID. CRM combines the recruiter's tags with this organization's tags and job-offer applicants.","title":"Company Id"},"description":"Company UUID. CRM combines the recruiter's tags with this organization's tags and job-offer applicants."}],"responses":{"204":{"description":"Successful Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tags/{tag_id}/candidates":{"get":{"tags":["tags"],"summary":"List Tag Candidates","description":"List the candidates saved in a CRM tag.","operationId":"list_tag_candidates_tags__tag_id__candidates_get","parameters":[{"name":"tag_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"CRM tag ID","title":"Tag Id"},"description":"CRM tag ID"},{"name":"company_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","description":"Company UUID. CRM combines the recruiter's tags with this organization's tags and job-offer applicants.","title":"Company Id"},"description":"Company UUID. CRM combines the recruiter's tags with this organization's tags and job-offer applicants."},{"name":"page","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"1-based page number. Defaults to 1. Values below 1 and unparseable values fall back to the default instead of failing.","title":"Page"},"description":"1-based page number. Defaults to 1. Values below 1 and unparseable values fall back to the default instead of failing."},{"name":"page_size","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Rows per page. Defaults to 20, maximum 100. Larger values are clamped to the maximum and unparseable values fall back to the default; neither is rejected. Read `page_size` in the response to see what was applied.","title":"Page Size"},"description":"Rows per page. Defaults to 20, maximum 100. Larger values are clamped to the maximum and unparseable values fall back to the default; neither is rejected. Read `page_size` in the response to see what was applied."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Paginated_TagCandidateResponse_"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["tags"],"summary":"Add Candidates To Tag","description":"Add existing candidates to a CRM tag.","operationId":"add_candidates_to_tag_tags__tag_id__candidates_post","parameters":[{"name":"tag_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"CRM tag ID","title":"Tag Id"},"description":"CRM tag ID"},{"name":"company_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","description":"Company UUID. CRM combines the recruiter's tags with this organization's tags and job-offer applicants.","title":"Company Id"},"description":"Company UUID. CRM combines the recruiter's tags with this organization's tags and job-offer applicants."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddCandidatesToTagRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddCandidatesToTagResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tags/{tag_id}/candidates/{candidate_id}":{"delete":{"tags":["tags"],"summary":"Remove Candidate From Tag","description":"Remove one candidate from a CRM tag.","operationId":"remove_candidate_from_tag_tags__tag_id__candidates__candidate_id__delete","parameters":[{"name":"tag_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"CRM tag ID","title":"Tag Id"},"description":"CRM tag ID"},{"name":"candidate_id","in":"path","required":true,"schema":{"type":"string","description":"Candidate id as returned by the tag listing","title":"Candidate Id"},"description":"Candidate id as returned by the tag listing"},{"name":"company_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","description":"Company UUID. CRM combines the recruiter's tags with this organization's tags and job-offer applicants.","title":"Company Id"},"description":"Company UUID. CRM combines the recruiter's tags with this organization's tags and job-offer applicants."}],"responses":{"204":{"description":"Successful Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/crm/candidates":{"get":{"tags":["crm"],"summary":"List Crm Candidates","description":"List every candidate in the recruiter's CRM.","operationId":"list_crm_candidates_crm_candidates_get","parameters":[{"name":"company_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","description":"Company UUID. CRM combines the recruiter's tags with this organization's tags and job-offer applicants.","title":"Company Id"},"description":"Company UUID. CRM combines the recruiter's tags with this organization's tags and job-offer applicants."},{"name":"page","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"1-based page number. Defaults to 1. Values below 1 and unparseable values fall back to the default instead of failing.","title":"Page"},"description":"1-based page number. Defaults to 1. Values below 1 and unparseable values fall back to the default instead of failing."},{"name":"page_size","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Rows per page. Defaults to 20, maximum 100. Larger values are clamped to the maximum and unparseable values fall back to the default; neither is rejected. Read `page_size` in the response to see what was applied.","title":"Page Size"},"description":"Rows per page. Defaults to 20, maximum 100. Larger values are clamped to the maximum and unparseable values fall back to the default; neither is rejected. Read `page_size` in the response to see what was applied."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Paginated_CrmCandidateResponse_"}}}},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["crm"],"summary":"Remove Crm Candidates","description":"Remove candidates from every tag the recruiter owns.","operationId":"remove_crm_candidates_crm_candidates_delete","parameters":[{"name":"company_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","description":"Company UUID. CRM combines the recruiter's tags with this organization's tags and job-offer applicants.","title":"Company Id"},"description":"Company UUID. CRM combines the recruiter's tags with this organization's tags and job-offer applicants."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveCrmCandidatesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveCandidatesResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/crm/candidates/import/cv":{"post":{"tags":["crm"],"summary":"Import Crm Candidates From Cv","description":"Import candidates into a CRM tag by uploading their CVs.\n\nEach PDF is parsed into a candidate profile, then created or linked by\nemail, in one call.","operationId":"import_crm_candidates_from_cv_crm_candidates_import_cv_post","parameters":[{"name":"company_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","description":"Company UUID. CRM combines the recruiter's tags with this organization's tags and job-offer applicants.","title":"Company Id"},"description":"Company UUID. CRM combines the recruiter's tags with this organization's tags and job-offer applicants."}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_import_crm_candidates_from_cv_crm_candidates_import_cv_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportCandidatesResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/crm/candidates/import/linkedin":{"post":{"tags":["crm"],"summary":"Import Crm Candidates From Linkedin","description":"Import candidates into a CRM tag from their LinkedIn profile URLs.\n\nEnrichment spends provider credits, one call per URL.","operationId":"import_crm_candidates_from_linkedin_crm_candidates_import_linkedin_post","parameters":[{"name":"company_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","description":"Company UUID. CRM combines the recruiter's tags with this organization's tags and job-offer applicants.","title":"Company Id"},"description":"Company UUID. CRM combines the recruiter's tags with this organization's tags and job-offer applicants."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportLinkedinRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportCandidatesResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/crm/candidates/{candidate_id}":{"get":{"tags":["crm"],"summary":"Get Crm Candidate","description":"Fetch one CRM candidate by id; 404 when they are not in the CRM.","operationId":"get_crm_candidate_crm_candidates__candidate_id__get","parameters":[{"name":"candidate_id","in":"path","required":true,"schema":{"type":"string","description":"Candidate id from the CRM listing: a Nodi profile UUID, an `invite:<email>` key, or a LinkedIn/GitHub row id","title":"Candidate Id"},"description":"Candidate id from the CRM listing: a Nodi profile UUID, an `invite:<email>` key, or a LinkedIn/GitHub row id"},{"name":"company_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","description":"Company UUID. CRM combines the recruiter's tags with this organization's tags and job-offer applicants.","title":"Company Id"},"description":"Company UUID. CRM combines the recruiter's tags with this organization's tags and job-offer applicants."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrmCandidateResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/requisitions":{"get":{"tags":["requisitions"],"summary":"List Requisitions","description":"List a company's hiring requisitions.\n\nEach item reports `headcount` (approved), `headcount_hired` (spent) and\n`headcount_remaining` (still open, null for an evergreen requisition), so\n\"what are we still hiring for\" is answerable from this call alone.\nResults are newest first by default. With `updated_since`, they are oldest\nchanged first so an incremental consumer can advance its watermark safely.\nRequires `view_requisitions` in the company.","operationId":"list_requisitions_requisitions_get","parameters":[{"name":"company_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Company UUID. Optional when the recruiter belongs to a single company.","title":"Company Id"},"description":"Company UUID. Optional when the recruiter belongs to a single company."},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"draft, submitted, approved, rejected, closed or on_hold. Comma-separate several, e.g. 'submitted,approved'.","title":"Status"},"description":"draft, submitted, approved, rejected, closed or on_hold. Comma-separate several, e.g. 'submitted,approved'."},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search title, requester, team or requisition code.","title":"Q"},"description":"Search title, requester, team or requisition code."},{"name":"requisition_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Exact code, e.g. REQ-0042.","title":"Requisition Code"},"description":"Exact code, e.g. REQ-0042."},{"name":"position_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Every requisition opening this position, case-insensitively. Not unique: several requisitions can open the same position.","title":"Position Code"},"description":"Every requisition opening this position, case-insensitively. Not unique: several requisitions can open the same position."},{"name":"department_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Keep only this department's requisitions.","title":"Department Id"},"description":"Keep only this department's requisitions."},{"name":"hiring_manager_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Keep only this hiring manager's requisitions.","title":"Hiring Manager Id"},"description":"Keep only this hiring manager's requisitions."},{"name":"hiring_manager_email","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Keep only requisitions whose hiring manager has no Nodi seat and is this email.","title":"Hiring Manager Email"},"description":"Keep only requisitions whose hiring manager has no Nodi seat and is this email."},{"name":"hiring_prioritization","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Company-specific values; repeat to pass several. Defaults to critical/high/medium/low. dLocal uses Exception, Internal Movement, Savings, Involuntary Leaver and Prioritized.","title":"Hiring Prioritization"},"description":"Company-specific values; repeat to pass several. Defaults to critical/high/medium/low. dLocal uses Exception, Internal Movement, Savings, Involuntary Leaver and Prioritized."},{"name":"location","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Matches the primary or the secondary location, case-insensitively; repeat to pass several.","title":"Location"},"description":"Matches the primary or the secondary location, case-insensitively; repeat to pass several."},{"name":"confidentiality","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"non_confidential or confidential.","title":"Confidentiality"},"description":"non_confidential or confidential."},{"name":"created_since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Keep only requisitions created at or after this moment (ISO 8601). Poll with the time of your previous run to pick up new ones.","title":"Created Since"},"description":"Keep only requisitions created at or after this moment (ISO 8601). Poll with the time of your previous run to pick up new ones."},{"name":"updated_since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Keep only requisitions changed at or after this moment (ISO 8601). Use the latest updated_at already processed to pick up status and field changes. Results are ordered by updated_at and id, oldest first.","title":"Updated Since"},"description":"Keep only requisitions changed at or after this moment (ISO 8601). Use the latest updated_at already processed to pick up status and field changes. Results are ordered by updated_at and id, oldest first."},{"name":"page","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"1-based page number. Defaults to 1. Values below 1 and unparseable values fall back to the default instead of failing.","title":"Page"},"description":"1-based page number. Defaults to 1. Values below 1 and unparseable values fall back to the default instead of failing."},{"name":"page_size","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Rows per page. Defaults to 20, maximum 100. Larger values are clamped to the maximum and unparseable values fall back to the default; neither is rejected. Read `page_size` in the response to see what was applied.","title":"Page Size"},"description":"Rows per page. Defaults to 20, maximum 100. Larger values are clamped to the maximum and unparseable values fall back to the default; neither is rejected. Read `page_size` in the response to see what was applied."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Paginated_RequisitionResponse_"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["requisitions"],"summary":"Create Requisition","description":"Create a hiring requisition.\n\nIt starts as a draft, so the fields the hiring form marks required\n(`position`, `location`, `department_id`, `hiring_manager_id`,\n`recruiter_id`, `vacancy_type`, `hub_location_type`) may be filled in\nlater — they are enforced when the requisition is submitted, not here.\nRequires `view_requisitions` in the company.","operationId":"create_requisition_requisitions_post","parameters":[{"name":"company_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Company UUID. Optional when the recruiter belongs to a single company.","title":"Company Id"},"description":"Company UUID. Optional when the recruiter belongs to a single company."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequisitionCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequisitionResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/requisitions/field-definitions":{"get":{"tags":["requisitions"],"summary":"List Requisition Field Definitions","description":"List the company's own requisition fields.\n\nUse each `identifier` as a key inside a requisition's `custom_fields`, and\nfor a `select` send one of its `options` verbatim. Requires\n`view_requisitions` in the company.\n\nDeclared before `/{requisition_id}` so the literal path is matched first\nrather than being read as a requisition id.","operationId":"list_requisition_field_definitions_requisitions_field_definitions_get","parameters":[{"name":"company_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Company UUID. Optional when the recruiter belongs to a single company.","title":"Company Id"},"description":"Company UUID. Optional when the recruiter belongs to a single company."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RequisitionFieldDefinitionResponse"},"title":"Response List Requisition Field Definitions Requisitions Field Definitions Get"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/requisitions/{requisition_id}":{"get":{"tags":["requisitions"],"summary":"Get Requisition","description":"Get one requisition, with its catalog labels and postings resolved.","operationId":"get_requisition_requisitions__requisition_id__get","parameters":[{"name":"requisition_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Requisition ID","title":"Requisition Id"},"description":"Requisition ID"},{"name":"company_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Company UUID. Optional when the recruiter belongs to a single company.","title":"Company Id"},"description":"Company UUID. Optional when the recruiter belongs to a single company."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequisitionResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["requisitions"],"summary":"Update Requisition","description":"Update a draft or submitted requisition.\n\nOnly the fields the body carries are changed. An approved or closed\nrequisition is immutable apart from its headcount and notes.","operationId":"update_requisition_requisitions__requisition_id__patch","parameters":[{"name":"requisition_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Requisition ID","title":"Requisition Id"},"description":"Requisition ID"},{"name":"company_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Company UUID. Optional when the recruiter belongs to a single company.","title":"Company Id"},"description":"Company UUID. Optional when the recruiter belongs to a single company."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequisitionUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequisitionResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["requisitions"],"summary":"Delete Requisition","description":"Delete a draft requisition that never became a job offer.","operationId":"delete_requisition_requisitions__requisition_id__delete","parameters":[{"name":"requisition_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Requisition ID","title":"Requisition Id"},"description":"Requisition ID"},{"name":"company_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Company UUID. Optional when the recruiter belongs to a single company.","title":"Company Id"},"description":"Company UUID. Optional when the recruiter belongs to a single company."}],"responses":{"204":{"description":"Successful Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/requisitions/{requisition_id}/approve":{"post":{"tags":["requisitions"],"summary":"Approve Requisition","description":"Approve a requisition and create its job offer.\n\nIrreversible: the offer is created as a draft and the requisition becomes\nits primary posting. Approving one that is already approved returns the\nexisting offer with `already_approved` set rather than creating a second.","operationId":"approve_requisition_requisitions__requisition_id__approve_post","parameters":[{"name":"requisition_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Requisition ID","title":"Requisition Id"},"description":"Requisition ID"},{"name":"company_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Company UUID. Optional when the recruiter belongs to a single company.","title":"Company Id"},"description":"Company UUID. Optional when the recruiter belongs to a single company."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveRequisitionResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/requisitions/{requisition_id}/reject":{"post":{"tags":["requisitions"],"summary":"Reject Requisition","description":"Reject a requisition, recording the reason on it.","operationId":"reject_requisition_requisitions__requisition_id__reject_post","parameters":[{"name":"requisition_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Requisition ID","title":"Requisition Id"},"description":"Requisition ID"},{"name":"company_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Company UUID. Optional when the recruiter belongs to a single company.","title":"Company Id"},"description":"Company UUID. Optional when the recruiter belongs to a single company."}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/RequisitionRejectRequest"},{"type":"null"}],"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequisitionResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/requisitions/{requisition_id}/submit":{"post":{"tags":["requisitions"],"summary":"Submit Requisition","description":"Send a draft requisition for approval.\n\nThis is where the required fields are enforced — the hire-form core\n(`position`, `location`, `department_id`, `hiring_manager_id`,\n`recruiter_id`, `vacancy_type`, `hub_location_type`) and any the company\nmarks required — so a draft missing one is refused with 400 naming it.\n\nA requisition already past draft comes back unchanged, so retrying is safe.","operationId":"submit_requisition_requisitions__requisition_id__submit_post","parameters":[{"name":"requisition_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Requisition ID","title":"Requisition Id"},"description":"Requisition ID"},{"name":"company_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Company UUID. Optional when the recruiter belongs to a single company.","title":"Company Id"},"description":"Company UUID. Optional when the recruiter belongs to a single company."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequisitionResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/requisitions/{requisition_id}/hold":{"post":{"tags":["requisitions"],"summary":"Hold Requisition","description":"Pause a requisition without closing it.\n\nThe status it interrupted is remembered so `reopen` can restore it.","operationId":"hold_requisition_requisitions__requisition_id__hold_post","parameters":[{"name":"requisition_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Requisition ID","title":"Requisition Id"},"description":"Requisition ID"},{"name":"company_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Company UUID. Optional when the recruiter belongs to a single company.","title":"Company Id"},"description":"Company UUID. Optional when the recruiter belongs to a single company."}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/RequisitionHoldRequest"},{"type":"null"}],"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequisitionResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/requisitions/{requisition_id}/reopen":{"post":{"tags":["requisitions"],"summary":"Reopen Requisition","description":"Lift a hold, or reopen a closed requisition with remaining headcount.","operationId":"reopen_requisition_requisitions__requisition_id__reopen_post","parameters":[{"name":"requisition_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Requisition ID","title":"Requisition Id"},"description":"Requisition ID"},{"name":"company_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Company UUID. Optional when the recruiter belongs to a single company.","title":"Company Id"},"description":"Company UUID. Optional when the recruiter belongs to a single company."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequisitionResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/requisitions/{requisition_id}/close":{"post":{"tags":["requisitions"],"summary":"Close Requisition","description":"Close a requisition, whether or not it was filled.","operationId":"close_requisition_requisitions__requisition_id__close_post","parameters":[{"name":"requisition_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Requisition ID","title":"Requisition Id"},"description":"Requisition ID"},{"name":"company_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Company UUID. Optional when the recruiter belongs to a single company.","title":"Company Id"},"description":"Company UUID. Optional when the recruiter belongs to a single company."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequisitionResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorResponse"}}},"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AddCandidatesToTagRequest":{"properties":{"profile_ids":{"items":{"type":"string"},"type":"array","title":"Profile Ids"}},"additionalProperties":false,"type":"object","title":"AddCandidatesToTagRequest","description":"Add candidates to a CRM tag by profile id."},"AddCandidatesToTagResponse":{"properties":{"added_count":{"type":"integer","title":"Added Count","default":0},"skipped_count":{"type":"integer","title":"Skipped Count","default":0}},"type":"object","title":"AddCandidatesToTagResponse","description":"Result of a bulk add-to-tag operation."},"ApplicantFeedbackBundle":{"properties":{"job_offer_profile_id":{"type":"string","format":"uuid","title":"Job Offer Profile Id"},"flow_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Flow Id"},"stages":{"items":{"$ref":"#/components/schemas/StageFeedbackBundle"},"type":"array","title":"Stages"},"current_stage_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Current Stage Id"}},"type":"object","required":["job_offer_profile_id"],"title":"ApplicantFeedbackBundle","description":"The full feedback view for one applicant across every pipeline stage."},"ApplicantStatusRequest":{"properties":{"status":{"type":"string","enum":["Like","Pending","Dislike"],"title":"Status"}},"additionalProperties":false,"type":"object","required":["status"],"title":"ApplicantStatusRequest","description":"Dashboard review status for an applicant."},"ApplicantStatusResponse":{"properties":{"job_offer_id":{"type":"string","format":"uuid","title":"Job Offer Id"},"profile_id":{"type":"string","format":"uuid","title":"Profile Id"},"status":{"type":"string","enum":["Like","Pending","Dislike"],"title":"Status"}},"type":"object","required":["job_offer_id","profile_id","status"],"title":"ApplicantStatusResponse","description":"Confirmation of an applicant review-status change."},"ApplicationResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"profile_id":{"type":"string","format":"uuid","title":"Profile Id"},"score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Score"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"status_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Status Id"},"evaluation_framework_analysis":{"title":"Evaluation Framework Analysis"},"custom_fields":{"title":"Custom Fields"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"profile_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Title"},"profile_location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Location"},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bio"},"resume_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resume Url"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"email":{"type":"string","title":"Email","default":""},"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"comments":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Comments"},"recruiter_comments":{"anyOf":[{"items":{"$ref":"#/components/schemas/CandidateCommentResponse"},"type":"array"},{"type":"null"}],"title":"Recruiter Comments"},"applied_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Applied At"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"source_medium":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Medium"},"source_pool":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Pool"},"imported_by_recruiter_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Imported By Recruiter Id"},"imported_by_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Imported By Name"},"referred_by_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Referred By Name"},"referred_by_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Referred By Email"},"links":{"anyOf":[{"items":{"$ref":"#/components/schemas/CandidateLinkResponse"},"type":"array"},{"type":"null"}],"title":"Links"}},"type":"object","required":["id","profile_id"],"title":"ApplicationResponse","description":"A candidate application, preserving the existing REST contract."},"ApproveRequisitionResponse":{"properties":{"requisition_id":{"type":"string","format":"uuid","title":"Requisition Id"},"job_offer_id":{"type":"string","format":"uuid","title":"Job Offer Id"},"already_approved":{"type":"boolean","title":"Already Approved"}},"type":"object","required":["requisition_id","job_offer_id","already_approved"],"title":"ApproveRequisitionResponse","description":"Result of approving a requisition."},"Body_import_crm_candidates_from_cv_crm_candidates_import_cv_post":{"properties":{"files":{"items":{"type":"string","format":"binary"},"type":"array","title":"Files","description":"CV files, PDF only"},"tag_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Tag Id","description":"Target tag; defaults to the 'Imported' tag"}},"type":"object","required":["files"],"title":"Body_import_crm_candidates_from_cv_crm_candidates_import_cv_post"},"Body_upload_company_image_job_offers__id__company_image_post":{"properties":{"file":{"type":"string","title":"File","description":"JPEG or PNG image","format":"binary"}},"type":"object","required":["file"],"title":"Body_upload_company_image_job_offers__id__company_image_post"},"CandidateActivityEventResponse":{"properties":{"id":{"type":"string","title":"Id"},"event_type":{"type":"string","title":"Event Type","description":"Machine-readable event kind, e.g. a stage move, a status change or a source edit. New kinds are added over time, so treat an unrecognized value as informational rather than as an error."},"occurred_at":{"type":"string","format":"date-time","title":"Occurred At"},"title":{"type":"string","title":"Title","description":"Human-readable summary of what happened."},"actor_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Label","description":"Name of the recruiter who caused the event, or null when it was produced by the system (an automation, or the candidate)."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Event-specific payload, such as the previous and new value."},"source":{"type":"string","enum":["live","backfill"],"title":"Source","description":"'live' for events recorded as they happened; 'backfill' for events reconstructed from historical data, whose timestamps are less precise.","default":"live"}},"type":"object","required":["id","event_type","occurred_at","title"],"title":"CandidateActivityEventResponse","description":"One event in a candidate's activity log for a single job offer."},"CandidateActivityLogResponse":{"properties":{"profile_id":{"type":"string","format":"uuid","title":"Profile Id"},"job_offer_id":{"type":"string","format":"uuid","title":"Job Offer Id"},"events":{"items":{"$ref":"#/components/schemas/CandidateActivityEventResponse"},"type":"array","title":"Events"}},"type":"object","required":["profile_id","job_offer_id"],"title":"CandidateActivityLogResponse","description":"A candidate's activity log for one job offer, newest event first."},"CandidateApplicationDetailResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"profile_id":{"type":"string","format":"uuid","title":"Profile Id"},"score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Score"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"status_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Status Id"},"evaluation_framework_analysis":{"title":"Evaluation Framework Analysis"},"custom_fields":{"title":"Custom Fields"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"profile_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Title"},"profile_location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Location"},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bio"},"resume_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resume Url"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"email":{"type":"string","title":"Email","default":""},"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"comments":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Comments"},"recruiter_comments":{"anyOf":[{"items":{"$ref":"#/components/schemas/CandidateCommentResponse"},"type":"array"},{"type":"null"}],"title":"Recruiter Comments"},"applied_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Applied At"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"source_medium":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Medium"},"source_pool":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Pool"},"imported_by_recruiter_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Imported By Recruiter Id"},"imported_by_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Imported By Name"},"referred_by_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Referred By Name"},"referred_by_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Referred By Email"},"links":{"anyOf":[{"items":{"$ref":"#/components/schemas/CandidateLinkResponse"},"type":"array"},{"type":"null"}],"title":"Links"},"screening_answers":{"items":{"$ref":"#/components/schemas/CandidateScreeningAnswerResponse"},"type":"array","title":"Screening Answers"},"interview_feedback":{"anyOf":[{"$ref":"#/components/schemas/McpApplicantFeedbackBundle"},{"type":"null"}]},"candidate_profile":{"anyOf":[{"$ref":"#/components/schemas/CandidateFullDetailResponse"},{"type":"null"}]}},"type":"object","required":["id","profile_id"],"title":"CandidateApplicationDetailResponse","description":"Full candidate view for one offer, including answers and interviews."},"CandidateCommentResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"recruiter_id":{"type":"string","format":"uuid","title":"Recruiter Id"},"author_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Author Name"},"author_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Author Email"},"body":{"type":"string","title":"Body","default":""},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","recruiter_id"],"title":"CandidateCommentResponse","description":"A recruiter comment shown on a candidate application."},"CandidateDetailResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bio"},"career_goals":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Career Goals"},"latest_position":{"type":"string","title":"Latest Position","default":""},"skills":{"type":"string","title":"Skills","default":""},"languages":{"type":"string","title":"Languages","default":""},"work_modalities":{"type":"string","title":"Work Modalities","default":""},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"resume_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resume Url"},"profile_url":{"type":"string","title":"Profile Url"},"full_profile":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Full Profile"}},"type":"object","required":["id","profile_url"],"title":"CandidateDetailResponse","description":"A candidate's public profile view.\n\n``skills``, ``languages`` and ``work_modalities`` are comma-separated\nstrings rather than arrays, matching the Go ``CandidateDetailResponse``."},"CandidateFullDetailResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bio"},"career_goals":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Career Goals"},"latest_position":{"type":"string","title":"Latest Position","default":""},"skills":{"type":"string","title":"Skills","default":""},"languages":{"type":"string","title":"Languages","default":""},"work_modalities":{"type":"string","title":"Work Modalities","default":""},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"resume_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resume Url"},"profile_url":{"type":"string","title":"Profile Url"},"full_profile":{"additionalProperties":true,"type":"object","title":"Full Profile"}},"type":"object","required":["id","profile_url"],"title":"CandidateFullDetailResponse","description":"Enriched candidate profile used by new MCP/detail operations."},"CandidateLinkResponse":{"properties":{"url":{"type":"string","title":"Url"},"type":{"type":"string","title":"Type"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"}},"type":"object","required":["url","type"],"title":"CandidateLinkResponse","description":"A social or portfolio link attached to a candidate profile."},"CandidateProfileNoteRequest":{"properties":{"profile_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Profile Id"},"linkedin_profile_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Linkedin Profile Id"},"company_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Company Id"},"body":{"type":"string","title":"Body"}},"additionalProperties":false,"type":"object","required":["body"],"title":"CandidateProfileNoteRequest","description":"Create a CRM note for a Nodi or LinkedIn candidate."},"CandidateProfileNoteResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"recruiter_id":{"type":"string","format":"uuid","title":"Recruiter Id"},"author_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Author Name"},"author_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Author Email"},"body":{"type":"string","title":"Body","default":""},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","recruiter_id"],"title":"CandidateProfileNoteResponse","description":"A CRM-level note attached directly to a candidate profile."},"CandidateScreeningAnswerResponse":{"properties":{"question_id":{"type":"string","format":"uuid","title":"Question Id"},"answer":{"title":"Answer"},"answered_by_recruiter":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Answered By Recruiter","description":"True when entered by a recruiter, false when entered by the candidate, and null for historical rows whose source is unknown."},"question":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Question"},"disqualifying":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Disqualifying"},"disqualifying_criteria":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Disqualifying Criteria"},"deleted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Deleted At"}},"type":"object","required":["question_id"],"title":"CandidateScreeningAnswerResponse","description":"One screening-question answer for an applicant."},"CandidateSearchResponse":{"properties":{"total":{"type":"integer","title":"Total"},"items":{"items":{"$ref":"#/components/schemas/CandidateSearchResult"},"type":"array","title":"Items"}},"type":"object","required":["total","items"],"title":"CandidateSearchResponse","description":"The ranked search-result envelope."},"CandidateSearchResult":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name","default":""},"profile_url":{"type":"string","title":"Profile Url"},"summary":{"type":"string","title":"Summary","default":""},"fit_percentage":{"type":"integer","title":"Fit Percentage","default":0},"checklist":{"title":"Checklist"},"latest_role":{"type":"string","title":"Latest Role","default":""}},"type":"object","required":["id","profile_url"],"title":"CandidateSearchResult","description":"One ranked hit from the semantic candidate search."},"CatalogItem":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Value"}},"type":"object","required":["id"],"title":"CatalogItem","description":"A catalog entry exposed as an ``id``/``value`` pair."},"CompanyMemberResponse":{"properties":{"recruiter_id":{"type":"string","format":"uuid","title":"Recruiter Id"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"email":{"type":"string","title":"Email","default":""},"role":{"type":"string","title":"Role","default":""},"status":{"type":"string","title":"Status","default":""},"accepted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Accepted At"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["recruiter_id"],"title":"CompanyMemberResponse","description":"One member of a company, including the owner."},"CompanyResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name"},"company_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Description"},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website"},"company_size":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Size"},"hq_location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hq Location"},"industry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry"},"stage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stage"},"owner_recruiter_id":{"type":"string","format":"uuid","title":"Owner Recruiter Id"},"role":{"type":"string","title":"Role","default":""},"is_owner":{"type":"boolean","title":"Is Owner","default":false},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["id","owner_recruiter_id"],"title":"CompanyResponse","description":"A company the recruiter owns or is an active member of."},"CompetencyResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"flow_stage_id":{"type":"string","format":"uuid","title":"Flow Stage Id"},"name":{"type":"string","title":"Name","default":""},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"sort_order":{"type":"integer","title":"Sort Order","default":0}},"type":"object","required":["id","flow_stage_id"],"title":"CompetencyResponse","description":"A scored competency defined on a pipeline stage."},"ContactCandidateRequest":{"properties":{"message":{"type":"string","title":"Message"},"cc":{"items":{"type":"string"},"type":"array","title":"Cc"}},"type":"object","required":["message"],"title":"ContactCandidateRequest","description":"Outreach message payload."},"CreateCompetencyRequest":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"additionalProperties":false,"type":"object","required":["name"],"title":"CreateCompetencyRequest","description":"Add a competency to a stage."},"CreateJobOfferRequest":{"properties":{"company_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Company Id"},"department_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Department Id"},"is_anonymous":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Anonymous"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"},"min_salary":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Salary"},"max_salary":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Salary"},"currency_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Currency Id"},"payment_frequency_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Payment Frequency Id"},"job_modality_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Job Modality Id"},"job_type_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Job Type Id"},"job_seniority_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Job Seniority Id"},"is_location_disqualifying":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Location Disqualifying"},"disable_nodi_candidates":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Disable Nodi Candidates"},"linkedin_publish":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Linkedin Publish"},"use_default_company_image":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Default Company Image"},"company_image_filename":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Image Filename"},"company_image_data_base64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Image Data Base64"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"},"payment_frequency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Frequency"},"job_modality":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Modality"},"job_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Type"},"job_seniority":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Seniority"}},"additionalProperties":false,"type":"object","title":"CreateJobOfferRequest","description":"Payload for creating a job offer.\n\nEvery field is optional. Catalog ``*_id`` fields must be UUIDs obtained from\nthe matching catalog endpoint. ``status_id`` is intentionally absent: new\noffers always start in the default unpublished status."},"CreateQuestionRequest":{"properties":{"question":{"type":"string","title":"Question"},"type_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Type Id"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"required":{"type":"boolean","title":"Required","default":true},"disqualifying":{"type":"boolean","title":"Disqualifying","default":false},"disqualifying_criteria":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Disqualifying Criteria"},"options":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Options"}},"additionalProperties":false,"type":"object","required":["question"],"title":"CreateQuestionRequest","description":"Add a screening question.\n\nEither ``type_id`` (a UUID from the question-type catalog) or ``type`` (its\nname) identifies the question type."},"CreateStageRequest":{"properties":{"name":{"type":"string","title":"Name"},"action_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action Type"},"action_details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Action Details"}},"additionalProperties":false,"type":"object","required":["name"],"title":"CreateStageRequest","description":"Append a stage to the pipeline."},"CreateTagRequest":{"properties":{"name":{"type":"string","title":"Name"}},"additionalProperties":false,"type":"object","required":["name"],"title":"CreateTagRequest","description":"Create a CRM tag owned by the caller."},"CreateTokenRequest":{"properties":{"session_cookie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Cookie"},"firebase_session":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Firebase Session"}},"type":"object","title":"CreateTokenRequest","description":"Optional body for ``POST /auth/token``.\n\nThe session cookie may also arrive via the ``Authorization`` header or the\n``firebase_session`` cookie; all three sources were accepted by the Go API."},"CreateTokenResponse":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type","default":"Bearer"},"expires_in":{"type":"integer","title":"Expires In"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"}},"type":"object","required":["access_token","expires_in","expires_at"],"title":"CreateTokenResponse","description":"OAuth-shaped envelope returned by ``POST /auth/token``."},"CrmCandidateResponse":{"properties":{"id":{"type":"string","title":"Id"},"source":{"type":"string","title":"Source","default":"platform"},"full_name":{"type":"string","title":"Full Name","default":""},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location"},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bio"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"linkedin_profile_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Profile Id"},"github_login":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Github Login"},"tags":{"items":{"$ref":"#/components/schemas/CrmTagRef"},"type":"array","title":"Tags"},"added_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Added At"},"profile_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Url"}},"type":"object","required":["id"],"title":"CrmCandidateResponse","description":"One person in the recruiter's CRM, with every label they carry.\n\n``id`` is what ``remove_crm_candidates`` accepts: a Nodi profile UUID\nwhen ``source`` is ``platform``, a LinkedIn or GitHub row UUID when the\ncandidate was saved from those networks, or ``invite:<email>`` for a\npending invite with no profile yet."},"CrmTagRef":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name","default":""},"type":{"type":"string","title":"Type","default":"tag"}},"type":"object","required":["id"],"title":"CrmTagRef","description":"One label a CRM candidate carries.\n\n``type`` says where the label came from: ``tag`` for a CRM tag the\nrecruiter created, ``job_offer`` for an offer the candidate applied to,\nand ``import`` for the import/invitation that first brought them in.\n``id`` refers to the tag, the offer, or the import record accordingly."},"FeedbackAnswer":{"properties":{"question_id":{"type":"string","format":"uuid","title":"Question Id"},"answer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Answer"},"answer_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Answer Source"}},"type":"object","required":["question_id"],"title":"FeedbackAnswer","description":"One reply to a stage interview question inside a feedback submission."},"FeedbackAnswerInput":{"properties":{"question_id":{"type":"string","format":"uuid","title":"Question Id"},"answer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Answer"}},"additionalProperties":false,"type":"object","required":["question_id"],"title":"FeedbackAnswerInput","description":"A stage-question answer in an upsert."},"FeedbackResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"flow_stage_id":{"type":"string","format":"uuid","title":"Flow Stage Id"},"recruiter_id":{"type":"string","format":"uuid","title":"Recruiter Id"},"interviewer_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Interviewer Name"},"interviewer_email":{"type":"string","title":"Interviewer Email","default":""},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"overall_score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Overall Score"},"advance_decision":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Advance Decision"},"salary_expectation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Salary Expectation"},"scores":{"items":{"$ref":"#/components/schemas/FeedbackScore"},"type":"array","title":"Scores"},"answers":{"items":{"$ref":"#/components/schemas/FeedbackAnswer"},"type":"array","title":"Answers"},"submitted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Submitted At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"notes_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes Source"}},"type":"object","required":["id","flow_stage_id","recruiter_id"],"title":"FeedbackResponse","description":"One interviewer's feedback for an applicant at one stage."},"FeedbackScore":{"properties":{"competency_id":{"type":"string","format":"uuid","title":"Competency Id"},"score":{"type":"integer","title":"Score"},"comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Comment"}},"type":"object","required":["competency_id","score"],"title":"FeedbackScore","description":"One per-competency score inside a feedback submission."},"FeedbackScoreInput":{"properties":{"competency_id":{"type":"string","format":"uuid","title":"Competency Id"},"score":{"type":"integer","maximum":4.0,"minimum":1.0,"title":"Score"},"comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Comment"}},"additionalProperties":false,"type":"object","required":["competency_id","score"],"title":"FeedbackScoreInput","description":"A per-competency score in an upsert; ``score`` must be 1-4."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ImportCandidateResultItem":{"properties":{"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"profile_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Profile Id"},"status":{"type":"string","title":"Status"},"detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detail"},"source_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Reference"}},"type":"object","required":["status"],"title":"ImportCandidateResultItem","description":"Outcome for a single candidate in an import batch."},"ImportCandidatesResponse":{"properties":{"tag_id":{"type":"string","format":"uuid","title":"Tag Id"},"created":{"type":"integer","title":"Created","default":0},"linked":{"type":"integer","title":"Linked","default":0},"skipped":{"type":"integer","title":"Skipped","default":0},"results":{"items":{"$ref":"#/components/schemas/ImportCandidateResultItem"},"type":"array","title":"Results"}},"type":"object","required":["tag_id"],"title":"ImportCandidatesResponse","description":"Summary of a CRM import batch."},"ImportLinkedinRequest":{"properties":{"linkedin_urls":{"items":{"type":"string"},"type":"array","title":"Linkedin Urls"},"tag_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Tag Id"}},"additionalProperties":false,"type":"object","title":"ImportLinkedinRequest","description":"Import candidates into a CRM tag from their LinkedIn profile URLs.\n\nEach URL is enriched through the same provider chain the dashboard uses,\nthen run through the CV extraction, so the resulting profiles match what a\nCV upload would have produced. Without ``tag_id`` the candidates land in\nthe recruiter's ``Imported`` tag, which is created on first use."},"InviteCandidatesRequest":{"properties":{"profile_ids":{"items":{"type":"string"},"type":"array","title":"Profile Ids"}},"type":"object","title":"InviteCandidatesRequest","description":"Profile ids to invite to a job offer.\n\nIds may mix Nodi profile UUIDs and external provider ids; the consuming\nworker resolves both, so no UUID validation happens here."},"JobOfferResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"recruiter_id":{"type":"string","format":"uuid","title":"Recruiter Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"},"min_salary":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Salary"},"max_salary":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Salary"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"},"payment_frequency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Frequency"},"job_modality":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Modality"},"job_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Type"},"job_seniority":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Seniority"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"is_anonymous":{"type":"boolean","title":"Is Anonymous","default":false},"department_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Department Id"},"magic_link":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Magic Link"},"company_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Image Url"},"status_automatic_invitations":{"type":"boolean","title":"Status Automatic Invitations","default":false},"flow_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Flow Id"},"company_onboarding_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Company Onboarding Id"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"is_location_disqualifying":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Location Disqualifying"},"disable_nodi_candidates":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Disable Nodi Candidates"},"linkedin_publish":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Linkedin Publish"},"evaluation_framework":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Evaluation Framework"},"department":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department"},"requisition_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Requisition Id","description":"Requisition the offer is linked to. Only resolved by GET /job-offers/{id}; null in list responses or when unlinked."}},"type":"object","required":["id","recruiter_id"],"title":"JobOfferResponse","description":"A job offer with catalog fields resolved to human-readable values."},"LoginRequest":{"properties":{"email":{"type":"string","title":"Email"},"password":{"type":"string","title":"Password"}},"type":"object","required":["email","password"],"title":"LoginRequest","description":"Email/password credentials for ``POST /auth/login``."},"LoginResponse":{"properties":{"id_token":{"type":"string","title":"Id Token"},"refresh_token":{"type":"string","title":"Refresh Token","default":""},"expires_in":{"type":"string","title":"Expires In"},"local_id":{"type":"string","title":"Local Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"}},"type":"object","required":["id_token","expires_in","local_id"],"title":"LoginResponse","description":"Firebase-shaped login response carrying the minted PAT as ``id_token``."},"McpApplicantFeedbackBundle":{"properties":{"job_offer_profile_id":{"type":"string","format":"uuid","title":"Job Offer Profile Id"},"flow_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Flow Id"},"stages":{"items":{"$ref":"#/components/schemas/StageFeedbackBundle"},"type":"array","title":"Stages"},"current_stage_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Current Stage Id"}},"type":"object","required":["job_offer_profile_id"],"title":"McpApplicantFeedbackBundle","description":"Enriched applicant feedback projection used by MCP/detail operations."},"MoveApplicantRequest":{"properties":{"stage_id":{"type":"string","format":"uuid","title":"Stage Id"},"stage_configuration_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Stage Configuration Id"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},"additionalProperties":false,"type":"object","required":["stage_id"],"title":"MoveApplicantRequest","description":"Move a candidate already in the pipeline to another stage."},"MoveApplicantResponse":{"properties":{"profile_flow_id":{"type":"string","format":"uuid","title":"Profile Flow Id"},"profile_id":{"type":"string","format":"uuid","title":"Profile Id"},"flow_id":{"type":"string","format":"uuid","title":"Flow Id"},"current_stage_id":{"type":"string","format":"uuid","title":"Current Stage Id"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"action_queued":{"type":"boolean","title":"Action Queued","default":false}},"type":"object","required":["profile_flow_id","profile_id","flow_id","current_stage_id"],"title":"MoveApplicantResponse","description":"The candidate's new stage, plus whether the stage action was queued."},"NoteRequest":{"properties":{"body":{"type":"string","title":"Body"}},"additionalProperties":false,"type":"object","required":["body"],"title":"NoteRequest","description":"Create/update payload for a note."},"NoteResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"recruiter_id":{"type":"string","format":"uuid","title":"Recruiter Id"},"author_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Author Name"},"author_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Author Email"},"body":{"type":"string","title":"Body","default":""},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","recruiter_id"],"title":"NoteResponse","description":"One recruiter note on a candidate's application."},"OfferLetterExportDocument":{"properties":{"file_name":{"type":"string","title":"File Name"},"uploaded_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Uploaded At"},"download_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Download Url","description":"Signed URL to download the PDF. It expires after a few hours, so fetch the file promptly rather than storing the link."}},"type":"object","required":["file_name"],"title":"OfferLetterExportDocument","description":"A stored PDF of the offer letter."},"OfferLetterExportField":{"properties":{"identifier":{"type":"string","title":"Identifier","description":"Stable machine name of the term. Standard terms use Nodi's names (`salary_amount`, `anticipated_start_date`); company terms start with `custom_`. Offers imported from Lever are folded onto the same names, so one identifier means one thing across every offer."},"label":{"type":"string","title":"Label","description":"Human-readable name of the term."},"field_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Field Type","description":"Declared type: text, textarea, number, currency, date, dropdown or yes_no. Null for a term the company no longer defines."},"value":{"title":"Value","description":"The term's value, or null when empty. Dates are `YYYY-MM-DD`; number and currency terms are JSON numbers."}},"type":"object","required":["identifier","label"],"title":"OfferLetterExportField","description":"One term of an offer, normalized for machine consumption."},"OfferLetterExportResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"status":{"type":"string","title":"Status","description":"draft, approval_sent, approved, sent, sent_manually, opened, signed, denied or cancelled."},"application_id":{"type":"string","format":"uuid","title":"Application Id","description":"The application (job offer + candidate) the offer is for."},"job_offer_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Job Offer Id"},"job_offer_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Offer Title"},"profile_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Profile Id"},"candidate_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Candidate Name"},"candidate_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Candidate Email"},"source":{"type":"string","enum":["nodi","lever"],"title":"Source","description":"Where the offer was made: in Nodi, or imported from Lever."},"lever_offer_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lever Offer Id","description":"Lever's id for an offer imported from Lever."},"hired_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Hired At","description":"When the candidate entered the pipeline's Hired stage; null while they are not on it."},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"approved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Approved At"},"sent_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Sent At"},"signed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Signed At"},"denied_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Denied At"},"cancelled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Cancelled At"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"fields":{"items":{"$ref":"#/components/schemas/OfferLetterExportField"},"type":"array","title":"Fields","description":"Every term of the offer, followed by any term the company's form defines that this offer left empty."},"values":{"additionalProperties":true,"type":"object","title":"Values","description":"The same terms as `fields`, keyed by identifier."},"hire_summary":{"anyOf":[{"$ref":"#/components/schemas/OfferLetterHireSummary"},{"type":"null"}]},"signatures":{"items":{"$ref":"#/components/schemas/OfferLetterExportSignature"},"type":"array","title":"Signatures"},"sent_document":{"anyOf":[{"$ref":"#/components/schemas/OfferLetterExportDocument"},{"type":"null"}]},"signed_document":{"anyOf":[{"$ref":"#/components/schemas/OfferLetterExportDocument"},{"type":"null"}],"description":"The signed PDF. Present as soon as anyone signs; check `status` is `signed` to know every signature is in."}},"type":"object","required":["id","status","application_id","source","created_at"],"title":"OfferLetterExportResponse","description":"An offer letter with its terms, signatures and documents."},"OfferLetterExportSignature":{"properties":{"role":{"type":"string","title":"Role","description":"candidate, company_1, company_2 or company_3."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"email":{"type":"string","title":"Email"},"signed":{"type":"boolean","title":"Signed"},"signed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Signed At"},"first_opened_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"First Opened At"},"last_opened_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Opened At"}},"type":"object","required":["role","email","signed"],"title":"OfferLetterExportSignature","description":"One signer of an offer letter."},"OfferLetterHireSummary":{"properties":{"manager":{"title":"Manager","description":"Direct manager."},"division":{"title":"Division"},"start_date":{"title":"Start Date","description":"`anticipated_start_date`, or the organization's own starting date term when the standard one is empty (offers imported from Lever)."},"hire_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Hire Date","description":"Day the candidate entered the pipeline's Hired stage."},"hiring_entity":{"title":"Hiring Entity"},"employment_status":{"title":"Employment Status"},"employment_format":{"title":"Employment Format"},"probation_period_end":{"title":"Probation Period End","description":"Last day of the probation period."},"pay_schedule":{"title":"Pay Schedule"},"designated_office":{"title":"Designated Office"},"pay_grade":{"title":"Pay Grade"},"working_hours":{"title":"Working Hours"},"salary_amount":{"title":"Salary Amount","description":"Final agreed salary."},"salary_currency":{"title":"Salary Currency"},"salary_interval":{"title":"Salary Interval","description":"per-year-salary, per-month-salary or per-hour-wage."},"pay_type":{"title":"Pay Type","description":"Compensation type."},"bonus_amount":{"title":"Bonus Amount"},"bonus_currency":{"title":"Bonus Currency"},"bonus_payment_schedule":{"title":"Bonus Payment Schedule"},"bonus_comments":{"title":"Bonus Comments"},"bonus_effective_date":{"title":"Bonus Effective Date"},"signing_bonus_amount":{"title":"Signing Bonus Amount"},"signing_bonus_currency":{"title":"Signing Bonus Currency"},"signing_bonus_payment_date":{"title":"Signing Bonus Payment Date"}},"type":"object","title":"OfferLetterHireSummary","description":"The hiring terms of one offer, flattened for HR automations.\n\nOnly offers of organizations with a configured offer form mapping carry this\nblock; for every other organization it is null. Every key is always present,\nwith null when the offer does not state it."},"OfferLetterStatus":{"type":"string","enum":["draft","approval_sent","approved","sent","sent_manually","opened","signed","denied","cancelled"],"title":"OfferLetterStatus","description":"Where an offer letter is in its lifecycle."},"Paginated_CrmCandidateResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/CrmCandidateResponse"},"type":"array","title":"Items","description":"This page's rows, at most `page_size` of them (default 20)."},"page":{"type":"integer","title":"Page","description":"The 1-based page these items came from."},"page_size":{"type":"integer","title":"Page Size","description":"Rows per page actually applied, after defaulting to 20 and clamping to 100."},"total":{"type":"integer","title":"Total","description":"Rows matching the request across every page, not just this one. Compare it against `page * page_size` to know whether more remain."}},"type":"object","required":["items","page","page_size","total"],"title":"Paginated[CrmCandidateResponse]"},"Paginated_JobOfferResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/JobOfferResponse"},"type":"array","title":"Items","description":"This page's rows, at most `page_size` of them (default 20)."},"page":{"type":"integer","title":"Page","description":"The 1-based page these items came from."},"page_size":{"type":"integer","title":"Page Size","description":"Rows per page actually applied, after defaulting to 20 and clamping to 100."},"total":{"type":"integer","title":"Total","description":"Rows matching the request across every page, not just this one. Compare it against `page * page_size` to know whether more remain."}},"type":"object","required":["items","page","page_size","total"],"title":"Paginated[JobOfferResponse]"},"Paginated_OfferLetterExportResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/OfferLetterExportResponse"},"type":"array","title":"Items","description":"This page's rows, at most `page_size` of them (default 20)."},"page":{"type":"integer","title":"Page","description":"The 1-based page these items came from."},"page_size":{"type":"integer","title":"Page Size","description":"Rows per page actually applied, after defaulting to 20 and clamping to 100."},"total":{"type":"integer","title":"Total","description":"Rows matching the request across every page, not just this one. Compare it against `page * page_size` to know whether more remain."}},"type":"object","required":["items","page","page_size","total"],"title":"Paginated[OfferLetterExportResponse]"},"Paginated_RequisitionResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/RequisitionResponse"},"type":"array","title":"Items","description":"This page's rows, at most `page_size` of them (default 20)."},"page":{"type":"integer","title":"Page","description":"The 1-based page these items came from."},"page_size":{"type":"integer","title":"Page Size","description":"Rows per page actually applied, after defaulting to 20 and clamping to 100."},"total":{"type":"integer","title":"Total","description":"Rows matching the request across every page, not just this one. Compare it against `page * page_size` to know whether more remain."}},"type":"object","required":["items","page","page_size","total"],"title":"Paginated[RequisitionResponse]"},"Paginated_TagCandidateResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/TagCandidateResponse"},"type":"array","title":"Items","description":"This page's rows, at most `page_size` of them (default 20)."},"page":{"type":"integer","title":"Page","description":"The 1-based page these items came from."},"page_size":{"type":"integer","title":"Page Size","description":"Rows per page actually applied, after defaulting to 20 and clamping to 100."},"total":{"type":"integer","title":"Total","description":"Rows matching the request across every page, not just this one. Compare it against `page * page_size` to know whether more remain."}},"type":"object","required":["items","page","page_size","total"],"title":"Paginated[TagCandidateResponse]"},"Paginated_TagResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/TagResponse"},"type":"array","title":"Items","description":"This page's rows, at most `page_size` of them (default 20)."},"page":{"type":"integer","title":"Page","description":"The 1-based page these items came from."},"page_size":{"type":"integer","title":"Page Size","description":"Rows per page actually applied, after defaulting to 20 and clamping to 100."},"total":{"type":"integer","title":"Total","description":"Rows matching the request across every page, not just this one. Compare it against `page * page_size` to know whether more remain."}},"type":"object","required":["items","page","page_size","total"],"title":"Paginated[TagResponse]"},"PublicErrorResponse":{"properties":{"code":{"type":"string","title":"Code","examples":["not_found"]},"message":{"type":"string","title":"Message","examples":["resource not found"]}},"type":"object","required":["code","message"],"title":"PublicErrorResponse","description":"The stable public error body."},"QuestionResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"job_offer_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Job Offer Id"},"type_id":{"type":"string","format":"uuid","title":"Type Id"},"type":{"type":"string","title":"Type","default":""},"question":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Question"},"required":{"type":"boolean","title":"Required","default":false},"disqualifying":{"type":"boolean","title":"Disqualifying","default":false},"disqualifying_criteria":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Disqualifying Criteria"},"parent_question_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Parent Question Id"},"conditional_rule":{"title":"Conditional Rule"},"sort_order":{"type":"integer","title":"Sort Order","default":0},"options":{"items":{"type":"string"},"type":"array","title":"Options"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","type_id"],"title":"QuestionResponse","description":"A screening question of a job offer, with its options."},"QuestionTypeResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"}},"type":"object","required":["id"],"title":"QuestionTypeResponse","description":"A screening-question type catalog entry."},"QueuedResponse":{"properties":{"detail":{"type":"string","title":"Detail"}},"type":"object","required":["detail"],"title":"QueuedResponse","description":"Acknowledges work handed to a background worker."},"RemoveCandidatesResponse":{"properties":{"removed_count":{"type":"integer","title":"Removed Count","default":0}},"type":"object","title":"RemoveCandidatesResponse","description":"Result of removing candidates from a tag or from the CRM."},"RemoveCrmCandidatesRequest":{"properties":{"profile_ids":{"items":{"type":"string"},"type":"array","title":"Profile Ids"}},"additionalProperties":false,"type":"object","title":"RemoveCrmCandidatesRequest","description":"Remove candidates from every CRM tag the recruiter owns."},"RenameTagRequest":{"properties":{"name":{"type":"string","title":"Name"}},"additionalProperties":false,"type":"object","required":["name"],"title":"RenameTagRequest","description":"Rename a CRM tag."},"ReorderCompetenciesRequest":{"properties":{"competency_ids_ordered":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Competency Ids Ordered"}},"additionalProperties":false,"type":"object","title":"ReorderCompetenciesRequest","description":"Full ordering of a stage's competencies."},"ReorderQuestionsRequest":{"properties":{"question_ids_ordered":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Question Ids Ordered"}},"additionalProperties":false,"type":"object","title":"ReorderQuestionsRequest","description":"Full ordering of a job offer's screening questions."},"ReorderStagesRequest":{"properties":{"stage_ids_ordered":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Stage Ids Ordered"}},"additionalProperties":false,"type":"object","title":"ReorderStagesRequest","description":"Full ordering of a pipeline's stages."},"RequisitionCreateRequest":{"properties":{"title":{"type":"string","maxLength":200,"minLength":1,"title":"Title","description":"Name of the requisition itself, e.g. 'Backend Engineer II — LatAm'."},"requester_name":{"type":"string","maxLength":120,"minLength":1,"title":"Requester Name"},"requester_email":{"type":"string","format":"email","title":"Requester Email"},"position":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Position"},"position_code":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Position Code"},"location":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Location"},"secondary_location":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Secondary Location"},"job_function":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Job Function"},"replacement_for":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Replacement For","description":"Who is being replaced. Only meaningful for a replacement."},"hub_location_type":{"anyOf":[{"type":"string","enum":["hub_location","hybrid_exception","outside_hub"]},{"type":"null"}],"title":"Hub Location Type"},"hiring_prioritization":{"anyOf":[{"type":"string","maxLength":20,"minLength":1,"description":"Company-specific hiring prioritization. The default values are critical, high, medium and low; dLocal uses Exception, Internal Movement, Savings, Involuntary Leaver and Prioritized."},{"type":"null"}],"title":"Hiring Prioritization"},"seniority":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seniority","description":"Name or UUID."},"modality":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Modality","description":"Name or UUID."},"job_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Type","description":"Name or UUID."},"department_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department Id"},"hiring_manager_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hiring Manager Id","description":"Recruiter UUID, or the hiring manager's email. An email that belongs to an active member resolves to that recruiter; any other email is stored as hiring_manager_email."},"hiring_manager_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hiring Manager Email","description":"Explicit alternative to passing an email in hiring_manager_id. Sending both is rejected."},"custom_fields":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Custom Fields","description":"Values for the company's own requisition fields, keyed by the definition identifier. Unknown keys are rejected, and a select value must be one of its declared options. Sending a subset leaves the other values untouched."},"recruiter_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recruiter Id"},"min_salary":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Salary"},"mid_salary":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Mid Salary"},"max_salary":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Salary"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency","description":"Name or UUID."},"payment_frequency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Frequency","description":"Name or UUID."},"headcount":{"type":"integer","maximum":999.0,"minimum":1.0,"title":"Headcount","default":1},"headcount_infinite":{"type":"boolean","title":"Headcount Infinite","description":"Evergreen requisition: hires are counted but it never fills and never closes itself.","default":false},"team":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Team"},"confidentiality":{"type":"string","enum":["non_confidential","confidential"],"title":"Confidentiality","default":"non_confidential"},"vacancy_type":{"anyOf":[{"type":"string","enum":["replacement","new_headcount"]},{"type":"null"}],"title":"Vacancy Type"},"target_start_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Target Start Date"},"time_to_fill_start":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Time To Fill Start"},"time_to_fill_end":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Time To Fill End"},"description":{"anyOf":[{"type":"string","maxLength":20000},{"type":"null"}],"title":"Description"},"notes":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Notes"},"requisition_code":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Requisition Code"}},"additionalProperties":false,"type":"object","required":["title","requester_name","requester_email"],"title":"RequisitionCreateRequest","description":"A new hiring requisition.\n\nIt starts as a draft and is given a company-unique ``requisition_code``.\nApproving it is what creates the job offer; hires on that offer draw down\n``headcount`` and the requisition closes itself once filled."},"RequisitionFieldDefinitionResponse":{"properties":{"id":{"type":"string","title":"Id"},"identifier":{"type":"string","title":"Identifier"},"label":{"type":"string","title":"Label"},"field_type":{"type":"string","enum":["text","textarea","number","date","boolean","select","multi_select","currency"],"title":"Field Type"},"is_required":{"type":"boolean","title":"Is Required"},"options":{"items":{"type":"string"},"type":"array","title":"Options","default":[]},"display_order":{"type":"integer","title":"Display Order","default":0}},"type":"object","required":["id","identifier","label","field_type","is_required"],"title":"RequisitionFieldDefinitionResponse","description":"One of a company's own requisition fields.\n\n``identifier`` is the key to use inside ``custom_fields``; ``options`` is\nthe closed set a ``select`` or ``multi_select`` value must come from."},"RequisitionHoldRequest":{"properties":{"reason":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Reason"}},"additionalProperties":false,"type":"object","title":"RequisitionHoldRequest","description":"Why a requisition is being paused without closing it."},"RequisitionRejectRequest":{"properties":{"reason":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Reason"}},"additionalProperties":false,"type":"object","title":"RequisitionRejectRequest","description":"Why a requisition was turned down. Recorded on it as the reason."},"RequisitionResponse":{"properties":{"id":{"type":"string","title":"Id"},"status":{"type":"string","enum":["draft","submitted","approved","rejected","closed","on_hold"],"title":"Status"},"requisition_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requisition Code"},"confidentiality":{"type":"string","enum":["non_confidential","confidential"],"title":"Confidentiality","default":"non_confidential"},"recruiter_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recruiter Id"},"recruiter_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recruiter Name"},"requester_name":{"type":"string","title":"Requester Name"},"requester_email":{"type":"string","title":"Requester Email"},"hiring_manager_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hiring Manager Id"},"hiring_manager_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hiring Manager Email"},"hiring_manager_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hiring Manager Name"},"title":{"type":"string","title":"Title"},"position":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Position"},"position_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Position Code"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location"},"secondary_location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Secondary Location"},"job_function":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Function"},"replacement_for":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Replacement For"},"custom_fields":{"additionalProperties":true,"type":"object","title":"Custom Fields","default":{}},"hub_location_type":{"anyOf":[{"type":"string","enum":["hub_location","hybrid_exception","outside_hub"]},{"type":"null"}],"title":"Hub Location Type"},"hiring_prioritization":{"anyOf":[{"type":"string","maxLength":20,"minLength":1,"description":"Company-specific hiring prioritization. The default values are critical, high, medium and low; dLocal uses Exception, Internal Movement, Savings, Involuntary Leaver and Prioritized."},{"type":"null"}],"title":"Hiring Prioritization"},"seniority_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seniority Id"},"seniority_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seniority Name"},"modality_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Modality Id"},"modality_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Modality Name"},"job_type_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Type Id"},"job_type_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Type Name"},"department_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department Id"},"department_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department Name"},"team":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team"},"min_salary":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Salary"},"mid_salary":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Mid Salary"},"max_salary":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Salary"},"currency_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency Id"},"currency_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency Name"},"payment_frequency_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Frequency Id"},"payment_frequency_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Frequency Name"},"headcount":{"type":"integer","title":"Headcount"},"headcount_hired":{"type":"integer","title":"Headcount Hired","default":0},"headcount_infinite":{"type":"boolean","title":"Headcount Infinite","default":false},"headcount_remaining":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Headcount Remaining"},"vacancy_type":{"anyOf":[{"type":"string","enum":["replacement","new_headcount"]},{"type":"null"}],"title":"Vacancy Type"},"target_start_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Target Start Date"},"time_to_fill_start":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Time To Fill Start"},"time_to_fill_end":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Time To Fill End"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"rejection_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rejection Reason"},"job_offer_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Offer Id"},"postings":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Postings","default":[]},"approved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Approved At"},"rejected_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Rejected At"},"closed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Closed At"},"on_hold_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"On Hold At"},"filled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Filled At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","status","requester_name","requester_email","title","headcount","created_at","updated_at"],"title":"RequisitionResponse","description":"A hiring requisition with resolved catalog labels."},"RequisitionUpdateRequest":{"properties":{"title":{"anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"Title"},"requester_name":{"anyOf":[{"type":"string","maxLength":120,"minLength":1},{"type":"null"}],"title":"Requester Name"},"requester_email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Requester Email"},"position":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Position"},"position_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Position Code"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location"},"secondary_location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Secondary Location"},"job_function":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Function"},"replacement_for":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Replacement For"},"hub_location_type":{"anyOf":[{"type":"string","enum":["hub_location","hybrid_exception","outside_hub"]},{"type":"null"}],"title":"Hub Location Type"},"hiring_prioritization":{"anyOf":[{"type":"string","maxLength":20,"minLength":1,"description":"Company-specific hiring prioritization. The default values are critical, high, medium and low; dLocal uses Exception, Internal Movement, Savings, Involuntary Leaver and Prioritized."},{"type":"null"}],"title":"Hiring Prioritization"},"seniority":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seniority"},"modality":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Modality"},"job_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Type"},"department_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department Id"},"hiring_manager_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hiring Manager Id","description":"Recruiter UUID, or the hiring manager's email. Either key rewrites both, so sending one clears the other."},"hiring_manager_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hiring Manager Email"},"custom_fields":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Custom Fields","description":"Values for the company's own requisition fields, keyed by the definition identifier. Unknown keys are rejected, and a select value must be one of its declared options. Sending a subset leaves the other values untouched."},"recruiter_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recruiter Id"},"min_salary":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Salary"},"mid_salary":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Mid Salary"},"max_salary":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Salary"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"},"payment_frequency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Frequency"},"headcount":{"anyOf":[{"type":"integer","maximum":999.0,"minimum":1.0},{"type":"null"}],"title":"Headcount"},"headcount_infinite":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Headcount Infinite"},"team":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team"},"confidentiality":{"anyOf":[{"type":"string","enum":["non_confidential","confidential"]},{"type":"null"}],"title":"Confidentiality"},"vacancy_type":{"anyOf":[{"type":"string","enum":["replacement","new_headcount"]},{"type":"null"}],"title":"Vacancy Type"},"target_start_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Target Start Date"},"time_to_fill_start":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Time To Fill Start"},"time_to_fill_end":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Time To Fill End"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"requisition_code":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Requisition Code"}},"additionalProperties":false,"type":"object","title":"RequisitionUpdateRequest","description":"Partial public update for a draft or submitted requisition."},"StageFeedbackBundle":{"properties":{"stage_id":{"type":"string","format":"uuid","title":"Stage Id"},"stage_name":{"type":"string","title":"Stage Name","default":""},"stage_order":{"type":"integer","title":"Stage Order","default":0},"competencies":{"items":{"$ref":"#/components/schemas/CompetencyResponse"},"type":"array","title":"Competencies"},"feedback":{"items":{"$ref":"#/components/schemas/FeedbackResponse"},"type":"array","title":"Feedback"},"questions":{"items":{"$ref":"#/components/schemas/StageQuestionResponse"},"type":"array","title":"Questions"}},"type":"object","required":["stage_id"],"title":"StageFeedbackBundle","description":"One stage's column in the applicant feedback bundle."},"StageQuestionResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"stage_id":{"type":"string","format":"uuid","title":"Stage Id"},"question":{"type":"string","title":"Question","default":""},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"sort_order":{"type":"integer","title":"Sort Order","default":0}},"type":"object","required":["id","stage_id"],"title":"StageQuestionResponse","description":"A shared interview question defined on a pipeline stage."},"StageResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"flow_id":{"type":"string","format":"uuid","title":"Flow Id"},"name":{"type":"string","title":"Name","default":""},"stage_order":{"type":"integer","title":"Stage Order","default":0},"action_type":{"type":"string","title":"Action Type","default":""},"action_details":{"title":"Action Details"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","flow_id"],"title":"StageResponse","description":"One stage of a job offer's pipeline flow."},"TagCandidateResponse":{"properties":{"id":{"type":"string","title":"Id"},"source":{"type":"string","title":"Source","default":"platform"},"full_name":{"type":"string","title":"Full Name","default":""},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"skills":{"items":{"type":"string"},"type":"array","title":"Skills"},"linkedin_profile_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Profile Id"},"github_login":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Github Login"},"profile_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Url"}},"type":"object","required":["id"],"title":"TagCandidateResponse","description":"One candidate sitting in a CRM tag.\n\nA tag mixes three kinds of rows, told apart by ``source``: Nodi\nplatform profiles, cached LinkedIn profiles and cached GitHub profiles.\n``id`` is the identifier to pass back when removing the candidate, and is\nonly a Nodi profile UUID when ``source`` is ``platform``."},"TagResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"display_name":{"type":"string","title":"Display Name","default":""},"profile_count":{"type":"integer","title":"Profile Count","default":0},"job_offer_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Job Offer Id"}},"type":"object","required":["id","name"],"title":"TagResponse","description":"A recruiter CRM tag."},"UpdateCompetencyRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"sort_order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sort Order"}},"additionalProperties":false,"type":"object","title":"UpdateCompetencyRequest","description":"Partial update of a competency."},"UpdateJobOfferRequest":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"},"min_salary":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Salary"},"max_salary":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Salary"},"currency_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Currency Id"},"payment_frequency_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Payment Frequency Id"},"job_modality_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Job Modality Id"},"job_type_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Job Type Id"},"job_seniority_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Job Seniority Id"},"status_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Status Id"},"is_location_disqualifying":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Location Disqualifying"},"is_anonymous":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Anonymous"},"disable_nodi_candidates":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Disable Nodi Candidates"},"linkedin_publish":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Linkedin Publish"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"},"payment_frequency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Frequency"},"job_modality":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Modality"},"job_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Type"},"job_seniority":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Seniority"},"department_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Department Id"}},"additionalProperties":false,"type":"object","title":"UpdateJobOfferRequest","description":"Partial update of a job offer; only provided fields change.\n\n``extra=\"forbid\"`` prevents clients from reaching columns that are not part\nof the public contract (``recruiter_id``, ``company_onboarding_id``, …)."},"UpdateQuestionRequest":{"properties":{"question":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Question"},"type_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Type Id"},"required":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Required"},"disqualifying":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Disqualifying"},"disqualifying_criteria":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Disqualifying Criteria"},"conditional_rule":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Conditional Rule"},"sort_order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sort Order"},"options":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Options"}},"additionalProperties":false,"type":"object","title":"UpdateQuestionRequest","description":"Partial update of a screening question."},"UpdateStageRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"stage_order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Stage Order"},"action_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action Type"},"action_details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Action Details"}},"additionalProperties":false,"type":"object","title":"UpdateStageRequest","description":"Partial update of a stage."},"UploadCompanyImageResponse":{"properties":{"company_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Image Url"}},"type":"object","title":"UploadCompanyImageResponse","description":"Signed URL of a newly uploaded company image."},"UpsertFeedbackRequest":{"properties":{"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"overall_score":{"anyOf":[{"type":"integer","maximum":4.0,"minimum":1.0},{"type":"null"}],"title":"Overall Score"},"advance_decision":{"anyOf":[{"type":"string","enum":["yes","no"]},{"type":"null"}],"title":"Advance Decision"},"salary_expectation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Salary Expectation"},"scores":{"items":{"$ref":"#/components/schemas/FeedbackScoreInput"},"type":"array","title":"Scores"},"answers":{"anyOf":[{"items":{"$ref":"#/components/schemas/FeedbackAnswerInput"},"type":"array"},{"type":"null"}],"title":"Answers"},"submit":{"type":"boolean","title":"Submit","default":false}},"additionalProperties":false,"type":"object","title":"UpsertFeedbackRequest","description":"Upsert the caller's feedback for an applicant at one stage.\n\n``scores`` is the complete set: competencies absent from the list are\nremoved. ``submit`` stamps ``submitted_at``. ``answers`` replaces the\ncaller's stage-question replies when provided; omit the field to leave\nexisting answers untouched."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"BearerAuth":{"type":"apiKey","name":"Authorization","in":"header","description":"Type \"Bearer \" followed by the API access token. Example: \"Bearer nodi_pat_...\""}}},"security":[{"BearerAuth":[]}]}