{"openapi":"3.1.0","info":{"title":"Jonder API","version":"1.0.0","description":"REST-API für Bewerbermanagement-Systeme. Authentifizierung per API-Schlüssel (Bearer). Verfügbar im Tarif All inclusive. Ereignisse werden zusätzlich per Webhook (HMAC-SHA256, Header X-Jonder-Signature) gemeldet."},"servers":[{"url":"https://jonder.jobs/api/v1"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","bearerFormat":"jk_live_…"}},"schemas":{"Job":{"type":"object","properties":{"id":{"type":"integer"},"title":{"type":"string"},"field":{"type":"string"},"city":{"type":"string"},"mode":{"type":"string"},"salary_min":{"type":"integer","description":"Tausend € p. a."},"salary_max":{"type":"integer"},"description":{"type":"string"},"skills":{"type":"array","items":{"type":"string"}},"contract":{"type":"string"},"status":{"type":"string","enum":["open","closed"]},"url":{"type":"string","format":"uri"}}},"Thread":{"type":"object","properties":{"id":{"type":"integer"},"candidate_id":{"type":"integer"},"position":{"type":"string"},"status":{"type":"string"},"candidate_status":{"type":"string","enum":["new","accepted","declined"]},"revealed":{"type":"boolean"},"created_at":{"type":"string"},"last_activity":{"type":"string"}}},"Candidate":{"type":"object","description":"Anonym bis zur Freigabe durch den Kandidaten. Bei Equal-Rights-Unternehmen zusätzlich ohne personenbezogene Merkmale.","properties":{"id":{"type":"integer"},"field":{"type":"string"},"city":{"type":"string"},"years":{"type":"integer"},"skills":{"type":"array","items":{"type":"string"}},"name":{"type":["string","null"]},"blind":{"type":"boolean"}}},"WebhookEvent":{"type":"object","properties":{"id":{"type":"string"},"event":{"type":"string"},"created":{"type":"string","format":"date-time"},"data":{"type":"object"}}}}},"paths":{"/company":{"get":{"summary":"Eigenes Unternehmen","responses":{"200":{"description":"Unternehmen"}}}},"/jobs":{"get":{"summary":"Stellen auflisten","responses":{"200":{"description":"Liste"}}},"post":{"summary":"Stelle anlegen","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}}},"responses":{"201":{"description":"Angelegt"}}}},"/jobs/{id}":{"patch":{"summary":"Stelle ändern","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK"}}},"delete":{"summary":"Stelle löschen","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK"}}}},"/threads":{"get":{"summary":"Gespräche (Kontaktanfragen) abrufen","parameters":[{"name":"since","in":"query","schema":{"type":"string","format":"date-time"}}],"responses":{"200":{"description":"Liste"}}}},"/threads/{id}":{"get":{"summary":"Gespräch mit Nachrichten","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Gespräch","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Thread"}}}}}}},"/threads/{id}/messages":{"post":{"summary":"Nachricht senden","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"body":{"type":"string"}},"required":["body"]}}}},"responses":{"201":{"description":"Gesendet"}}}},"/candidates/{id}":{"get":{"summary":"Kandidat (nur aus bestehenden Gesprächen)","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Kandidat","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Candidate"}}}}}}},"/appointments":{"get":{"summary":"Termine","parameters":[{"name":"from","in":"query","schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"Liste"}}}},"/events":{"get":{"summary":"Verfügbare Webhook-Ereignisse","responses":{"200":{"description":"Liste"}}}}}}