{"openapi":"3.0.0","info":{"title":"Connectex API","version":"1.0.0","description":"API for Connectex job postings, contact forms, and applications."},"servers":[{"url":"http://localhost:3000"}],"paths":{"/api/jobs":{"get":{"tags":["Jobs"],"summary":"List published jobs","parameters":[{"name":"all","in":"query","description":"Include unpublished jobs","schema":{"type":"boolean"}}],"responses":{"200":{"description":"List of jobs","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"jobs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"title":{"type":"string"},"department":{"type":"string"},"location":{"type":"string"},"employmentType":{"type":"string"},"experienceLevel":{"type":"string"},"description":{"type":"string"},"responsibilities":{"type":"array","items":{"type":"string"}},"requirements":{"type":"array","items":{"type":"string"}},"salaryRange":{"type":"string"},"published":{"type":"boolean"}}}}}}}}}}},"post":{"tags":["Jobs"],"summary":"Create a job posting","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["title","department","location","employmentType","experienceLevel","description","salaryRange"],"properties":{"title":{"type":"string"},"department":{"type":"string"},"location":{"type":"string"},"employmentType":{"type":"string"},"experienceLevel":{"type":"string"},"description":{"type":"string"},"responsibilities":{"type":"array","items":{"type":"string"}},"requirements":{"type":"array","items":{"type":"string"}},"salaryRange":{"type":"string"},"published":{"type":"boolean"}}}}}},"responses":{"201":{"description":"Job created","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"id":{"type":"number"}}}}}}}}},"/api/jobs/{id}":{"get":{"tags":["Jobs"],"summary":"Get a job by ID","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"number"}}],"responses":{"200":{"description":"Job details"},"404":{"description":"Not found"}}},"put":{"tags":["Jobs"],"summary":"Update a job","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["title","department","location","employmentType","experienceLevel","description","salaryRange"],"properties":{"title":{"type":"string"},"department":{"type":"string"},"location":{"type":"string"},"employmentType":{"type":"string"},"experienceLevel":{"type":"string"},"description":{"type":"string"},"responsibilities":{"type":"array","items":{"type":"string"}},"requirements":{"type":"array","items":{"type":"string"}},"salaryRange":{"type":"string"},"published":{"type":"boolean"}}}}}},"responses":{"200":{"description":"Updated job"},"404":{"description":"Not found"}}},"delete":{"tags":["Jobs"],"summary":"Delete a job","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"number"}}],"responses":{"200":{"description":"Deleted"},"404":{"description":"Not found"}}},"patch":{"tags":["Jobs"],"summary":"Publish a job","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"number"}}],"responses":{"200":{"description":"Published"},"404":{"description":"Not found"}}}},"/api/jobs/{id}/apply":{"post":{"tags":["Applications"],"summary":"Submit a job application","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"fullName":{"type":"string"},"email":{"type":"string"},"phone":{"type":"string"},"linkedinUrl":{"type":"string"},"portfolioUrl":{"type":"string"},"coverLetter":{"type":"string"},"resumeFile":{"type":"string","format":"binary"}}}}}},"responses":{"201":{"description":"Application submitted"},"400":{"description":"Bad request"},"404":{"description":"Job not found"}}}}}}