{"info":{"title":"Hank Safe Harbor","version":"0.1.0","description":"HIPAA Safe Harbor de-identification - text, PDF, and MCP. Auth: an `Authorization: Bearer <token>` from console.hank.ai, or a Hank SSO session."},"paths":{"/v1/models":{"get":{"tags":["deidentify"],"summary":"List Models Route","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelsResponse"}}},"description":"Successful Response"}},"operationId":"list_models_route_v1_models_get"}},"/v1/jobs/{job_id}":{"get":{"tags":["deidentify"],"summary":"Get Job","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobStatus"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"parameters":[{"in":"path","name":"job_id","schema":{"type":"string","title":"Job Id"},"required":true}],"operationId":"get_job_v1_jobs__job_id__get"}},"/v1/deidentify/pdf":{"post":{"tags":["deidentify"],"summary":"Deidentify Pdf","responses":{"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobAccepted"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"parameters":[{"in":"query","name":"return","schema":{"enum":["pdf","both"],"type":"string","title":"Return","default":"pdf"},"required":false}],"operationId":"deidentify_pdf_v1_deidentify_pdf_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_deidentify_pdf_v1_deidentify_pdf_post"}}},"required":true}}},"/v1/deidentify/text":{"post":{"tags":["deidentify"],"summary":"Deidentify Text","responses":{"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobAccepted"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"operationId":"deidentify_text_v1_deidentify_text_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeidTextRequest"}}},"required":true}}}},"openapi":"3.1.0","servers":[{"url":"https://api.hank.ai/v1/safeharbor","description":"Production - Hank edge (metered, token-validated)"},{"url":"http://localhost:8080","description":"Local dev (direct backend)"}],"security":[{"HankAccessToken":[]}],"components":{"schemas":{"JobStatus":{"type":"object","title":"JobStatus","required":["id","status","operation"],"properties":{"id":{"type":"string","title":"Id"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"result":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Result"},"status":{"type":"string","title":"Status"},"operation":{"type":"string","title":"Operation"}}},"JobAccepted":{"type":"object","title":"JobAccepted","required":["job_id","status_url"],"properties":{"job_id":{"type":"string","title":"Job Id"},"status":{"type":"string","title":"Status","default":"pending"},"status_url":{"type":"string","title":"Status Url"}}},"ModelsResponse":{"type":"object","title":"ModelsResponse","required":["models","default","loaded","backend","device"],"properties":{"device":{"type":"string","title":"Device"},"loaded":{"type":"string","title":"Loaded"},"models":{"type":"object","title":"Models","additionalProperties":{"type":"string"}},"backend":{"type":"string","title":"Backend"},"default":{"type":"string","title":"Default"}}},"DeidTextRequest":{"type":"object","title":"DeidTextRequest","required":["text"],"properties":{"mode":{"type":"string","const":"faker","title":"Mode","default":"faker"},"text":{"type":"string","title":"Text","minLength":1,"description":"The clinical text to de-identify."},"include_spans":{"type":"boolean","title":"Include Spans","default":true}}},"ValidationError":{"type":"object","title":"ValidationError","required":["loc","msg","type"],"properties":{"ctx":{"type":"object","title":"Context"},"loc":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"}}},"HTTPValidationError":{"type":"object","title":"HTTPValidationError","properties":{"detail":{"type":"array","items":{"$ref":"#/components/schemas/ValidationError"},"title":"Detail"}}},"Body_deidentify_pdf_v1_deidentify_pdf_post":{"type":"object","title":"Body_deidentify_pdf_v1_deidentify_pdf_post","required":["file"],"properties":{"file":{"type":"string","title":"File","description":"The PDF to de-identify.","contentMediaType":"application/octet-stream"}}}},"securitySchemes":{"HankAccessToken":{"type":"http","scheme":"bearer","description":"Paste a console.hank.ai bearer token (just the token)."}}}}