{"openapi":"3.1.0","info":{"title":"LeafSentry AI","description":"Uncertainty-aware bean leaf image triage.","version":"0.1.0"},"paths":{"/health/live":{"get":{"tags":["operations"],"summary":"Live","operationId":"live_health_live_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}},"/health/ready":{"get":{"tags":["operations"],"summary":"Ready","operationId":"ready_health_ready_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}},"/v1/predictions":{"post":{"tags":["inference"],"summary":"Predict","operationId":"predict_v1_predictions_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_predict_v1_predictions_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PredictionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"Body_predict_v1_predictions_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_predict_v1_predictions_post"},"Decision":{"type":"string","enum":["accepted","abstained"],"title":"Decision"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthResponse":{"properties":{"status":{"type":"string","enum":["ok","ready","not_ready"],"title":"Status"},"model":{"$ref":"#/components/schemas/ModelIdentity"}},"additionalProperties":false,"type":"object","required":["status","model"],"title":"HealthResponse"},"ModelIdentity":{"properties":{"id":{"type":"string","title":"Id"},"revision":{"type":"string","maxLength":40,"minLength":40,"pattern":"^[0-9a-f]{40}$","title":"Revision"}},"additionalProperties":false,"type":"object","required":["id","revision"],"title":"ModelIdentity"},"PolicySnapshot":{"properties":{"min_confidence":{"type":"number","exclusiveMaximum":1.0,"exclusiveMinimum":0.0,"title":"Min Confidence","default":0.75},"min_margin":{"type":"number","exclusiveMaximum":1.0,"exclusiveMinimum":0.0,"title":"Min Margin","default":0.2},"temperature":{"type":"number","exclusiveMinimum":0.0,"title":"Temperature","default":1.0}},"additionalProperties":false,"type":"object","title":"PolicySnapshot"},"PredictionResponse":{"properties":{"schema_version":{"type":"string","const":"1.0","title":"Schema Version","default":"1.0"},"request_id":{"type":"string","title":"Request Id"},"decision":{"$ref":"#/components/schemas/Decision"},"prediction":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prediction"},"confidence":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Confidence"},"margin":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Margin"},"normalized_entropy":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Normalized Entropy"},"scores":{"items":{"$ref":"#/components/schemas/PredictionScore"},"type":"array","title":"Scores"},"quality":{"$ref":"#/components/schemas/QualityReport"},"abstention_reasons":{"items":{"type":"string"},"type":"array","title":"Abstention Reasons"},"model":{"$ref":"#/components/schemas/ModelIdentity"},"policy":{"$ref":"#/components/schemas/PolicySnapshot"},"latency_ms":{"type":"number","minimum":0.0,"title":"Latency Ms"},"disclaimer":{"type":"string","title":"Disclaimer","default":"Educational decision-support demo; this is not a field-validated diagnosis."}},"additionalProperties":false,"type":"object","required":["request_id","decision","prediction","scores","quality","model","latency_ms"],"title":"PredictionResponse"},"PredictionScore":{"properties":{"label":{"type":"string","title":"Label"},"probability":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Probability"}},"additionalProperties":false,"type":"object","required":["label","probability"],"title":"PredictionScore"},"QualityMetrics":{"properties":{"width":{"type":"integer","exclusiveMinimum":0.0,"title":"Width"},"height":{"type":"integer","exclusiveMinimum":0.0,"title":"Height"},"format":{"type":"string","title":"Format"},"mean_brightness":{"type":"number","maximum":255.0,"minimum":0.0,"title":"Mean Brightness"},"contrast":{"type":"number","minimum":0.0,"title":"Contrast"},"sharpness":{"type":"number","minimum":0.0,"title":"Sharpness"}},"additionalProperties":false,"type":"object","required":["width","height","format","mean_brightness","contrast","sharpness"],"title":"QualityMetrics"},"QualityReport":{"properties":{"passed":{"type":"boolean","title":"Passed"},"findings":{"items":{"type":"string"},"type":"array","title":"Findings"},"metrics":{"$ref":"#/components/schemas/QualityMetrics"}},"additionalProperties":false,"type":"object","required":["passed","findings","metrics"],"title":"QualityReport"},"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"}}}}