{"openapi":"3.1.0","info":{"title":"Resume Optimizer API","version":"0.1.0"},"paths":{"/api/payment-plans":{"get":{"summary":"Get Payment Plans","operationId":"get_payment_plans_api_payment_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/payments/create-order":{"post":{"summary":"Create Order","operationId":"create_order_api_payments_create_order_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOrderRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/payments/verify":{"post":{"summary":"Verify Payment","operationId":"verify_payment_api_payments_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyPaymentRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/webhooks/razorpay":{"post":{"summary":"Razorpay Webhook","operationId":"razorpay_webhook_api_webhooks_razorpay_post","parameters":[{"name":"x-razorpay-signature","in":"header","required":false,"schema":{"type":"string","title":"X-Razorpay-Signature"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/send-magic-link":{"post":{"summary":"Send Magic Link","operationId":"send_magic_link_api_auth_send_magic_link_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MagicLinkRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/optimize-resume":{"post":{"summary":"Optimize Resume","description":"Secure resume optimization endpoint.\n\nIMPORTANT SECURITY MODEL:\n1. Authenticated users are identified by Firebase UID.\n2. Guests are identified using multiple server-side signals:\n   - HttpOnly visitor cookie\n   - browser fingerprint\n   - Cloudflare IP\n3. Client fingerprint is treated as an untrusted signal.\n4. Guest usage is consumed atomically.\n5. Suspicious guests may be required to create/sign into an account.\n6. Account creation does NOT reset guest usage.\n7. Turnstile is only used as an invisible server-side challenge\n   when the risk engine requires it.","operationId":"optimize_resume_api_optimize_resume_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"visitor_token","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Visitor Token"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_optimize_resume_api_optimize_resume_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/firebase-sync":{"post":{"summary":"Sync Firebase User","operationId":"sync_firebase_user_api_auth_firebase_sync_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"visitor_token","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Visitor Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/user/dashboard":{"get":{"summary":"Get User Dashboard","operationId":"get_user_dashboard_api_user_dashboard_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/health":{"get":{"summary":"Health","description":"Health check endpoint","operationId":"health_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/{full_path}":{"get":{"summary":"Serve React","operationId":"serve_react__full_path__get","parameters":[{"name":"full_path","in":"path","required":true,"schema":{"type":"string","title":"Full Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"Body_optimize_resume_api_optimize_resume_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"},"instructions":{"type":"string","title":"Instructions","default":""},"job_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Url"},"job_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Description"},"fingerprint":{"type":"string","title":"Fingerprint"},"turnstile_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Turnstile Token"}},"type":"object","required":["fingerprint"],"title":"Body_optimize_resume_api_optimize_resume_post"},"CreateOrderRequest":{"properties":{"plan_name":{"type":"string","title":"Plan Name"}},"type":"object","required":["plan_name"],"title":"CreateOrderRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"MagicLinkRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"continueUrl":{"type":"string","title":"Continueurl"}},"type":"object","required":["email","continueUrl"],"title":"MagicLinkRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VerifyPaymentRequest":{"properties":{"razorpay_order_id":{"type":"string","title":"Razorpay Order Id"},"razorpay_payment_id":{"type":"string","title":"Razorpay Payment Id"},"razorpay_signature":{"type":"string","title":"Razorpay Signature"}},"type":"object","required":["razorpay_order_id","razorpay_payment_id","razorpay_signature"],"title":"VerifyPaymentRequest"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}