{"openapi":"3.1.0","info":{"title":"PilotBoard API","version":"1","description":"REST API of PilotBoard. API keys (x-api-key) and MCP need a paid plan (402 plan_required otherwise). Key-authenticated calls (REST and MCP together) are limited per user per minute (429 rate_limited with Retry-After). MCP endpoint: <origin>/api/mcp (streamable HTTP, same API key as x-api-key or Authorization: Bearer)."},"servers":[{"url":"https://freeboard-rosy.vercel.app/api/v1"}],"security":[{"apiKey":[]},{"session":[]}],"tags":[{"name":"Account"},{"name":"Applications"},{"name":"Interviews"},{"name":"Notes"},{"name":"Tasks"},{"name":"Contacts"},{"name":"Follow-ups"},{"name":"Dashboard"},{"name":"Settings"},{"name":"Profile"},{"name":"Job imports"},{"name":"Fit"},{"name":"Documents"},{"name":"Billing"}],"paths":{"/me":{"get":{"tags":["Account"],"summary":"Current user, how you authenticated, and your plan","operationId":"getMe","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Me"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/ai/status":{"get":{"tags":["Account"],"summary":"Which AI features this server and your plan have","operationId":"getAiStatus","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/applications":{"get":{"tags":["Applications"],"summary":"List applications, newest first","operationId":"getApplications","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["SAVED","APPLIED","SCREENING","TECHNICAL_INTERVIEW","TAKE_HOME","FINAL_INTERVIEW","OFFER","REJECTED","WITHDRAWN"]}},{"name":"archived","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"default":25,"type":"integer","minimum":1,"maximum":100}},{"name":"offset","in":"query","required":false,"schema":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}},"post":{"tags":["Applications"],"summary":"Create an application","operationId":"postApplications","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"company":{"type":"string","minLength":1,"maxLength":100},"roleTitle":{"type":"string","minLength":1,"maxLength":100},"location":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"workMode":{"anyOf":[{"type":"string","enum":["REMOTE","HYBRID","ONSITE"]},{"type":"null"}]},"jobUrl":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"jobDescription":{"anyOf":[{"type":"string","maxLength":50000},{"type":"null"}]},"status":{"type":"string","enum":["SAVED","APPLIED","SCREENING","TECHNICAL_INTERVIEW","TAKE_HOME","FINAL_INTERVIEW","OFFER","REJECTED","WITHDRAWN"]},"priority":{"type":"string","enum":["LOW","MEDIUM","HIGH"]},"salaryMin":{"anyOf":[{"type":"integer","minimum":0,"maximum":100000000},{"type":"null"}]},"salaryMax":{"anyOf":[{"type":"integer","minimum":0,"maximum":100000000},{"type":"null"}]},"salaryCurrency":{"anyOf":[{"type":"string","pattern":"^[A-Z]{3}$"},{"type":"null"}]},"source":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"nextStep":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"notesSummary":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"appliedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"primaryContactName":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"initialNotes":{"anyOf":[{"type":"string","maxLength":5000},{"type":"null"}]}},"required":["company","roleTitle"],"additionalProperties":false}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/applications/duplicates":{"get":{"tags":["Applications"],"summary":"Find possible duplicates by job URL or company + role","operationId":"getApplicationsDuplicates","parameters":[{"name":"company","in":"query","required":false,"schema":{"type":"string","maxLength":100}},{"name":"roleTitle","in":"query","required":false,"schema":{"type":"string","maxLength":100}},{"name":"jobUrl","in":"query","required":false,"schema":{"type":"string","maxLength":2000}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/applications/{id}":{"get":{"tags":["Applications"],"summary":"One application with its summary and extraction method","operationId":"getApplicationsById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}},"patch":{"tags":["Applications"],"summary":"Change an application (archive/restore with archived)","operationId":"patchApplicationsById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"company":{"type":"string","minLength":1,"maxLength":100},"roleTitle":{"type":"string","minLength":1,"maxLength":100},"location":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"workMode":{"anyOf":[{"type":"string","enum":["REMOTE","HYBRID","ONSITE"]},{"type":"null"}]},"jobUrl":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"jobDescription":{"anyOf":[{"type":"string","maxLength":50000},{"type":"null"}]},"status":{"type":"string","enum":["SAVED","APPLIED","SCREENING","TECHNICAL_INTERVIEW","TAKE_HOME","FINAL_INTERVIEW","OFFER","REJECTED","WITHDRAWN"]},"priority":{"type":"string","enum":["LOW","MEDIUM","HIGH"]},"salaryMin":{"anyOf":[{"type":"integer","minimum":0,"maximum":100000000},{"type":"null"}]},"salaryMax":{"anyOf":[{"type":"integer","minimum":0,"maximum":100000000},{"type":"null"}]},"salaryCurrency":{"anyOf":[{"type":"string","pattern":"^[A-Z]{3}$"},{"type":"null"}]},"source":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"nextStep":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"notesSummary":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"appliedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"archived":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}},"delete":{"tags":["Applications"],"summary":"Delete an application","operationId":"deleteApplicationsById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"No content"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/applications/{id}/duplicate":{"post":{"tags":["Applications"],"summary":"Copy an application","operationId":"postApplicationsByIdDuplicate","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/applications/{id}/interviews":{"get":{"tags":["Interviews"],"summary":"Interviews of an application","operationId":"getApplicationsByIdInterviews","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}},"post":{"tags":["Interviews"],"summary":"Add an interview","operationId":"postApplicationsByIdInterviews","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["RECRUITER","TECHNICAL","BEHAVIORAL","MANAGER","PANEL","TAKE_HOME_REVIEW","FINAL","OTHER"]},"stageName":{"type":"string","minLength":1,"maxLength":100},"scheduledAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"durationMinutes":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":1440},{"type":"null"}]},"interviewerName":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"interviewerRole":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"locationOrLink":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}]},"outcome":{"anyOf":[{"type":"string","enum":["PENDING","PASSED","FAILED","CANCELLED"]},{"type":"null"}]},"notes":{"anyOf":[{"type":"string","maxLength":5000},{"type":"null"}]}},"required":["type","stageName"],"additionalProperties":false}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/interviews/{id}":{"patch":{"tags":["Interviews"],"summary":"Change an interview","operationId":"patchInterviewsById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["RECRUITER","TECHNICAL","BEHAVIORAL","MANAGER","PANEL","TAKE_HOME_REVIEW","FINAL","OTHER"]},"stageName":{"type":"string","minLength":1,"maxLength":100},"scheduledAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"durationMinutes":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":1440},{"type":"null"}]},"interviewerName":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"interviewerRole":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"locationOrLink":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}]},"outcome":{"anyOf":[{"type":"string","enum":["PENDING","PASSED","FAILED","CANCELLED"]},{"type":"null"}]},"notes":{"anyOf":[{"type":"string","maxLength":5000},{"type":"null"}]}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}},"delete":{"tags":["Interviews"],"summary":"Delete an interview","operationId":"deleteInterviewsById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"No content"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/applications/{id}/notes":{"get":{"tags":["Notes"],"summary":"Notes of an application","operationId":"getApplicationsByIdNotes","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}},"post":{"tags":["Notes"],"summary":"Add a note","operationId":"postApplicationsByIdNotes","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"content":{"type":"string","minLength":1,"maxLength":5000},"assessmentDelivered":{"type":"boolean"}},"required":["content"],"additionalProperties":false}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/notes/{id}":{"get":{"tags":["Notes"],"summary":"One note","operationId":"getNotesById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}},"patch":{"tags":["Notes"],"summary":"Change a note","operationId":"patchNotesById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"content":{"type":"string","minLength":1,"maxLength":5000},"assessmentDelivered":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}},"delete":{"tags":["Notes"],"summary":"Delete a note","operationId":"deleteNotesById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"No content"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/tasks":{"get":{"tags":["Tasks"],"summary":"List tasks","operationId":"getTasks","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"status","in":"query","required":false,"schema":{"default":"open","type":"string","enum":["open","completed","all"]}},{"name":"applicationId","in":"query","required":false,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"limit","in":"query","required":false,"schema":{"default":25,"type":"integer","minimum":1,"maximum":100}},{"name":"offset","in":"query","required":false,"schema":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}},"post":{"tags":["Tasks"],"summary":"Create a task","operationId":"postTasks","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":150},"description":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"dueAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"applicationId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["title"],"additionalProperties":false}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/tasks/{id}":{"get":{"tags":["Tasks"],"summary":"One task","operationId":"getTasksById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}},"patch":{"tags":["Tasks"],"summary":"Change a task (complete with completed)","operationId":"patchTasksById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":150},"description":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"dueAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"applicationId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"completed":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}},"delete":{"tags":["Tasks"],"summary":"Delete a task","operationId":"deleteTasksById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"No content"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/tasks/{id}/duplicate":{"post":{"tags":["Tasks"],"summary":"Copy a task","operationId":"postTasksByIdDuplicate","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/contacts":{"get":{"tags":["Contacts"],"summary":"List contacts","operationId":"getContacts","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"limit","in":"query","required":false,"schema":{"default":25,"type":"integer","minimum":1,"maximum":100}},{"name":"offset","in":"query","required":false,"schema":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}},"post":{"tags":["Contacts"],"summary":"Create a contact","operationId":"postContacts","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"fullName":{"type":"string","minLength":1,"maxLength":100},"email":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}]},"phone":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}]},"linkedinUrl":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}]},"company":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"jobTitle":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"notes":{"anyOf":[{"type":"string","maxLength":5000},{"type":"null"}]}},"required":["fullName"],"additionalProperties":false}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/contacts/{id}":{"get":{"tags":["Contacts"],"summary":"One contact with follow-up count and links","operationId":"getContactsById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}},"patch":{"tags":["Contacts"],"summary":"Change a contact","operationId":"patchContactsById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"fullName":{"type":"string","minLength":1,"maxLength":100},"email":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}]},"phone":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}]},"linkedinUrl":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}]},"company":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"jobTitle":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"notes":{"anyOf":[{"type":"string","maxLength":5000},{"type":"null"}]}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}},"delete":{"tags":["Contacts"],"summary":"Delete a contact (unlinks its follow-ups)","operationId":"deleteContactsById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/contacts/{id}/duplicate":{"post":{"tags":["Contacts"],"summary":"Copy a contact","operationId":"postContactsByIdDuplicate","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/applications/{id}/contacts":{"get":{"tags":["Contacts"],"summary":"Contacts linked to an application","operationId":"getApplicationsByIdContacts","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}},"post":{"tags":["Contacts"],"summary":"Link a contact to an application in a role","operationId":"postApplicationsByIdContacts","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"contactId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"role":{"type":"string","enum":["RECRUITER","HIRING_MANAGER","INTERVIEWER","REFERRAL","COORDINATOR","OTHER"]}},"required":["contactId"],"additionalProperties":false},{"type":"object","properties":{"contact":{"type":"object","properties":{"fullName":{"type":"string","minLength":1,"maxLength":100},"email":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}]},"phone":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}]},"linkedinUrl":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}]},"company":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"jobTitle":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"notes":{"anyOf":[{"type":"string","maxLength":5000},{"type":"null"}]}},"required":["fullName"],"additionalProperties":false},"role":{"type":"string","enum":["RECRUITER","HIRING_MANAGER","INTERVIEWER","REFERRAL","COORDINATOR","OTHER"]}},"required":["contact"],"additionalProperties":false}]}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/application-contacts/{id}":{"patch":{"tags":["Contacts"],"summary":"Change a contact link","operationId":"patchApplicationContactsById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"type":"string","enum":["RECRUITER","HIRING_MANAGER","INTERVIEWER","REFERRAL","COORDINATOR","OTHER"]}},"required":["role"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}},"delete":{"tags":["Contacts"],"summary":"Remove a contact link","operationId":"deleteApplicationContactsById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"No content"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/follow-ups":{"get":{"tags":["Follow-ups"],"summary":"List follow-ups","operationId":"getFollowUps","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"status","in":"query","required":false,"schema":{"default":"PLANNED","type":"string","enum":["PLANNED","DONE","MISSED","archived","all"]}},{"name":"contactId","in":"query","required":false,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"applicationId","in":"query","required":false,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"limit","in":"query","required":false,"schema":{"default":25,"type":"integer","minimum":1,"maximum":100}},{"name":"offset","in":"query","required":false,"schema":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}},"post":{"tags":["Follow-ups"],"summary":"Create a follow-up","operationId":"postFollowUps","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":150},"description":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]},"notes":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"scheduledAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"status":{"type":"string","enum":["PLANNED","DONE","MISSED"]},"contactId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"applicationId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["title"],"additionalProperties":false}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/follow-ups/{id}":{"get":{"tags":["Follow-ups"],"summary":"One follow-up","operationId":"getFollowUpsById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}},"patch":{"tags":["Follow-ups"],"summary":"Change a follow-up (status DONE/MISSED archives it)","operationId":"patchFollowUpsById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":150},"description":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]},"notes":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"scheduledAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"status":{"type":"string","enum":["PLANNED","DONE","MISSED"]},"contactId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"applicationId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}},"delete":{"tags":["Follow-ups"],"summary":"Delete a follow-up","operationId":"deleteFollowUpsById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"No content"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/follow-ups/{id}/duplicate":{"post":{"tags":["Follow-ups"],"summary":"Copy a follow-up","operationId":"postFollowUpsByIdDuplicate","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/dashboard/summary":{"get":{"tags":["Dashboard"],"summary":"Stats, open and overdue work, needs attention","operationId":"getDashboardSummary","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/activity":{"get":{"tags":["Dashboard"],"summary":"Recent activity, newest first","operationId":"getActivity","parameters":[{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["applications","tasks","followUps","interviews","notes","contacts"]}},{"name":"applicationId","in":"query","required":false,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"limit","in":"query","required":false,"schema":{"default":12,"type":"integer","minimum":1,"maximum":50}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/preferences":{"get":{"tags":["Settings"],"summary":"Dashboard and model preferences","operationId":"getPreferences","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}},"patch":{"tags":["Settings"],"summary":"Change preferences","operationId":"patchPreferences","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"hiddenDashboardSections":{"maxItems":12,"type":"array","items":{"type":"string","enum":["utilities","applications","tasks","followUps","contacts","timeline"]}},"aiModelPreset":{"type":"string","enum":["BALANCED","QUALITY","ECONOMY"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/settings/anthropic-key":{"put":{"tags":["Settings"],"summary":"Save your own Anthropic API key (validated, sealed)","operationId":"putSettingsAnthropicKey","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"apiKey":{"type":"string","minLength":20,"maxLength":300,"pattern":"^[\\x21-\\x7e]+$"}},"required":["apiKey"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}},"delete":{"tags":["Settings"],"summary":"Remove your Anthropic API key","operationId":"deleteSettingsAnthropicKey","responses":{"204":{"description":"No content"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/profile":{"get":{"tags":["Profile"],"summary":"Master resume and job preferences","operationId":"getProfile","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/profile/preferences":{"patch":{"tags":["Profile"],"summary":"Change job preferences and weights","operationId":"patchProfilePreferences","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"workModes":{"type":"array","items":{"type":"string","enum":["REMOTE","HYBRID","ONSITE"]}},"locations":{"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"needsVisaSponsorship":{"type":"boolean"},"hasSecurityClearance":{"type":"boolean"},"citizenships":{"type":"array","items":{"type":"string","minLength":1,"maxLength":60}},"salaryFloor":{"anyOf":[{"type":"object","properties":{"amount":{"type":"integer","minimum":0,"maximum":100000000},"currency":{"type":"string","pattern":"^[A-Z]{3}$"}},"required":["amount","currency"],"additionalProperties":false},{"type":"null"}]},"seniority":{"anyOf":[{"type":"string","enum":["JUNIOR","MID","SENIOR","STAFF","PRINCIPAL"]},{"type":"null"}]},"roleTypes":{"type":"array","items":{"type":"string","enum":["FRONTEND","BACKEND","FULLSTACK","INFRA","ML"]}},"stack":{"type":"array","items":{"type":"string","minLength":1,"maxLength":50}},"domains":{"type":"array","items":{"type":"string","minLength":1,"maxLength":60}},"weights":{"type":"object","properties":{"stack":{"type":"integer","minimum":0,"maximum":10},"seniority":{"type":"integer","minimum":0,"maximum":10},"roleType":{"type":"integer","minimum":0,"maximum":10},"domain":{"type":"integer","minimum":0,"maximum":10}},"required":["stack","seniority","roleType","domain"],"additionalProperties":false}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/profile/resume":{"put":{"tags":["Profile"],"summary":"Replace the master resume","operationId":"putProfileResume","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"headline":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"contact":{"type":"object","properties":{"email":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}]},"phone":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}]},"location":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"links":{"type":"array","items":{"type":"string","minLength":1,"maxLength":300,"pattern":"^\\S*$"}}},"additionalProperties":false},"sections":{"minItems":1,"maxItems":30,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^s_[a-z0-9]{8}$"},"kind":{"type":"string","enum":["summary","experience","projects","education","skills","other"]},"title":{"type":"string","minLength":1,"maxLength":120},"subtitle":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"bullets":{"maxItems":60,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^b_[a-z0-9]{8}$"},"text":{"type":"string","minLength":1,"maxLength":500}},"required":["text"],"additionalProperties":false}}},"required":["kind","title","bullets"],"additionalProperties":false}}},"required":["sections"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}},"delete":{"tags":["Profile"],"summary":"Delete the master resume","operationId":"deleteProfileResume","responses":{"204":{"description":"No content"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/profile/resume/draft":{"post":{"tags":["Profile"],"summary":"Structure a resume with Claude (Unverified AI draft; nothing stored)","operationId":"postProfileResumeDraft","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["text"],"properties":{"text":{"type":"string","minLength":1,"maxLength":30000}},"additionalProperties":false}},"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"type":"string","format":"binary","description":"A PDF or DOCX resume"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/profile/resume/pdf":{"get":{"tags":["Profile"],"summary":"Master resume as an ATS PDF","operationId":"getProfileResumePdf","parameters":[{"name":"paper","in":"query","required":false,"schema":{"default":"a4","type":"string","enum":["a4","letter"]}}],"responses":{"200":{"description":"OK","content":{"application/pdf":{"schema":{"type":"string","format":"binary"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/job-imports":{"post":{"tags":["Job imports"],"summary":"Import a job from its link or pasted text (runs in the background)","operationId":"postJobImports","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","maxLength":2000,"format":"uri"},"text":{"type":"string"}},"additionalProperties":false}}}},"responses":{"202":{"description":"Accepted: poll GET /job-imports/{id}","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/job-imports/batch":{"post":{"tags":["Job imports"],"summary":"Import up to 20 jobs at once (links or pasted text); one result per item, refused items never block the rest","operationId":"postJobImportsBatch","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"items":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"text":{"type":"string"}},"additionalProperties":false}}},"required":["items"],"additionalProperties":false}}}},"responses":{"202":{"description":"Accepted: poll GET /job-imports/{id}","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/job-imports/{id}":{"get":{"tags":["Job imports"],"summary":"One import: status, what it waits for, the application it created","operationId":"getJobImportsById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/job-imports/{id}/text":{"post":{"tags":["Job imports"],"summary":"Paste the posting for an import waiting on TEXT","operationId":"postJobImportsByIdText","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string"}},"required":["text"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/job-imports/{id}/confirm":{"post":{"tags":["Job imports"],"summary":"Confirm the basic draft of an import waiting on CONFIRM","operationId":"postJobImportsByIdConfirm","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"company":{"type":"string","minLength":1,"maxLength":100},"roleTitle":{"type":"string","minLength":1,"maxLength":100},"location":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"workMode":{"anyOf":[{"type":"string","enum":["REMOTE","HYBRID","ONSITE"]},{"type":"null"}]},"salaryMin":{"anyOf":[{"type":"integer","minimum":0,"maximum":100000000},{"type":"null"}]},"salaryMax":{"anyOf":[{"type":"integer","minimum":0,"maximum":100000000},{"type":"null"}]},"salaryCurrency":{"anyOf":[{"type":"string","pattern":"^[A-Z]{3}$"},{"type":"null"}]}},"required":["company","roleTitle"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/job-imports/{id}/decision":{"post":{"tags":["Job imports"],"summary":"Continue or skip an import waiting on DUPLICATE or FIT_DECISION","operationId":"postJobImportsByIdDecision","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"action":{"type":"string","enum":["continue","skip"]}},"required":["action"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/job-imports/{id}/retry":{"post":{"tags":["Job imports"],"summary":"Retry a failed or stalled import","operationId":"postJobImportsByIdRetry","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/job-imports/{id}/brief":{"get":{"tags":["Job imports"],"summary":"What to extract, for your own model, from an import waiting on TEXT or CONFIRM","operationId":"getJobImportsByIdBrief","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/job-imports/{id}/submit":{"post":{"tags":["Job imports"],"summary":"Send the fields your own model extracted (marked Extracted by AI)","operationId":"postJobImportsByIdSubmit","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"company":{"type":"string","maxLength":1000},"roleTitle":{"type":"string","maxLength":1000},"jobDescription":{"type":"string","maxLength":60000},"location":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}]},"workMode":{"anyOf":[{"type":"string","enum":["REMOTE","HYBRID","ONSITE"]},{"type":"null"}]},"salaryMin":{"type":["number","null"]},"salaryMax":{"type":["number","null"]},"salaryCurrency":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}]}},"required":["company","roleTitle","jobDescription"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/applications/{id}/fit":{"get":{"tags":["Fit"],"summary":"The stored Jev fit check","operationId":"getApplicationsByIdFit","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}},"post":{"tags":["Fit"],"summary":"Run the Jev fit check","operationId":"postApplicationsByIdFit","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"x-paid-feature":"fitCheck","description":"Paid plans only (402 plan_required on Free).","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/applications/{id}/documents":{"get":{"tags":["Documents"],"summary":"Tailored resume, cover letter and answers of an application","operationId":"getApplicationsByIdDocuments","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/applications/{id}/tailored-resume":{"post":{"tags":["Documents"],"summary":"Tailor the master resume for this job (Claude, checked by Jev)","operationId":"postApplicationsByIdTailoredResume","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"x-paid-feature":"tailoring","description":"Paid plans only (402 plan_required on Free).","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/applications/{id}/cover-letter":{"post":{"tags":["Documents"],"summary":"Write a cover letter (Claude)","operationId":"postApplicationsByIdCoverLetter","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/applications/{id}/answers":{"post":{"tags":["Documents"],"summary":"Answer an application question (Claude)","operationId":"postApplicationsByIdAnswers","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"question":{"type":"string","minLength":1,"maxLength":1000}},"required":["question"],"additionalProperties":false}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/documents/{id}":{"get":{"tags":["Documents"],"summary":"One AI document","operationId":"getDocumentsById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}},"patch":{"tags":["Documents"],"summary":"Edit, remove, keep or add back lines; approve","operationId":"patchDocumentsById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"lines":{"minItems":1,"maxItems":60,"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","pattern":"^c_[a-z0-9]{8}$"},"text":{"type":"string","minLength":1,"maxLength":600}},"required":["id","text"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","pattern":"^c_[a-z0-9]{8}$"},"remove":{"type":"boolean","const":true}},"required":["id","remove"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","pattern":"^c_[a-z0-9]{8}$"},"keep":{"type":"boolean","const":true}},"required":["id","keep"],"additionalProperties":false},{"type":"object","properties":{"addSourceId":{"type":"string","pattern":"^b_[a-z0-9]{8}$"}},"required":["addSourceId"],"additionalProperties":false}]}},"approved":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}},"delete":{"tags":["Documents"],"summary":"Delete an AI document","operationId":"deleteDocumentsById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"No content"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/documents/{id}/verify":{"post":{"tags":["Documents"],"summary":"Re-check the document's AI lines with Jev","operationId":"postDocumentsByIdVerify","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"x-paid-feature":"verification","description":"Paid plans only (402 plan_required on Free).","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/documents/{id}/pdf":{"get":{"tags":["Documents"],"summary":"Approved tailored resume as an ATS PDF","operationId":"getDocumentsByIdPdf","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"paper","in":"query","required":false,"schema":{"default":"a4","type":"string","enum":["a4","letter"]}}],"responses":{"200":{"description":"OK","content":{"application/pdf":{"schema":{"type":"string","format":"binary"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/billing":{"get":{"tags":["Billing"],"summary":"Your plan, your subscription and whether this server takes payments","operationId":"getBilling","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PlanRequired"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/billing/checkout":{"post":{"tags":["Billing"],"summary":"Start a checkout for a paid plan (returns the payment page URL)","operationId":"postBillingCheckout","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"plan":{"type":"string","enum":["MONTHLY","QUARTERLY","ANNUAL"]}},"required":["plan"],"additionalProperties":false}}}},"security":[{"session":[]}],"description":"Session only: the signed-in website. API keys and MCP get 403 forbidden.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/SessionOnly"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}},"/billing/portal":{"post":{"tags":["Billing"],"summary":"Open the payment provider's subscription portal (returns its URL)","operationId":"postBillingPortal","security":[{"session":[]}],"description":"Session only: the signed-in website. API keys and MCP get 403 forbidden.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/SessionOnly"},"429":{"$ref":"#/components/responses/RateLimited"},"default":{"$ref":"#/components/responses/OtherError"}}}}},"components":{"securitySchemes":{"apiKey":{"type":"apiKey","in":"header","name":"x-api-key","description":"Create keys at /settings/api-keys (paid plans)."},"session":{"type":"apiKey","in":"cookie","name":"better-auth.session_token","description":"The web app's session cookie (better-auth.session_token, __Secure- prefixed on https). Writes must send a matching Origin (or Sec-Fetch-Site: same-origin)."}},"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["validation_error","unauthorized","plan_required","forbidden","not_found","conflict","invalid_reference","contact_not_linked","profile_incomplete","posting_incomplete","ai_key_invalid","ai_refused","ai_billing","rate_limited","internal_error","payload_too_large","billing_unavailable","ai_unavailable"]},"message":{"type":"string"},"issues":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}}}}}}}},"Data":{"type":"object","required":["data"],"properties":{"data":{}}},"Me":{"type":"object","required":["user","authenticatedVia","plan"],"properties":{"user":{"type":"object"},"authenticatedVia":{"type":"string","enum":["session","api-key"]},"plan":{"type":"object"}}},"Page":{"type":"object","required":["data","page"],"properties":{"data":{"type":"array","items":{}},"page":{"type":"object","properties":{"limit":{"type":"integer"},"offset":{"type":"integer"},"total":{"type":"integer"}}}}}},"responses":{"ValidationError":{"description":"validation_error: the body or query failed validation (see issues)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unauthorized":{"description":"unauthorized: no or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"PlanRequired":{"description":"plan_required: the feature or channel (x-api-key, MCP) needs a paid plan","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotFound":{"description":"not_found: missing or not yours","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"SessionOnly":{"description":"forbidden: this operation needs the signed-in website (API keys and MCP are refused)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"OtherError":{"description":"Any other error (see code)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"RateLimited":{"description":"rate_limited: too many requests (per minute for API keys and MCP, or a daily cap)","headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds until you may retry (per-minute limit)"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}