{"openapi":"3.1.0","info":{"title":"Faraid.AI API","description":"## Faraid.AI Public API\n\nAI-powered Sharia inheritance calculation + multi-jurisdiction will generation.\n\n**Base URL:** `https://api.faraid.ai`\n\n**Authentication:** Bearer token (API key). Get yours from your dashboard:\n```\nAuthorization: Bearer fk_live_xxxxxxxxxxxxxxxxx\n```\n\n**Scopes:** `faraid:calculate`, `wills:write`, `documents:read`, `lawyer:read`, `*`\n\n**Sandbox keys** (`fk_sand_*`) — test integrations without real billing/documents.\n\n**Rate limit:** 100 calc / hour / IP. Authenticated requests use your plan quota.\n\n- **Developer Portal:** [/developers](/developers)\n- **OpenAPI schema:** [/openapi.json](/openapi.json)\n- **ReDoc:** [/redoc](/redoc)\n","contact":{"name":"Faraid.AI","url":"https://faraid.ai/","email":"developers@faraid.ai"},"license":{"name":"Proprietary — see Terms of Service","url":"https://faraid.ai/terms"},"version":"2.0"},"paths":{"/api/auth/google":{"post":{"tags":["auth"],"summary":"Auth Google","description":"Body: { \"credential\": \"<google_id_token>\" }","operationId":"auth_google_api_auth_google_post","requestBody":{"content":{"application/json":{"schema":{"type":"object","title":"Istek"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/dev-login":{"post":{"tags":["auth"],"summary":"Auth Dev Login","description":"DEV-ONLY — Google'sız yerel Pro oturum.\n\nYalnızca FERAIZ_DEV_PRO=1 iken çalışır (üretimde 404). Google OAuth\nlokalde kurulu olmadığında giriş gerektiren özellikleri (geçmiş,\nkayıtlı hesaplar, fatura) test etmek için. Lokal denemeden sonra\nSİLİNECEK geçici endpoint.","operationId":"auth_dev_login_api_auth_dev_login_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/auth/apple":{"post":{"tags":["auth"],"summary":"Auth Apple","description":"Sign in with Apple identityToken → web session cookie.","operationId":"auth_apple_api_auth_apple_post","requestBody":{"content":{"application/json":{"schema":{"type":"object","title":"Istek"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/logout":{"post":{"tags":["auth"],"summary":"Auth Logout","operationId":"auth_logout_api_auth_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/auth/config":{"get":{"tags":["auth"],"summary":"Auth Config","description":"Frontend'in Google Client ID'yi öğrenmesi için.","operationId":"auth_config_api_auth_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/auth/me":{"get":{"tags":["auth"],"summary":"Auth Me","operationId":"auth_me_api_auth_me_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/account":{"delete":{"tags":["auth"],"summary":"Delete Account","description":"Delete the signed-in user's account and user-owned data.\n\nStore apps that allow account creation must expose in-app account deletion.\nThis endpoint performs a hard delete for personal data owned by the user;\nimmutable financial/legal records that must be retained should be exported\nelsewhere before this endpoint is enabled in production.","operationId":"delete_account_api_auth_account_delete","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/history/save":{"post":{"tags":["history"],"summary":"History Save","description":"Body: { \"form_veri\": {...}, \"sonuc\": {...}, \"baslik\": \"isteğe bağlı\" }","operationId":"history_save_api_history_save_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Istek"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/history/list":{"get":{"tags":["history"],"summary":"History List","description":"Son N dosya — her version_group için yalnızca EN GÜNCEL sürüm + sürüm sayısı.","operationId":"history_list_api_history_list_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/history/group/{group_id}/versions":{"get":{"tags":["history"],"summary":"History Versions","description":"Bir dosyanın tüm sürümleri (eskiden yeniye).","operationId":"history_versions_api_history_group__group_id__versions_get","parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"integer","title":"Group Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/history/{log_id}":{"get":{"tags":["history"],"summary":"History Get","operationId":"history_get_api_history__log_id__get","parameters":[{"name":"log_id","in":"path","required":true,"schema":{"type":"integer","title":"Log Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["history"],"summary":"History Delete","operationId":"history_delete_api_history__log_id__delete","parameters":[{"name":"log_id","in":"path","required":true,"schema":{"type":"integer","title":"Log Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["history"],"summary":"History Update Title","description":"Body: { \"baslik\": \"yeni başlık\" }","operationId":"history_update_title_api_history__log_id__patch","parameters":[{"name":"log_id","in":"path","required":true,"schema":{"type":"integer","title":"Log Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Istek"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/lawyer/me":{"get":{"tags":["lawyer"],"summary":"Lawyer Me","operationId":"lawyer_me_api_lawyer_me_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/lawyer/firm":{"patch":{"tags":["lawyer"],"summary":"Update Firm","description":"White-label firm info update.","operationId":"update_firm_api_lawyer_firm_patch","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FirmUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/lawyer/upgrade":{"post":{"tags":["lawyer"],"summary":"Request Lawyer Upgrade","description":"Lawyer erişimi TALEBİ — otomatik onay YOK.\n\nEskiden bu uç herkesi anında 'lawyer' rolüne yükseltiyordu (free kullanıcı\n'Avukat Hesabı'na basınca panel açılıyordu — güvenlik açığı). Artık rol\nDEĞİŞMEZ; lawyer erişimi yalnızca (a) Railway LAWYER_EMAILS/ADMIN_EMAILS\nallowlist'i ile veya (b) admin panelinden verilir. Bu uç sadece talebi\nkaydeder/iletişime yönlendirir.","operationId":"request_lawyer_upgrade_api_lawyer_upgrade_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/lawyer/clients":{"get":{"tags":["lawyer"],"summary":"List Clients","operationId":"list_clients_api_lawyer_clients_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"active","title":"Status"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["lawyer"],"summary":"Create Client","operationId":"create_client_api_lawyer_clients_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/lawyer/clients/{client_id}":{"get":{"tags":["lawyer"],"summary":"Get Client","operationId":"get_client_api_lawyer_clients__client_id__get","parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"integer","title":"Client Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["lawyer"],"summary":"Update Client","operationId":"update_client_api_lawyer_clients__client_id__patch","parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"integer","title":"Client Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["lawyer"],"summary":"Delete Client","description":"Archive (default) or PERMANENTLY delete a client.\n\n`?permanent=true` removes the client record entirely. The client's\ncalculation history is preserved but UNLINKED (lawyer_client_id → NULL)\nso the lawyer keeps the calculations under their own account.","operationId":"delete_client_api_lawyer_clients__client_id__delete","parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"integer","title":"Client Id"}},{"name":"permanent","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Permanent"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/lawyer/clients/{client_id}/notes":{"post":{"tags":["lawyer"],"summary":"Add Client Note","description":"Append a timestamped note to the client's timeline.","operationId":"add_client_note_api_lawyer_clients__client_id__notes_post","parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"integer","title":"Client Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/lawyer/export/clients.csv":{"get":{"tags":["lawyer"],"summary":"Export Clients Csv","description":"Tüm müvekkilleri + hesap sayılarını CSV olarak indir.","operationId":"export_clients_csv_api_lawyer_export_clients_csv_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/lawyer/clients/{client_id}/email":{"post":{"tags":["lawyer"],"summary":"Email Client","description":"Müvekkile firma adına bilgilendirme e-postası gönder.","operationId":"email_client_api_lawyer_clients__client_id__email_post","parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"integer","title":"Client Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientEmailIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/lawyer/clients/{client_id}/calc":{"post":{"tags":["lawyer"],"summary":"Run Calc For Client","description":"Run a faraid calculation on behalf of a client; tag the log.","operationId":"run_calc_for_client_api_lawyer_clients__client_id__calc_post","parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"integer","title":"Client Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/lawyer/analytics":{"get":{"tags":["lawyer"],"summary":"Lawyer Analytics","description":"Detailed analytics for the lawyer dashboard:\n- Net estate managed (sum of net_tereke from calculations)\n- Conversion: calculations → will drafts ratio\n- Latency: avg calc API response time (last 30d)\n- Gemini token consumption (last 30d) — approximate\n- Time saved counter (140 hours = N calcs × est. 2h manual research)\n- Trend: calculations per day (last 30d)","operationId":"lawyer_analytics_api_lawyer_analytics_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/lawyer/stats":{"get":{"tags":["lawyer"],"summary":"Lawyer Stats","description":"Overall metrics for the lawyer dashboard.","operationId":"lawyer_stats_api_lawyer_stats_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/wills/save":{"post":{"tags":["wills"],"summary":"Save Will","description":"Save a new will or increment version of existing group.","operationId":"save_will_api_wills_save_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WillSaveIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/wills/list":{"get":{"tags":["wills"],"summary":"List Will Groups","description":"List all will groups — one entry per group, latest version metadata.","operationId":"list_will_groups_api_wills_list_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/wills/group/{group_id}":{"get":{"tags":["wills"],"summary":"List Versions","operationId":"list_versions_api_wills_group__group_id__get","parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","title":"Group Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/wills/version/{version_id}":{"get":{"tags":["wills"],"summary":"Get Version","operationId":"get_version_api_wills_version__version_id__get","parameters":[{"name":"version_id","in":"path","required":true,"schema":{"type":"integer","title":"Version Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["wills"],"summary":"Soft Delete Version","description":"Mark a version as non-current (soft delete). Hard delete only if it's the only version.","operationId":"soft_delete_version_api_wills_version__version_id__delete","parameters":[{"name":"version_id","in":"path","required":true,"schema":{"type":"integer","title":"Version Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/wills/diff/{old_id}/{new_id}":{"get":{"tags":["wills"],"summary":"Diff Versions","description":"Unified line-by-line diff between two versions of same group.","operationId":"diff_versions_api_wills_diff__old_id___new_id__get","parameters":[{"name":"old_id","in":"path","required":true,"schema":{"type":"integer","title":"Old Id"}},{"name":"new_id","in":"path","required":true,"schema":{"type":"integer","title":"New Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/wills/version/{version_id}/restore":{"post":{"tags":["wills"],"summary":"Restore Version","description":"Restore old version as a NEW current version (creates a new version entry).","operationId":"restore_version_api_wills_version__version_id__restore_post","parameters":[{"name":"version_id","in":"path","required":true,"schema":{"type":"integer","title":"Version Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/wills/version/{version_id}/download":{"get":{"tags":["wills"],"summary":"Download Version","operationId":"download_version_api_wills_version__version_id__download_get","parameters":[{"name":"version_id","in":"path","required":true,"schema":{"type":"integer","title":"Version Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/documents/save":{"post":{"tags":["documents"],"summary":"Save Document","description":"Create a document draft or append a new version to an existing group.","operationId":"save_document_api_documents_save_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentSaveIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/documents/list":{"get":{"tags":["documents"],"summary":"List Documents","operationId":"list_documents_api_documents_list_get","parameters":[{"name":"document_type","in":"query","required":false,"schema":{"type":"string","default":"","title":"Document Type"}},{"name":"calculation_log_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Calculation Log Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/documents/{document_id}":{"get":{"tags":["documents"],"summary":"Get Document","operationId":"get_document_api_documents__document_id__get","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"integer","title":"Document Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/audit/recent":{"get":{"tags":["audit"],"summary":"Audit Recent","description":"Son N gün içindeki audit log kayıtları (lawyer kendi etkinliği için).","operationId":"audit_recent_api_audit_recent_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/audit/target/{target_type}/{target_id}":{"get":{"tags":["audit"],"summary":"Audit For Target","description":"Bir kaynağın (LawyerClient, WillVersion vb.) tüm değişiklik geçmişi.","operationId":"audit_for_target_api_audit_target__target_type___target_id__get","parameters":[{"name":"target_type","in":"path","required":true,"schema":{"type":"string","title":"Target Type"}},{"name":"target_id","in":"path","required":true,"schema":{"type":"integer","title":"Target Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhooks/endpoints":{"get":{"tags":["webhooks"],"summary":"List Endpoints","operationId":"list_endpoints_api_webhooks_endpoints_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["webhooks"],"summary":"Create Endpoint","operationId":"create_endpoint_api_webhooks_endpoints_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndpointIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhooks/endpoints/{ep_id}":{"patch":{"tags":["webhooks"],"summary":"Update Endpoint","operationId":"update_endpoint_api_webhooks_endpoints__ep_id__patch","parameters":[{"name":"ep_id","in":"path","required":true,"schema":{"type":"integer","title":"Ep Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndpointUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["webhooks"],"summary":"Delete Endpoint","operationId":"delete_endpoint_api_webhooks_endpoints__ep_id__delete","parameters":[{"name":"ep_id","in":"path","required":true,"schema":{"type":"integer","title":"Ep Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhooks/endpoints/{ep_id}/test":{"post":{"tags":["webhooks"],"summary":"Test Endpoint","operationId":"test_endpoint_api_webhooks_endpoints__ep_id__test_post","parameters":[{"name":"ep_id","in":"path","required":true,"schema":{"type":"integer","title":"Ep Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhooks/deliveries":{"get":{"tags":["webhooks"],"summary":"Recent Deliveries","operationId":"recent_deliveries_api_webhooks_deliveries_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/keys":{"get":{"tags":["api-keys"],"summary":"List Keys","operationId":"list_keys_api_keys_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["api-keys"],"summary":"Create Key","description":"Returns the FULL key value ONCE. Save it — we only store hash afterwards.","operationId":"create_key_api_keys_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/keys/{key_id}":{"patch":{"tags":["api-keys"],"summary":"Update Key","operationId":"update_key_api_keys__key_id__patch","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"integer","title":"Key Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["api-keys"],"summary":"Revoke Key","operationId":"revoke_key_api_keys__key_id__delete","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"integer","title":"Key Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tokens/usage":{"get":{"tags":["tokens"],"summary":"My Token Usage","description":"Kullanıcının son N gün token tüketim özeti + maliyet tahmini.","operationId":"my_token_usage_api_tokens_usage_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/plans":{"get":{"tags":["billing"],"summary":"List Plans","description":"Public catalogue. Front-end pricing page consumes this.","operationId":"list_plans_api_billing_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response List Plans Api Billing Plans Get"}}}}}}},"/api/billing/wallet":{"get":{"tags":["billing"],"summary":"My Wallet","description":"Mobile app reads this to show the user their AI token + single-\nreport balances on the PricingScreen / SettingsScreen.","operationId":"my_wallet_api_billing_wallet_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response My Wallet Api Billing Wallet Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/unlock-report/{calculation_log_id}":{"post":{"tags":["billing"],"summary":"Unlock Single Report","description":"Spend ONE single_report_credit to permanently unlock the named\ncalculation's premium download (full PDF + DOCX + will template).","operationId":"unlock_single_report_api_billing_unlock_report__calculation_log_id__post","parameters":[{"name":"calculation_log_id","in":"path","required":true,"schema":{"type":"integer","title":"Calculation Log Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Unlock Single Report Api Billing Unlock Report  Calculation Log Id  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/subscription":{"get":{"tags":["billing"],"summary":"My Subscription","operationId":"my_subscription_api_billing_subscription_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response My Subscription Api Billing Subscription Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/checkout":{"post":{"tags":["billing"],"summary":"Create Checkout","description":"Web checkout is disabled for now.\n\nPaid self-serve access will be sold through App Store / Play Store via\nRevenueCat after mobile release. Web Pro/Lawyer requests are contact-only.","operationId":"create_checkout_api_billing_checkout_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Create Checkout Api Billing Checkout Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/portal":{"post":{"tags":["billing"],"summary":"Customer Portal","description":"Web billing portal is disabled until web checkout is enabled.","operationId":"customer_portal_api_billing_portal_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Customer Portal Api Billing Portal Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/cancel":{"post":{"tags":["billing"],"summary":"Cancel Subscription","description":"Cancel at period end (graceful).","operationId":"cancel_subscription_api_billing_cancel_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Cancel Subscription Api Billing Cancel Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/webhook":{"post":{"tags":["billing"],"summary":"Paddle Webhook","description":"Paddle posts subscription.created/updated/canceled, transaction.completed, etc.\n\nSecurity: verify HMAC signature using PADDLE_WEBHOOK_SECRET.","operationId":"paddle_webhook_api_billing_webhook_post","parameters":[{"name":"Paddle-Signature","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Paddle-Signature"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Paddle Webhook Api Billing Webhook Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/legal/versions":{"get":{"tags":["legal"],"summary":"Legal Versions","operationId":"legal_versions_api_legal_versions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/legal/status":{"get":{"tags":["legal"],"summary":"Legal Status","operationId":"legal_status_api_legal_status_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/legal/accept":{"post":{"tags":["legal"],"summary":"Legal Accept","operationId":"legal_accept_api_legal_accept_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/status":{"get":{"tags":["status"],"summary":"Status Json","description":"Full structured status — JSON, suitable for monitoring.","operationId":"status_json_api_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/metrics":{"get":{"tags":["admin"],"summary":"Admin Metrics","operationId":"admin_metrics_api_admin_metrics_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/users":{"get":{"tags":["admin"],"summary":"Admin Users","operationId":"admin_users_api_admin_users_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","description":"search by email or name","default":"","title":"Q"},"description":"search by email or name"},{"name":"role","in":"query","required":false,"schema":{"type":"string","description":"filter by role","default":"","title":"Role"},"description":"filter by role"},{"name":"plan","in":"query","required":false,"schema":{"type":"string","description":"filter by plan_code","default":"","title":"Plan"},"description":"filter by plan_code"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/users/{user_id}":{"get":{"tags":["admin"],"summary":"Admin User Detail","operationId":"admin_user_detail_api_admin_users__user_id__get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/users/{user_id}/role":{"post":{"tags":["admin"],"summary":"Admin Change Role","operationId":"admin_change_role_api_admin_users__user_id__role_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleChange"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/users/{user_id}/grant":{"post":{"tags":["admin"],"summary":"Admin Grant","operationId":"admin_grant_api_admin_users__user_id__grant_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GrantBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/recent-events":{"get":{"tags":["admin"],"summary":"Admin Recent Events","operationId":"admin_recent_events_api_admin_recent_events_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/referral/code":{"post":{"tags":["referral"],"summary":"Create Or Rotate Code","description":"Get current code or rotate to a new one. Rotation invalidates the old code.","operationId":"create_or_rotate_code_api_referral_code_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/referral/stats":{"get":{"tags":["referral"],"summary":"My Stats","operationId":"my_stats_api_referral_stats_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/mobile/exchange":{"post":{"tags":["mobile"],"summary":"Mobile Exchange","description":"Google/Apple identity token → long-lived Bearer for the mobile app.","operationId":"mobile_exchange_api_auth_mobile_exchange_post","requestBody":{"content":{"application/json":{"schema":{"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/mobile/entitlement":{"post":{"tags":["mobile"],"summary":"Mobile Entitlement","description":"Set by the in-app RevenueCat customerInfoUpdate listener.\n\nThe webhook below is still the source of truth — but this endpoint\nkeeps the user's `plan` in sync before the webhook propagates.","operationId":"mobile_entitlement_api_billing_mobile_entitlement_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/revenuecat/webhook":{"post":{"tags":["mobile"],"summary":"Revenuecat Webhook","description":"RevenueCat → us. Authoritative.\n\nConfigure in RevenueCat Dashboard → Project Settings → Integrations →\nWebhooks:\n    URL: https://faraid.ai/api/billing/revenuecat/webhook\n    Authorization header: REVENUECAT_WEBHOOK_AUTH env var\n    Events: INITIAL_PURCHASE, RENEWAL, CANCELLATION, EXPIRATION,\n            BILLING_ISSUE, PRODUCT_CHANGE, NON_RENEWING_PURCHASE.","operationId":"revenuecat_webhook_api_billing_revenuecat_webhook_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/push/register":{"post":{"tags":["push"],"summary":"Register Device","description":"Upsert the Expo push token for the calling user.\n\nThe mobile app calls this on every launch — that way a single user\nwith multiple devices (iPhone + iPad) gets all of them messaged.","operationId":"register_device_api_push_register_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushRegisterIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/push/test":{"post":{"tags":["push"],"summary":"Push Test","description":"Send a smoke-test push to the caller's devices.","operationId":"push_test_api_push_test_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/push/send":{"post":{"tags":["push"],"summary":"Push Send","description":"Operator/admin route. Restricted to role='admin'.","operationId":"push_send_api_push_send_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushSendIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/hesapla":{"post":{"summary":"Feraiz Hesapla","operationId":"feraiz_hesapla_api_hesapla_post","requestBody":{"content":{"application/json":{"schema":{"type":"object","title":"Istek"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/what-if":{"post":{"summary":"Feraiz What If","description":"Body: { \"baseline\": {...payload...}, \"scenarios\": [\"remove_child\",\"add_child_male\", ...] }\nReturns: { \"baseline\": summary, \"scenarios\": [{key, desc, summary, diff_from_baseline}, ...] }","operationId":"feraiz_what_if_api_what_if_post","requestBody":{"content":{"application/json":{"schema":{"type":"object","title":"Istek"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/hesapla/stream":{"post":{"summary":"Feraiz Hesapla Stream","operationId":"feraiz_hesapla_stream_api_hesapla_stream_post","requestBody":{"content":{"application/json":{"schema":{"type":"object","title":"Istek"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/soru":{"post":{"summary":"Soru Sor","operationId":"soru_sor_api_soru_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SohbetIstegi"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ai/explain":{"post":{"summary":"Ai Explain","description":"On-demand fiqh explanation for a calculation result.\n\nCalled only when the user explicitly taps \"AI Açıklamayı Göster\"\n(web) or opens the Results screen's AI card (mobile). Never\ntriggered by /api/hesapla so a user who never asks for AI never\nburns a Gemini token.\n\nBody shape (flexible — both web and mobile use this):\n    { \"result\": <full hesapla response>, \"lang\": \"tr\" }\n    { \"calc_id\": 123, \"lang\": \"tr\" }     # cached fetch path\n\nCache strategy:\n    If `calc_id` is provided AND the user has a CalculationLog with\n    a non-empty `ai_explanation_cache` JSON field, we return the\n    cached text and skip the Gemini call. The cache is filled on\n    the first successful call. This keeps repeated opens free.\n\nQuota:\n    First explanation per calc is free for everyone (this is the\n    product value-prop — showing it should never cost a credit).\n    Re-generations (`force: true`) burn one ai_chat credit if the\n    user is on free tier and out of their monthly quota.","operationId":"ai_explain_api_ai_explain_post","requestBody":{"content":{"application/json":{"schema":{"type":"object","title":"Istek"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ai/chat":{"post":{"summary":"Ai Chat Alias","description":"Mobile-compatible alias for /api/soru.","operationId":"ai_chat_alias_api_ai_chat_post","requestBody":{"content":{"application/json":{"schema":{"type":"object","title":"Istek"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vasiyetname/countries":{"get":{"summary":"Vasiyetname Countries","description":"16 ülke listesi — UI dil bazlı notes ile.\n\nQuery params:\n  ui_lang: tr | en | ar | de | fr | id | es (default tr)","operationId":"vasiyetname_countries_api_vasiyetname_countries_get","parameters":[{"name":"ui_lang","in":"query","required":false,"schema":{"type":"string","default":"tr","title":"Ui Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vasiyetname/fields":{"get":{"summary":"Vasiyetname Fields","description":"Ülke + senaryo bazlı dinamik form field listesi.\n\nscenario: pre_death (vasiyetname) | post_death (taksim sözleşmesi)","operationId":"vasiyetname_fields_api_vasiyetname_fields_get","parameters":[{"name":"country","in":"query","required":true,"schema":{"type":"string","title":"Country"}},{"name":"scenario","in":"query","required":false,"schema":{"type":"string","default":"pre_death","title":"Scenario"}},{"name":"ui_lang","in":"query","required":false,"schema":{"type":"string","default":"tr","title":"Ui Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vasiyetname/generate":{"post":{"summary":"Vasiyetname Generate","description":"Vasiyetname/taksim taslağı üretir.\n\nBody:\n  {\n    \"country_code\": \"UK\",\n    \"scenario\": \"pre_death\" | \"post_death\",\n    \"faraid_result\": {...}     # /api/hesapla'nın dönüşü\n                                # YA DA hesap formundaki tüm girişler (yeniden hesaplar)\n    \"raw_form_data\": {...}      # opsiyonel — eğer faraid_result yoksa bunu hesaplar\n    \"user_inputs\": {...},       # template_required_inputs ile aynı isimde alanlar\n    \"wasiyya_list\": [...],      # opsiyonel (pre_death için)\n    \"original_distribution\": [..], # opsiyonel (post_death için)\n    \"asset_plan\": {...}            # opsiyonel: kaydedilmiş mal paylaşım planı\n  }","operationId":"vasiyetname_generate_api_vasiyetname_generate_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Istek"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/asset_splitter/optimize":{"post":{"summary":"Asset Splitter Optimize","description":"Optimum Mal Paylaşım Modülü (Knapsack + Mahsuplaşma).\n\nBody: {\n   \"assets\": [\n      {\"name\":\"Daire\",\"value\":5000000,\"divisible\":false,\"category\":\"real_estate\"},\n      {\"name\":\"Araba\",\"value\":1000000,\"divisible\":false,\"category\":\"vehicle\"},\n      {\"name\":\"Banka Hesabı\",\"value\":500000,\"divisible\":true,\"category\":\"cash\"}\n   ],\n   \"heirs\": [\n      {\"name\":\"Fatma\",\"faraid_pct\":12.5},\n      {\"name\":\"Ahmet\",\"faraid_pct\":58.33}\n   ]\n   // VEYA:\n   \"faraid_result\": {...},   # algorithm.hesapla sonucu (heirs otomatik çıkar)\n   \"raw_form_data\": {...},    # form ham veri (faraid_result yoksa hesapla)\n}","operationId":"asset_splitter_optimize_api_asset_splitter_optimize_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Istek"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/asset_splitter/scenarios":{"post":{"summary":"Asset Splitter Scenarios","description":"💎 Çoklu senaryo üretici — Greedy, Liquidation, Joint Ownership, Cash Pref.\n\nBody: {\n   \"assets\": [...],\n   \"heirs\": [...] veya \"faraid_result\": {...} veya \"raw_form_data\": {...},\n   \"options\": {\n      \"include\": [\"greedy\",\"liquidation\",\"joint_ownership\",\"prefer_cash\"],\n      \"waivers\": [{\"from\":\"Fatma\",\"to\":\"Ahmet\",\"fraction\":1.0}],  // Takharuj\n      \"lang\": \"tr\"\n   }\n}","operationId":"asset_splitter_scenarios_api_asset_splitter_scenarios_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Istek"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vasiyetname/optimize":{"post":{"summary":"Vasiyetname Optimize","description":"💎 PREMIUM — Civil-law ülke için saklı pay × Faraid dengeleme.\n\nBody: {\n   \"country_code\": \"TR\",\n   \"raw_form_data\": {...}  # hesap formu (ogul_listesi, anne_hayatta, vs.)\n                            # YA DA \"family\" + \"faraid_result\" doğrudan\n   \"family\": {...},\n   \"faraid_result\": {...},\n}","operationId":"vasiyetname_optimize_api_vasiyetname_optimize_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Istek"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vasiyetname/download/docx":{"post":{"summary":"Vasiyetname Docx","description":"Üretilmiş taslağı DOCX bayt'ı olarak döndür.\n\nBody: ya {'country_code', 'scenario', 'text', 'title'} (pre-generated)\n      ya da {'country_code', 'scenario', 'raw_form_data', 'user_inputs'} (regenerate)","operationId":"vasiyetname_docx_api_vasiyetname_download_docx_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"feraiz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feraiz Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Istek"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ingest/directory":{"post":{"summary":"Klasor Ingest","description":"Kaynak verisini JSON klasöründen tekrar yükler (rag_data*.json).","operationId":"klasor_ingest_api_ingest_directory_post","parameters":[{"name":"klasor","in":"query","required":false,"schema":{"type":"string","title":"Klasor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/rag/stats":{"get":{"summary":"Rag Stats","operationId":"rag_stats_api_rag_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/rag/reset":{"delete":{"summary":"Rag Reset","operationId":"rag_reset_api_rag_reset_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/soru-agaci":{"get":{"summary":"Soru Agaci","operationId":"soru_agaci_api_soru_agaci_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/config":{"get":{"summary":"Public Config","description":"Frontend için güvenli config — sadece public değişkenler.\nSENTRY_DSN, SESSION_SECRET, GEMINI_API_KEY gibi hassas alanlar BURAYA ASLA EKLENMESİN.","operationId":"public_config_api_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"AcceptIn":{"properties":{"document_type":{"type":"string","title":"Document Type"},"document_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Version"},"accepted_name":{"type":"string","title":"Accepted Name","default":""},"accepted_company":{"type":"string","title":"Accepted Company","default":""},"accepted_title":{"type":"string","title":"Accepted Title","default":""}},"type":"object","required":["document_type"],"title":"AcceptIn"},"CheckoutIn":{"properties":{"plan_code":{"type":"string","title":"Plan Code"},"interval":{"type":"string","title":"Interval","default":"monthly"}},"type":"object","required":["plan_code"],"title":"CheckoutIn"},"ClientEmailIn":{"properties":{"subject":{"type":"string","title":"Subject","default":""},"message":{"type":"string","title":"Message","default":""}},"type":"object","title":"ClientEmailIn"},"ClientIn":{"properties":{"client_name":{"type":"string","title":"Client Name"},"client_email":{"type":"string","title":"Client Email","default":""},"client_phone":{"type":"string","title":"Client Phone","default":""},"notes":{"type":"string","title":"Notes","default":""}},"type":"object","required":["client_name"],"title":"ClientIn"},"ClientUpdate":{"properties":{"client_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Name"},"client_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Email"},"client_phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Phone"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"stage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stage"}},"type":"object","title":"ClientUpdate"},"DocumentSaveIn":{"properties":{"group_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Group Id"},"calculation_log_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Calculation Log Id"},"document_type":{"type":"string","title":"Document Type","default":"document"},"country":{"type":"string","title":"Country","default":""},"language":{"type":"string","title":"Language","default":"tr"},"title":{"type":"string","title":"Title","default":""},"content_html":{"type":"string","title":"Content Html","default":""},"content_text":{"type":"string","title":"Content Text","default":""},"metadata":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Metadata"},"lawyer_client_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Lawyer Client Id"}},"type":"object","title":"DocumentSaveIn"},"EndpointIn":{"properties":{"url":{"type":"string","title":"Url"},"events":{"type":"string","title":"Events","default":"*"},"description":{"type":"string","title":"Description","default":""}},"type":"object","required":["url"],"title":"EndpointIn"},"EndpointUpdate":{"properties":{"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"events":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Events"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","title":"EndpointUpdate"},"FirmUpdate":{"properties":{"firm_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Firm Name"},"firm_logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Firm Logo Url"}},"type":"object","title":"FirmUpdate"},"GrantBody":{"properties":{"plan_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan Code"},"monthly_calc_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Monthly Calc Limit"},"monthly_wills_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Monthly Wills Limit"},"note":{"type":"string","title":"Note","default":""}},"type":"object","title":"GrantBody"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"KeyCreate":{"properties":{"key_type":{"type":"string","title":"Key Type","default":"sandbox"},"scopes":{"type":"string","title":"Scopes","default":"faraid:calculate"},"name":{"type":"string","title":"Name","default":""},"allowed_ips":{"type":"string","title":"Allowed Ips","default":""},"rate_limit_per_hour":{"type":"integer","title":"Rate Limit Per Hour","default":0}},"type":"object","title":"KeyCreate"},"KeyUpdate":{"properties":{"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"scopes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scopes"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"allowed_ips":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Allowed Ips"},"rate_limit_per_hour":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rate Limit Per Hour"}},"type":"object","title":"KeyUpdate"},"NoteIn":{"properties":{"text":{"type":"string","title":"Text"}},"type":"object","required":["text"],"title":"NoteIn"},"PushRegisterIn":{"properties":{"token":{"type":"string","title":"Token"},"platform":{"type":"string","title":"Platform","default":"unknown"},"locale":{"type":"string","title":"Locale","default":""}},"type":"object","required":["token"],"title":"PushRegisterIn"},"PushSendIn":{"properties":{"user_id":{"type":"integer","title":"User Id"},"title":{"type":"string","title":"Title"},"body":{"type":"string","title":"Body"},"data":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Data"}},"type":"object","required":["user_id","title","body"],"title":"PushSendIn"},"RoleChange":{"properties":{"role":{"type":"string","title":"Role"}},"type":"object","required":["role"],"title":"RoleChange"},"SohbetIstegi":{"properties":{"soru":{"type":"string","title":"Soru"},"gecmis_sifirla":{"type":"boolean","title":"Gecmis Sifirla","default":false},"calculation_log_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Calculation Log Id"},"calc_id":{"anyOf":[{"type":"integer"},{"type":"string"},{"type":"null"}],"title":"Calc Id"},"misafir_kimlik":{"type":"string","title":"Misafir Kimlik","default":""},"dil":{"type":"string","title":"Dil","default":"tr"},"result":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Result"},"payload":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Payload"},"atlanan":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Atlanan"}},"type":"object","required":["soru"],"title":"SohbetIstegi"},"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"},"WillSaveIn":{"properties":{"group_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Group Id"},"country":{"type":"string","title":"Country","default":""},"scenario":{"type":"string","title":"Scenario","default":""},"title":{"type":"string","title":"Title","default":""},"content_html":{"type":"string","title":"Content Html","default":""},"content_text":{"type":"string","title":"Content Text","default":""},"metadata":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Metadata"},"lawyer_client_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Lawyer Client Id"}},"type":"object","title":"WillSaveIn"}}}}