{"openapi":"3.1.0","info":{"title":"FaceBlur public guidance API","version":"1.0.0","description":"Selected originals are uploaded to private storage. Processing and export run in the browser. Agent APIs only return public guidance and never accept media or expose stored originals."},"servers":[{"url":"https://blurfaceinvideo.com"}],"paths":{"/agent/catalog":{"get":{"operationId":"getCatalog","responses":{"200":{"description":"Public workflows and limits","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/agent/health":{"get":{"operationId":"getHealth","responses":{"200":{"description":"Guidance interface availability","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/agent/guidance":{"get":{"operationId":"getGuidance","security":[{"agentOAuth":["guidance:read"]}],"parameters":[{"name":"workflow","in":"query","schema":{"type":"string","enum":["blur-video-faces","blur-photo-faces","cover-video-region","remove-photo-metadata","remove-video-metadata","remove-audio"]}}],"responses":{"200":{"description":"Public workflow guidance","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Unknown workflow","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Invalid or expired bearer token","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/agent/register":{"post":{"operationId":"registerAnonymousClient","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false}}}},"responses":{"201":{"description":"Temporary client credentials","content":{"application/json":{"schema":{"type":"object"}}}},"429":{"description":"Registration limit reached","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/agent/token":{"post":{"operationId":"issueToken","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"grant_type":{"type":"string"},"client_id":{"type":"string"},"client_secret":{"type":"string"}},"required":["grant_type","client_id","client_secret"]}}}},"responses":{"200":{"description":"One-hour bearer token","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid grant or scope","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Invalid client","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/agent/revoke":{"post":{"operationId":"revokeToken","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"client_id":{"type":"string"},"client_secret":{"type":"string"},"token":{"type":"string"}},"required":["client_id","client_secret","token"]}}}},"responses":{"200":{"description":"Token revoked or already invalid"},"401":{"description":"Invalid client","content":{"application/json":{"schema":{"type":"object"}}}}}}}},"components":{"securitySchemes":{"agentOAuth":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"https://blurfaceinvideo.com/agent/token","scopes":{"guidance:read":"Read public workflow guidance only"}}}}}}}