{"openapi":"3.1.0","info":{"title":"JobRipe Agent API","description":"Search honest job listings, read job and company facts, save jobs, create alerts, and (with the person's explicit confirmation) apply. Docs: https://jobripe.com/developers. Honesty rules: report pay exactly as given (estimates are labelled est.), never call a 'listed' job verified, never apply without the person's confirmation.","version":"1.0.0"},"paths":{"/api/agent/v1/jobs":{"get":{"tags":["agent"],"summary":"Search jobs","description":"Search open jobs on JobRipe by keywords and place. Returns up to 20 jobs per page with title, company, location, pay (published or labelled estimate), trust level, freshness, measured reply speed and how to apply. Report pay exactly as given: pay.published is the employer's figure; pay.estimate is an estimate (say \"est.\"); if both are null, pay is unknown. trust.level 'listed' means a public job board copy, never call it verified.","operationId":"search_jobs_api_agent_v1_jobs_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Q"}},{"name":"where","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Where"}},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2,"maxLength":2},{"type":"null"}],"title":"Country"}},{"name":"remote","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Remote"}},{"name":"workplace","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(remote|hybrid|onsite)$"},{"type":"null"}],"title":"Workplace"}},{"name":"has_salary","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Has Salary"}},{"name":"visa","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Visa"}},{"name":"no_experience","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"No Experience"}},{"name":"no_degree","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"No Degree"}},{"name":"posted_within_days","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":90,"minimum":1},{"type":"null"}],"title":"Posted Within Days"}},{"name":"company","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Company"}},{"name":"apply_on_jobripe","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Apply On Jobripe"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","maximum":10,"minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":20,"minimum":1,"default":10,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/v1/jobs/{slug}":{"get":{"tags":["agent"],"summary":"Job details","description":"Full details of one job by its slug: description, skills, screening questions, pay (published or labelled estimate), trust level with reasons and warning flags, freshness, the employer's measured reply rate, registry and recruiter checks for jobs posted here, and how to apply. Report pay exactly as given: pay.published is the employer's figure; pay.estimate is an estimate (say \"est.\"); if both are null, pay is unknown. trust.level 'listed' means a public job board copy, never call it verified.","operationId":"get_job_api_agent_v1_jobs__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/v1/companies/{slug}":{"get":{"tags":["agent"],"summary":"Company facts","description":"Facts about a company by slug: industry, size, website, open jobs, official business-register check (when done), measured reply rates, review signal (stars only with 5+ verified reviews) and open-directory facts.","operationId":"get_company_api_agent_v1_companies__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/v1/saved":{"post":{"tags":["agent"],"summary":"Save a job (scope saved:write)","description":"Save a job to the person's saved list on JobRipe. Needs an API key with the saved:write scope.","operationId":"save_job_api_agent_v1_saved_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaveIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/v1/alerts":{"post":{"tags":["agent"],"summary":"Create a job alert (scope alerts:write)","description":"Create an email job alert on the person's account for a search (keywords and/or place). Ask the person first. Needs the alerts:write scope. Limit: 20 alerts per account.","operationId":"create_alert_api_agent_v1_alerts_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/v1/applications":{"post":{"tags":["agent"],"summary":"Apply to a job on JobRipe (scope applications:write, human_confirmed required)","description":"Send the person's JobRipe profile and resume to a job that takes applications on JobRipe (apply.on_jobripe = true). ONLY call this after the person has read the job and approved the exact cover note and answers, and set human_confirmed to true. Never apply in bulk: agents may send at most a few applications per person per day. Jobs on the employer's own site can't be applied to here: give the person apply.url instead. Needs the applications:write scope.","operationId":"apply_api_agent_v1_applications_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplyIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/v1/employer/jobs":{"get":{"tags":["agent"],"summary":"Employer: my jobs (scope employer:jobs)","description":"Employers: the jobs your company posted on JobRipe, with applicant and view counts. Needs the employer:jobs scope.","operationId":"employer_jobs_api_agent_v1_employer_jobs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/agent/v1/employer/jobs/{job_id}/applicants":{"get":{"tags":["agent"],"summary":"Employer: applicants (scope employer:jobs)","description":"Employers: applicants for one of your jobs, with stage, answers, skills and headline (full resumes stay in the dashboard). blind=true hides names and emails for a fair first look. Needs the employer:jobs scope.","operationId":"employer_applicants_api_agent_v1_employer_jobs__job_id__applicants_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"integer","title":"Job Id"}},{"name":"blind","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Blind"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/v1/employer/applicants/{application_id}":{"patch":{"tags":["agent"],"summary":"Employer: move an applicant (scope employer:jobs)","description":"Employers: move an applicant to a stage (new, reviewing, shortlisted, interview, offer, rejected) and/or add a private note. The candidate's tracker is updated, so only do this when the person decided it. Needs employer:jobs.","operationId":"employer_stage_api_agent_v1_employer_applicants__application_id__patch","parameters":[{"name":"application_id","in":"path","required":true,"schema":{"type":"integer","title":"Application Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StageIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/v1/me":{"get":{"tags":["agent"],"summary":"The calling key: owner role, scopes and what is left today","operationId":"whoami_api_agent_v1_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"AlertIn":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Name"},"q":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Q"},"where":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Where"},"query":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Query"},"frequency":{"type":"string","pattern":"^(daily|weekly|instant)$","title":"Frequency","default":"daily"}},"type":"object","title":"AlertIn"},"Answer":{"properties":{"q":{"type":"string","maxLength":500,"title":"Q"},"a":{"type":"string","maxLength":2000,"title":"A"}},"type":"object","required":["q","a"],"title":"Answer"},"ApplyIn":{"properties":{"slug":{"type":"string","maxLength":260,"title":"Slug"},"cover_note":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Cover Note"},"answers":{"items":{"$ref":"#/components/schemas/Answer"},"type":"array","maxItems":12,"title":"Answers"},"human_confirmed":{"type":"boolean","title":"Human Confirmed","description":"true only after the person approved this exact application","default":false},"focused":{"type":"boolean","title":"Focused","description":"send as a focused application (needs why_this_job written and approved by the person)","default":false},"why_this_job":{"anyOf":[{"type":"string","maxLength":1200},{"type":"null"}],"title":"Why This Job"}},"type":"object","required":["slug"],"title":"ApplyIn"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"SaveIn":{"properties":{"slug":{"anyOf":[{"type":"string","maxLength":260},{"type":"null"}],"title":"Slug"},"job_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Job Id"}},"type":"object","title":"SaveIn"},"StageIn":{"properties":{"status":{"anyOf":[{"type":"string","pattern":"^(new|reviewing|shortlisted|interview|offer|rejected)$"},{"type":"null"}],"title":"Status"},"note":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Note"}},"type":"object","title":"StageIn"},"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":{"bearer":{"type":"http","scheme":"bearer","description":"An API key (jrk_...) from /developers/keys"},"apiKey":{"type":"apiKey","in":"header","name":"X-API-Key"}}},"servers":[{"url":"https://jobripe.com"}],"security":[{"bearer":[]},{"apiKey":[]},{}]}