{"openapi":"3.1.0","info":{"title":"Pronto AI","version":"0.1.0","description":"Workspace-scoped AI services. Production inference requires administrator approval."},"servers":[{"url":"/api"}],"security":[{"BearerKey":[]}],"paths":{"/v1/services/{service_id}/invoke":{"post":{"operationId":"invokeService","summary":"Run an approved service","parameters":[{"name":"service_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","schema":{"type":"string","maxLength":128}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"description":"Text, JSON, or an object with file_id, according to the service contract"}}}}}},"responses":{"200":{"description":"Validated result","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"version":{"type":"integer"},"output":{"type":"object"},"latency_ms":{"type":"integer"}}}}}},"401":{"description":"Invalid credentials"},"409":{"description":"Service not ready or idempotency conflict"},"429":{"description":"Rate limited"},"503":{"description":"Provider unavailable"}}}},"/v1/files":{"post":{"operationId":"uploadImage","summary":"Upload a workspace image up to 5 MB","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"type":"string","format":"binary"}}}}}},"responses":{"200":{"description":"Image uploaded","content":{"application/json":{"schema":{"type":"object","properties":{"file_id":{"type":"string"},"name":{"type":"string"}}}}}}}}}},"components":{"securitySchemes":{"BearerKey":{"type":"http","scheme":"bearer","description":"Pronto workspace API key. Private Sites also require OAI-Sites-Authorization at the platform boundary."}}}}