{"openapi":"3.1.0","info":{"title":"secure-push-gateway-mail","version":"1.0.0"},"paths":{"/healthz":{"get":{"summary":"Healthz","operationId":"healthz_healthz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Healthz Healthz Get"}}}}}}},"/api/health":{"get":{"summary":"Api Health","operationId":"api_health_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Api Health Api Health Get"}}}}}}},"/api/analyze-template":{"post":{"summary":"Analyze Template","operationId":"analyze_template_api_analyze_template_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyzeTemplateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Analyze Template Api Analyze Template Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/ai-preview":{"post":{"summary":"Ai Preview","description":"One-shot Azure OpenAI text generation for browser/SF preview.\n\nTakes a single prompt (optionally with substituted_values that the\ncaller has already interpolated into the prompt), invokes Azure\nOpenAI Chat Completions via Entra ID Bearer auth, and returns the\ngenerated text + token count. No DB writes — preview is stateless.","operationId":"ai_preview_api_ai_preview_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiPreviewRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ai Preview Api Ai Preview Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/generate-letter-batch":{"post":{"summary":"Generate Letter Batch","operationId":"generate_letter_batch_api_generate_letter_batch_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Raw Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Generate Letter Batch Api Generate Letter Batch Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/r/{token}":{"get":{"summary":"Qr Redirect","description":"Public QR landing endpoint. Records a scan and redirects to target_url.","operationId":"qr_redirect_r__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AiPreviewRequest":{"properties":{"prompt":{"type":"string","maxLength":8000,"minLength":1,"title":"Prompt"},"substituted_values":{"additionalProperties":true,"type":"object","title":"Substituted Values"},"ai_model":{"anyOf":[{"type":"string","maxLength":128,"minLength":1},{"type":"null"}],"title":"Ai Model"}},"type":"object","required":["prompt"],"title":"AiPreviewRequest"},"AnalyzeTemplateRequest":{"properties":{"file_type":{"type":"string","maxLength":32,"minLength":1,"title":"File Type"},"file_name":{"type":"string","maxLength":255,"minLength":1,"title":"File Name"},"file_data":{"type":"string","minLength":1,"title":"File Data"}},"type":"object","required":["file_type","file_name","file_data"],"title":"AnalyzeTemplateRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"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":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}