{"openapi":"3.1.0","info":{"title":"ParseMyStatement Developer API","version":"1.0.0"},"servers":[{"url":"https://parsemystatement.com/"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}}},"paths":{"/api/v1/developer/api-keys":{"get":{"summary":"List API keys (includes per-key aggregated stats)","responses":{"200":{"description":"OK"}}},"post":{"summary":"Create a new API key","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"}}}}}},"responses":{"201":{"description":"Created"}}}},"/api/v1/developer/api-keys/{id}/revoke":{"post":{"summary":"Revoke an API key (must match the bearer token)","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Revoked"},"401":{"description":"Unauthorized"}}}},"/api/v1/developer/api-keys/{id}/rotate":{"post":{"summary":"Rotate an API key (must match the bearer token)","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Rotated"}}}},"/api/v1/developer/api-keys/{id}/stats":{"get":{"summary":"Fetch per-key aggregated stats","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"description":"Unauthorized"}}}},"/api/v1/developer/uploads":{"post":{"summary":"Upload a statement PDF","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary"}}}}}},"responses":{"202":{"description":"Accepted","content":{"application/json":{}}}}},"get":{"summary":"List uploads","responses":{"200":{"description":"OK"}}}},"/api/v1/developer/uploads/{id}":{"get":{"summary":"Get upload status","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"404":{"description":"Not found"}}}},"/api/v1/developer/uploads/{id}/result":{"get":{"summary":"Get upload result when ready","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Result"},"202":{"description":"Not ready"}}}}}}