{"openapi":"3.1.0","info":{"title":"TenderIntel","version":"1.0.0"},"paths":{"/api/v1/tenders":{"get":{"tags":["tenders"],"summary":"List Tenders","description":"Paginated, filterable tender list.","operationId":"list_tenders_api_v1_tenders_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":20,"title":"Size"}},{"name":"sector","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sector"}},{"name":"company_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"published_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Published Date"}},{"name":"deadline_before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Deadline Before"}},{"name":"deadline_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Deadline After"}},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","default":"published_date","title":"Sort By"}},{"name":"sort_dir","in":"query","required":false,"schema":{"type":"string","default":"desc","title":"Sort Dir"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenderListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenders/daily":{"get":{"tags":["tenders"],"summary":"List Daily Tenders","description":"Tenders published today.","operationId":"list_daily_tenders_api_v1_tenders_daily_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":20,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenderListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenders/search":{"get":{"tags":["tenders"],"summary":"Search Tenders","description":"Search across title/summary/requirements using ILIKE.","operationId":"search_tenders_api_v1_tenders_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"description":"Search query","title":"Q"},"description":"Search query"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":20,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenderSearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenders/{tender_id}":{"get":{"tags":["tenders"],"summary":"Get Tender","description":"Single tender detail.","operationId":"get_tender_api_v1_tenders__tender_id__get","parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenderDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/sectors":{"get":{"tags":["tenders"],"summary":"List Sectors","description":"Distinct sector values for filter dropdowns.","operationId":"list_sectors_api_v1_sectors_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"type":"string"},"type":"array","title":"Response List Sectors Api V1 Sectors Get"}}}}}}},"/api/v1/tenders/{tender_id}/highlights":{"get":{"tags":["tenders"],"summary":"Tender Highlights","description":"Get OCR highlight regions for a tender's newspaper scan.","operationId":"tender_highlights_api_v1_tenders__tender_id__highlights_get","parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/companies":{"get":{"tags":["companies"],"summary":"List Companies","description":"List companies with optional search (MySQL LIKE).","operationId":"list_companies_api_v1_companies_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","description":"Fuzzy search by name","default":"","title":"Q"},"description":"Fuzzy search by name"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CompanyBrief"},"title":"Response List Companies Api V1 Companies Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/stats":{"get":{"tags":["stats"],"summary":"Get Dashboard Stats","description":"Aggregated dashboard KPIs.","operationId":"get_dashboard_stats_api_v1_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardStats"}}}}}}},"/api/v1/stats/sectors":{"get":{"tags":["stats"],"summary":"Get Sector Counts","description":"All sector counts for charts.","operationId":"get_sector_counts_api_v1_stats_sectors_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/SectorCount"},"type":"array","title":"Response Get Sector Counts Api V1 Stats Sectors Get"}}}}}}},"/api/v1/stats/timeseries":{"get":{"tags":["stats"],"summary":"Tender Timeseries","description":"Monthly tender counts for time-series charts.","operationId":"tender_timeseries_api_v1_stats_timeseries_get","parameters":[{"name":"months","in":"query","required":false,"schema":{"type":"integer","maximum":48,"minimum":1,"description":"Number of months of history","default":12,"title":"Months"},"description":"Number of months of history"},{"name":"sector","in":"query","required":false,"schema":{"type":"string","default":"","title":"Sector"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TimeSeriesPoint"},"title":"Response Tender Timeseries Api V1 Stats Timeseries Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/stats/top-organizations":{"get":{"tags":["stats"],"summary":"Top Organizations","description":"Top procuring organizations by tender count.","operationId":"top_organizations_api_v1_stats_top_organizations_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":15,"title":"Limit"}},{"name":"sector","in":"query","required":false,"schema":{"type":"string","default":"","title":"Sector"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":3650,"minimum":1,"default":365,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TopOrg"},"title":"Response Top Organizations Api V1 Stats Top Organizations Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/stats/sector-trends":{"get":{"tags":["stats"],"summary":"Sector Trends","description":"Sector growth: current month vs previous month.","operationId":"sector_trends_api_v1_stats_sector_trends_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/SectorTrend"},"type":"array","title":"Response Sector Trends Api V1 Stats Sector Trends Get"}}}}}}},"/api/v1/stats/deadlines":{"get":{"tags":["stats"],"summary":"Deadline Statistics","description":"Deadline duration statistics (published_date to submission_deadline).","operationId":"deadline_statistics_api_v1_stats_deadlines_get","parameters":[{"name":"sector","in":"query","required":false,"schema":{"type":"string","default":"","title":"Sector"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":365,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeadlineStats"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/stats/seasonality":{"get":{"tags":["stats"],"summary":"Seasonality","description":"Average tenders per calendar month (seasonal patterns).","operationId":"seasonality_api_v1_stats_seasonality_get","parameters":[{"name":"sector","in":"query","required":false,"schema":{"type":"string","default":"","title":"Sector"}},{"name":"years","in":"query","required":false,"schema":{"type":"integer","maximum":5,"minimum":1,"default":3,"title":"Years"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SeasonalPattern"},"title":"Response Seasonality Api V1 Stats Seasonality Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/newspapers":{"get":{"tags":["admin-newspapers"],"summary":"List Newspapers","description":"List all configured newspaper sources.","operationId":"list_newspapers_api_v1_admin_newspapers_get","parameters":[{"name":"include_inactive","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Inactive"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/NewspaperOut"},"title":"Response List Newspapers Api V1 Admin Newspapers Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin-newspapers"],"summary":"Add Newspaper","description":"Add a new newspaper source.","operationId":"add_newspaper_api_v1_admin_newspapers_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewspaperCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewspaperOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/newspapers/{newspaper_id}":{"patch":{"tags":["admin-newspapers"],"summary":"Update Newspaper","description":"Update or toggle a newspaper source.","operationId":"update_newspaper_api_v1_admin_newspapers__newspaper_id__patch","parameters":[{"name":"newspaper_id","in":"path","required":true,"schema":{"type":"string","title":"Newspaper Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewspaperUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewspaperOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/register":{"post":{"tags":["auth"],"summary":"Register","description":"Register a new user account.","operationId":"register_api_v1_auth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/login":{"post":{"tags":["auth"],"summary":"Login","description":"Authenticate and return tokens.","operationId":"login_api_v1_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/refresh":{"post":{"tags":["auth"],"summary":"Refresh","description":"Exchange a refresh token for a new access token.","operationId":"refresh_api_v1_auth_refresh_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/logout":{"post":{"tags":["auth"],"summary":"Logout","description":"Logout is client-side (discard the token).","operationId":"logout_api_v1_auth_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/auth/me":{"get":{"tags":["auth"],"summary":"Get Profile","description":"Return the current user's profile.","operationId":"get_profile_api_v1_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfile"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"patch":{"tags":["auth"],"summary":"Update Profile","description":"Update the current user's profile fields.","operationId":"update_profile_api_v1_auth_me_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfileUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfile"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/auth/change-password":{"post":{"tags":["auth"],"summary":"Change Password","description":"Change password (authenticated).","operationId":"change_password_api_v1_auth_change_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePasswordRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/auth/forgot-password":{"post":{"tags":["auth"],"summary":"Forgot Password","description":"Send password reset token. In production, email the token.\nFor now, returns the token directly (dev mode).","operationId":"forgot_password_api_v1_auth_forgot_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgotPasswordRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/reset-password":{"post":{"tags":["auth"],"summary":"Reset Password","description":"Reset password using a valid reset token.","operationId":"reset_password_api_v1_auth_reset_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetPasswordRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/verify-email":{"post":{"tags":["auth"],"summary":"Verify Email","description":"Verify a user's email address using the verification token.","operationId":"verify_email_api_v1_auth_verify_email_post","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/resend-verification":{"post":{"tags":["auth"],"summary":"Resend Verification","description":"Resend email verification link.","operationId":"resend_verification_api_v1_auth_resend_verification_post","parameters":[{"name":"email","in":"query","required":true,"schema":{"type":"string","title":"Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/alerts":{"get":{"tags":["alerts"],"summary":"List Alerts","description":"List all alerts for the current user.","operationId":"list_alerts_api_v1_alerts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AlertOut"},"type":"array","title":"Response List Alerts Api V1 Alerts Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["alerts"],"summary":"Create Alert","description":"Create a new alert for the current user.","operationId":"create_alert_api_v1_alerts_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/alerts/{alert_id}":{"get":{"tags":["alerts"],"summary":"Get Alert","description":"Get a single alert.","operationId":"get_alert_api_v1_alerts__alert_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"alert_id","in":"path","required":true,"schema":{"type":"string","title":"Alert Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["alerts"],"summary":"Update Alert","description":"Update an alert.","operationId":"update_alert_api_v1_alerts__alert_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"alert_id","in":"path","required":true,"schema":{"type":"string","title":"Alert Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["alerts"],"summary":"Delete Alert","description":"Delete an alert.","operationId":"delete_alert_api_v1_alerts__alert_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"alert_id","in":"path","required":true,"schema":{"type":"string","title":"Alert Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/alerts/{alert_id}/toggle":{"post":{"tags":["alerts"],"summary":"Toggle Alert","description":"Toggle alert active/inactive.","operationId":"toggle_alert_api_v1_alerts__alert_id__toggle_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"alert_id","in":"path","required":true,"schema":{"type":"string","title":"Alert Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notifications":{"get":{"tags":["alerts"],"summary":"List Notifications","description":"List notifications for the current user.","operationId":"list_notifications_api_v1_notifications_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":20,"title":"Size"}},{"name":"unread_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Unread Only"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notifications/unread-count":{"get":{"tags":["alerts"],"summary":"Unread Count","description":"Get just the unread notification count (lightweight, for polling).","operationId":"unread_count_api_v1_notifications_unread_count_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/notifications/{notification_id}/read":{"post":{"tags":["alerts"],"summary":"Mark Read","description":"Mark a single notification as read.","operationId":"mark_read_api_v1_notifications__notification_id__read_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"notification_id","in":"path","required":true,"schema":{"type":"string","title":"Notification Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notifications/read-all":{"post":{"tags":["alerts"],"summary":"Mark All Read","description":"Mark all notifications as read.","operationId":"mark_all_read_api_v1_notifications_read_all_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/company-profile":{"get":{"tags":["match"],"summary":"Get Profile","description":"Get current user's company profile.","operationId":"get_profile_api_v1_company_profile_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyProfileOut"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["match"],"summary":"Create Profile","description":"Create a company capability profile.","operationId":"create_profile_api_v1_company_profile_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyProfileCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyProfileOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"patch":{"tags":["match"],"summary":"Update Profile","description":"Update company profile.","operationId":"update_profile_api_v1_company_profile_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyProfileUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyProfileOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/match/{tender_id}":{"get":{"tags":["match"],"summary":"Match Tender","description":"Score a specific tender against the user's company profile.","operationId":"match_tender_api_v1_match__tender_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenderMatchOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/match":{"get":{"tags":["match"],"summary":"Match Top Tenders","description":"Score all active tenders against the user's profile, return top matches.","operationId":"match_top_tenders_api_v1_match_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":20,"title":"Limit"}},{"name":"sector","in":"query","required":false,"schema":{"type":"string","default":"","title":"Sector"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TenderMatchOut"},"title":"Response Match Top Tenders Api V1 Match Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/similar/{tender_id}":{"get":{"tags":["match"],"summary":"Similar Tenders","description":"Find tenders similar to a given tender using multi-dimensional scoring.","operationId":"similar_tenders_api_v1_similar__tender_id__get","parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":20,"minimum":1,"default":6,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimilarTendersResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/subscription/plans":{"get":{"tags":["subscription"],"summary":"List Plans","description":"List all available subscription plans.","operationId":"list_plans_api_v1_subscription_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PlanOut"},"type":"array","title":"Response List Plans Api V1 Subscription Plans Get"}}}}}}},"/api/v1/subscription/me":{"get":{"tags":["subscription"],"summary":"My Subscription","description":"Get current user's subscription status and usage.","operationId":"my_subscription_api_v1_subscription_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionStatus"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/subscription/check-usage/{feature}":{"post":{"tags":["subscription"],"summary":"Check Usage","description":"Check if user can access a feature, and increment usage counter.","operationId":"check_usage_api_v1_subscription_check_usage__feature__post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"feature","in":"path","required":true,"schema":{"type":"string","title":"Feature"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/subscription/create-checkout":{"post":{"tags":["subscription"],"summary":"Create Checkout Session","description":"Create a Stripe Checkout session and return the redirect URL.","operationId":"create_checkout_session_api_v1_subscription_create_checkout_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/subscription/stripe-webhook":{"post":{"tags":["subscription"],"summary":"Stripe Webhook","description":"Stripe webhook handler — verifies signature and updates subscription on payment.","operationId":"stripe_webhook_api_v1_subscription_stripe_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/workspace/saved":{"get":{"tags":["workspace"],"summary":"List Saved","description":"List saved/bookmarked tenders for current user.","operationId":"list_saved_api_v1_workspace_saved_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":20,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SavedTenderOut"},"title":"Response List Saved Api V1 Workspace Saved Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/workspace/saved/{tender_id}":{"post":{"tags":["workspace"],"summary":"Save Tender","description":"Save/bookmark a tender.","operationId":"save_tender_api_v1_workspace_saved__tender_id__post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}}],"requestBody":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SaveTenderIn"}],"default":{},"title":"Data"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedTenderOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["workspace"],"summary":"Unsave Tender","description":"Remove a saved tender.","operationId":"unsave_tender_api_v1_workspace_saved__tender_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["workspace"],"summary":"Is Saved","description":"Check if a tender is saved by the current user.","operationId":"is_saved_api_v1_workspace_saved__tender_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/workspace/pipeline":{"get":{"tags":["workspace"],"summary":"List Workflows","description":"List tenders in the user's workflow pipeline.","operationId":"list_workflows_api_v1_workspace_pipeline_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"status_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Filter"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WorkflowOut"},"title":"Response List Workflows Api V1 Workspace Pipeline Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/workspace/pipeline/{tender_id}":{"get":{"tags":["workspace"],"summary":"Get Workflow","description":"Get workflow status for a specific tender.","operationId":"get_workflow_api_v1_workspace_pipeline__tender_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["workspace"],"summary":"Add To Pipeline","description":"Add a tender to the workflow pipeline (default: interested).","operationId":"add_to_pipeline_api_v1_workspace_pipeline__tender_id__post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["workspace"],"summary":"Update Workflow","description":"Update workflow status or metadata.","operationId":"update_workflow_api_v1_workspace_pipeline__tender_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["workspace"],"summary":"Remove From Pipeline","description":"Remove a tender from the workflow pipeline.","operationId":"remove_from_pipeline_api_v1_workspace_pipeline__tender_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/workspace/pipeline/stats":{"get":{"tags":["workspace"],"summary":"Pipeline Stats","description":"Get pipeline summary counts by status.","operationId":"pipeline_stats_api_v1_workspace_pipeline_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/workspace/notes/{tender_id}":{"get":{"tags":["workspace"],"summary":"List Notes","description":"List notes for a tender (user's own notes).","operationId":"list_notes_api_v1_workspace_notes__tender_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/NoteOut"},"title":"Response List Notes Api V1 Workspace Notes  Tender Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["workspace"],"summary":"Add Note","description":"Add a note to a tender.","operationId":"add_note_api_v1_workspace_notes__tender_id__post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/workspace/notes/{note_id}":{"patch":{"tags":["workspace"],"summary":"Update Note","description":"Update a note.","operationId":"update_note_api_v1_workspace_notes__note_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"note_id","in":"path","required":true,"schema":{"type":"string","title":"Note Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["workspace"],"summary":"Delete Note","description":"Delete a note.","operationId":"delete_note_api_v1_workspace_notes__note_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"note_id","in":"path","required":true,"schema":{"type":"string","title":"Note Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/workspace/comments/{tender_id}":{"get":{"tags":["workspace"],"summary":"List Comments","description":"Get threaded comments for a tender.","operationId":"list_comments_api_v1_workspace_comments__tender_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CommentOut"},"title":"Response List Comments Api V1 Workspace Comments  Tender Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["workspace"],"summary":"Create Comment","description":"Add a comment (top-level or reply).","operationId":"create_comment_api_v1_workspace_comments__tender_id__post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/workspace/comments/{tender_id}/{comment_id}":{"patch":{"tags":["workspace"],"summary":"Update Comment","description":"Edit a comment (owner only).","operationId":"update_comment_api_v1_workspace_comments__tender_id___comment_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}},{"name":"comment_id","in":"path","required":true,"schema":{"type":"string","title":"Comment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["workspace"],"summary":"Delete Comment","description":"Delete a comment (owner or admin).","operationId":"delete_comment_api_v1_workspace_comments__tender_id___comment_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}},{"name":"comment_id","in":"path","required":true,"schema":{"type":"string","title":"Comment Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/search/nl":{"get":{"tags":["nl-search"],"summary":"Nl Search","description":"Natural language tender search.\nExample: \"Solar tenders in Sindh\", \"PEC C4 electrical projects\", \"Medical equipment procurement\"","operationId":"nl_search_api_v1_search_nl_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"description":"Natural language query","title":"Q"},"description":"Natural language query"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":20,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenderSearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/export/tenders.csv":{"get":{"tags":["reports"],"summary":"Export Tenders Csv","description":"Export tender data as CSV.","operationId":"export_tenders_csv_api_v1_export_tenders_csv_get","parameters":[{"name":"sector","in":"query","required":false,"schema":{"type":"string","default":"","title":"Sector"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"","title":"Status"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":3650,"minimum":1,"default":90,"title":"Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":1000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/reports/summary":{"get":{"tags":["reports"],"summary":"Report Summary","description":"Render an HTML procurement intelligence summary report.","operationId":"report_summary_api_v1_reports_summary_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/export/tenders.pdf":{"get":{"tags":["reports"],"summary":"Export Tenders Pdf","description":"Export tender data as a formatted PDF report.","operationId":"export_tenders_pdf_api_v1_export_tenders_pdf_get","parameters":[{"name":"sector","in":"query","required":false,"schema":{"type":"string","default":"","title":"Sector"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":3650,"minimum":1,"default":90,"title":"Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/dashboard":{"get":{"tags":["admin"],"summary":"Admin Dashboard","description":"Admin overview: counts, health, and pipeline status.","operationId":"admin_dashboard_api_v1_admin_dashboard_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminDashboardStats"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/admin/failed-scrapes":{"get":{"tags":["admin"],"summary":"Failed Scrapes","description":"List recent failed or partial scrapes.","operationId":"failed_scrapes_api_v1_admin_failed_scrapes_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":7,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FailedScrapeOut"},"title":"Response Failed Scrapes Api V1 Admin Failed Scrapes Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/newspaper-health":{"get":{"tags":["admin"],"summary":"Newspaper Health","description":"Health report for all newspapers: success rate, OCR confidence, last scrape.","operationId":"newspaper_health_api_v1_admin_newspaper_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/NewspaperHealthOut"},"type":"array","title":"Response Newspaper Health Api V1 Admin Newspaper Health Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/admin/review-queue/low-confidence":{"get":{"tags":["admin"],"summary":"Low Confidence Tenders","description":"List tenders with low OCR confidence or unverified status.","operationId":"low_confidence_tenders_api_v1_admin_review_queue_low_confidence_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LowConfidenceTenderOut"},"title":"Response Low Confidence Tenders Api V1 Admin Review Queue Low Confidence Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/review-queue/stats":{"get":{"tags":["admin"],"summary":"Review Queue Stats","description":"Get review queue summary counts.","operationId":"review_queue_stats_api_v1_admin_review_queue_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueueStats"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/admin/review-queue/{tender_id}/action":{"post":{"tags":["admin"],"summary":"Review Action","description":"Approve, reject, edit, or merge a tender in the review queue.","operationId":"review_action_api_v1_admin_review_queue__tender_id__action_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewActionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/pipeline-status":{"get":{"tags":["admin"],"summary":"Pipeline Status","description":"Real-time pipeline monitoring: recent scrape activity, queue depth.","operationId":"pipeline_status_api_v1_admin_pipeline_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/admin/panel":{"get":{"tags":["admin"],"summary":"Admin Panel","description":"Admin panel HTML page.","operationId":"admin_panel_api_v1_admin_panel_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/analytics/track":{"post":{"tags":["analytics"],"summary":"Track Event","description":"Track a usage event (called from frontend JS or server-side).\nLightweight — fire and forget.","operationId":"track_event_api_v1_analytics_track_post","parameters":[{"name":"event_type","in":"query","required":true,"schema":{"type":"string","description":"page_view, search, tender_view, export, register, login","title":"Event Type"},"description":"page_view, search, tender_view, export, register, login"},{"name":"path","in":"query","required":false,"schema":{"type":"string","default":"","title":"Path"}},{"name":"tender_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Tender Id"}},{"name":"metadata","in":"query","required":false,"schema":{"type":"string","default":"{}","title":"Metadata"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/analytics/summary":{"get":{"tags":["analytics"],"summary":"Analytics Summary","description":"Aggregated analytics for the admin dashboard.","operationId":"analytics_summary_api_v1_analytics_summary_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":7,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyticsSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/analytics/events":{"get":{"tags":["analytics"],"summary":"Event Breakdown","description":"Event type breakdown for a given period.","operationId":"event_breakdown_api_v1_analytics_events_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EventCountOut"},"title":"Response Event Breakdown Api V1 Analytics Events Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/analytics/top-tenders":{"get":{"tags":["analytics"],"summary":"Top Viewed Tenders","description":"Most viewed tenders in the given period.","operationId":"top_viewed_tenders_api_v1_analytics_top_tenders_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":7,"title":"Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TenderViewOut"},"title":"Response Top Viewed Tenders Api V1 Analytics Top Tenders Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/analytics/retention":{"get":{"tags":["analytics"],"summary":"User Retention","description":"Daily returning vs new user counts.","operationId":"user_retention_api_v1_analytics_retention_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/ai/bid-assistant/{tender_id}":{"get":{"tags":["ai-features"],"summary":"Bid Assistant","operationId":"bid_assistant_api_v1_ai_bid_assistant__tender_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BidAssistantResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/ai/advisor/{tender_id}":{"get":{"tags":["ai-features"],"summary":"Procurement Advisor","operationId":"procurement_advisor_api_v1_ai_advisor__tender_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcurementAdviceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/ai/chat":{"post":{"tags":["ai-features"],"summary":"Ai Chat","operationId":"ai_chat_api_v1_ai_chat_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/ui/":{"get":{"tags":["ui"],"summary":"Dashboard","operationId":"dashboard_ui__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/ui/tenders":{"get":{"tags":["ui"],"summary":"Tender List","operationId":"tender_list_ui_tenders_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"sector","in":"query","required":false,"schema":{"type":"string","default":"","title":"Sector"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"","title":"Status"}},{"name":"source","in":"query","required":false,"schema":{"type":"string","default":"","title":"Source"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","default":"published_desc","title":"Sort"}},{"name":"date_from","in":"query","required":false,"schema":{"type":"string","default":"","title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"type":"string","default":"","title":"Date To"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ui/tenders/export":{"get":{"tags":["ui"],"summary":"Export Tenders Csv","description":"Download current filtered tender list as CSV.","operationId":"export_tenders_csv_ui_tenders_export_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"sector","in":"query","required":false,"schema":{"type":"string","default":"","title":"Sector"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"","title":"Status"}},{"name":"source","in":"query","required":false,"schema":{"type":"string","default":"","title":"Source"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","default":"published_desc","title":"Sort"}},{"name":"date_from","in":"query","required":false,"schema":{"type":"string","default":"","title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"type":"string","default":"","title":"Date To"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ui/tenders/{tender_id}":{"get":{"tags":["ui"],"summary":"Tender Detail","operationId":"tender_detail_ui_tenders__tender_id__get","parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ui/tenders/{tender_id}/clean-ocr":{"post":{"tags":["ui"],"summary":"Clean Ocr","description":"Run a lightweight LLM pass to reformat raw OCR text into readable prose.","operationId":"clean_ocr_ui_tenders__tender_id__clean_ocr_post","parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ui/tenders/{tender_id}/refine":{"post":{"tags":["ui"],"summary":"Refine Tender","description":"Use LLM to extract structured fields from a tender's messy summary.\nResult is cached in extra_data['refined']; force=true bypasses the cache.","operationId":"refine_tender_ui_tenders__tender_id__refine_post","parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}},{"name":"force","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Force"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ui/tenders/{tender_id}/delete":{"post":{"tags":["ui"],"summary":"Delete Tender","operationId":"delete_tender_ui_tenders__tender_id__delete_post","parameters":[{"name":"tender_id","in":"path","required":true,"schema":{"type":"string","title":"Tender Id"}}],"responses":{"307":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ui/newspapers":{"get":{"tags":["ui"],"summary":"Newspaper List","operationId":"newspaper_list_ui_newspapers_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/ui/scrape":{"get":{"tags":["ui"],"summary":"Scrape Form","operationId":"scrape_form_ui_scrape_get","parameters":[{"name":"newspaper_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Newspaper Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ui/scrape/start":{"post":{"tags":["ui"],"summary":"Start Scrape","description":"Start a background scrape job. Returns job_id immediately.","operationId":"start_scrape_ui_scrape_start_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_start_scrape_ui_scrape_start_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ui/scrape/job/{job_id}":{"get":{"tags":["ui"],"summary":"Scrape Job Status","description":"Poll this endpoint to check scrape job status.","operationId":"scrape_job_status_ui_scrape_job__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ui/scrape/ariba/test-oauth":{"get":{"tags":["ui"],"summary":"Ariba Test Oauth","description":"Quick test: verify SAP Ariba OAuth credentials are working.\nReturns ok=true and a token prefix, or ok=false with an error message.","operationId":"ariba_test_oauth_ui_scrape_ariba_test_oauth_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/ui/scrape/start-all":{"post":{"tags":["ui"],"summary":"Start Scrape All","description":"Start a sequential batch scrape across all active newspapers.","operationId":"start_scrape_all_ui_scrape_start_all_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_start_scrape_all_ui_scrape_start_all_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ui/scrape/batch/{batch_id}":{"get":{"tags":["ui"],"summary":"Scrape Batch Status","description":"Poll this endpoint to check a batch scrape's progress.","operationId":"scrape_batch_status_ui_scrape_batch__batch_id__get","parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ui/scrape/start-portal":{"post":{"tags":["ui"],"summary":"Start Portal Scrape","description":"Start a single-portal scrape (PPRA Federal / Punjab PPRA / WAPDA / NHA / …).","operationId":"start_portal_scrape_ui_scrape_start_portal_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_start_portal_scrape_ui_scrape_start_portal_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ui/scrape/start-portal-batch":{"post":{"tags":["ui"],"summary":"Start Portal Batch","description":"Start a batch portal scrape. `group` is one of: ppra, govt, all.","operationId":"start_portal_batch_ui_scrape_start_portal_batch_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_start_portal_batch_ui_scrape_start_portal_batch_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ui/analytics":{"get":{"tags":["ui"],"summary":"Analytics Dashboard","description":"Historical analytics: timeseries, top orgs, sector trends, seasonal patterns.","operationId":"analytics_dashboard_ui_analytics_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/ui/ariba":{"get":{"tags":["ui"],"summary":"Ariba Page","operationId":"ariba_page_ui_ariba_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/ui/ariba/sync":{"post":{"tags":["ui"],"summary":"Ariba Sync Start","operationId":"ariba_sync_start_ui_ariba_sync_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_ariba_sync_start_ui_ariba_sync_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ui/ariba/job/{job_id}":{"get":{"tags":["ui"],"summary":"Ariba Job Status","operationId":"ariba_job_status_ui_ariba_job__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ui/ariba/reassign-buyers":{"post":{"tags":["ui"],"summary":"Ariba Reassign Buyers","description":"Re-run buyer extraction on existing Ariba tenders.\nTargets:\n  - company.name == \"Unknown Buyer\" / \"Unknown Organization\"\n  - company.name looks like a person name (e.g. \"Wamic Hassan Kazmi\")\nUses contact_info + summary + extra_data.ariba_link to recover the real buyer.","operationId":"ariba_reassign_buyers_ui_ariba_reassign_buyers_post","parameters":[{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Dry Run"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ui/ariba/cleanup-junk":{"post":{"tags":["ui"],"summary":"Ariba Cleanup Junk","description":"Find Ariba tenders whose title/summary match SAP system-email patterns\n(account housekeeping, password resets, registration confirmations, etc.)\n— not real tenders. Returns deletion preview + executes delete unless dry_run.","operationId":"ariba_cleanup_junk_ui_ariba_cleanup_junk_post","parameters":[{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Dry Run"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ui/ariba/email-sync":{"post":{"tags":["ui"],"summary":"Ariba Email Sync Start","description":"Start an email-based Ariba sync — reads notifications from the mailbox.","operationId":"ariba_email_sync_start_ui_ariba_email_sync_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/ui/faq":{"get":{"tags":["ui"],"summary":"Faq","operationId":"faq_ui_faq_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/ui/deadlines":{"get":{"tags":["ui"],"summary":"Deadline Alerts","operationId":"deadline_alerts_ui_deadlines_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/ui/upgrade":{"get":{"tags":["ui"],"summary":"Upgrade Page","description":"Subscription upgrade / billing page.","operationId":"upgrade_page_ui_upgrade_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/ui/alerts":{"get":{"tags":["ui"],"summary":"Smart Alerts Page","description":"Smart alert management page — all interactivity is client-side JS.","operationId":"smart_alerts_page_ui_alerts_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/ui/notifications":{"get":{"tags":["ui"],"summary":"Notifications Page","description":"Notification history page.","operationId":"notifications_page_ui_notifications_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/ui/login":{"get":{"tags":["auth-ui"],"summary":"Login Page","operationId":"login_page_ui_login_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/ui/register":{"get":{"tags":["auth-ui"],"summary":"Register Page","operationId":"register_page_ui_register_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/ui/forgot-password":{"get":{"tags":["auth-ui"],"summary":"Forgot Password Page","operationId":"forgot_password_page_ui_forgot_password_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/ui/reset-password":{"get":{"tags":["auth-ui"],"summary":"Reset Password Page","operationId":"reset_password_page_ui_reset_password_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"type":"string","default":"","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ui/profile":{"get":{"tags":["auth-ui"],"summary":"Profile Page","operationId":"profile_page_ui_profile_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/ui/verify-email":{"get":{"tags":["auth-ui"],"summary":"Verify Email Page","description":"Handle verification link clicks.","operationId":"verify_email_page_ui_verify_email_get","parameters":[{"name":"token","in":"query","required":false,"schema":{"type":"string","default":"","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/landing":{"get":{"tags":["public"],"summary":"Landing Page","description":"Marketing landing page.","operationId":"landing_page_landing_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/":{"get":{"tags":["public"],"summary":"Landing Page","description":"Marketing landing page.","operationId":"landing_page__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/pricing":{"get":{"tags":["public"],"summary":"Pricing Page","description":"Pricing page.","operationId":"pricing_page_pricing_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/faq":{"get":{"tags":["public"],"summary":"Faq Public","description":"Public FAQ page — no auth required.","operationId":"faq_public_faq_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/contact":{"get":{"tags":["public"],"summary":"Contact Page","description":"Contact form page.","operationId":"contact_page_contact_get","parameters":[{"name":"success","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Success"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["public"],"summary":"Contact Submit","description":"Handle contact form submission.","operationId":"contact_submit_contact_post","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_contact_submit_contact_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health":{"get":{"summary":"Health Check","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/metrics":{"get":{"summary":"Prometheus Metrics","description":"Prometheus-compatible metrics endpoint for monitoring.","operationId":"prometheus_metrics_metrics_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}}},"components":{"schemas":{"AdminDashboardStats":{"properties":{"total_tenders":{"type":"integer","title":"Total Tenders"},"total_active":{"type":"integer","title":"Total Active"},"total_expired":{"type":"integer","title":"Total Expired"},"total_unverified":{"type":"integer","title":"Total Unverified"},"total_users":{"type":"integer","title":"Total Users"},"total_newspapers":{"type":"integer","title":"Total Newspapers"},"total_active_newspapers":{"type":"integer","title":"Total Active Newspapers"},"total_companies":{"type":"integer","title":"Total Companies"},"tenders_today":{"type":"integer","title":"Tenders Today"},"avg_ocr_confidence":{"type":"number","title":"Avg Ocr Confidence"}},"type":"object","required":["total_tenders","total_active","total_expired","total_unverified","total_users","total_newspapers","total_active_newspapers","total_companies","tenders_today","avg_ocr_confidence"],"title":"AdminDashboardStats"},"AlertCreate":{"properties":{"name":{"type":"string","maxLength":200,"title":"Name","default":"My Alert"},"keywords":{"items":{"type":"string"},"type":"array","title":"Keywords"},"sectors":{"items":{"type":"string"},"type":"array","title":"Sectors"},"company_ids":{"items":{"type":"string"},"type":"array","title":"Company Ids"},"deadline_window_days":{"anyOf":[{"type":"integer","maximum":90.0,"minimum":1.0},{"type":"null"}],"title":"Deadline Window Days"},"delivery_methods":{"items":{"type":"string"},"type":"array","title":"Delivery Methods","default":["in_app"]},"delivery_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Delivery Email"}},"type":"object","title":"AlertCreate"},"AlertOut":{"properties":{"id":{"type":"string","title":"Id"},"user_id":{"type":"string","title":"User Id"},"name":{"type":"string","title":"Name"},"keywords":{"items":{"type":"string"},"type":"array","title":"Keywords"},"sectors":{"items":{"type":"string"},"type":"array","title":"Sectors"},"company_ids":{"items":{"type":"string"},"type":"array","title":"Company Ids"},"deadline_window_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Deadline Window Days"},"delivery_methods":{"items":{"type":"string"},"type":"array","title":"Delivery Methods"},"delivery_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Delivery Email"},"is_active":{"type":"boolean","title":"Is Active"},"match_count":{"type":"integer","title":"Match Count","default":0},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","user_id","name","keywords","sectors","company_ids","delivery_methods","is_active","created_at","updated_at"],"title":"AlertOut"},"AlertUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"keywords":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Keywords"},"sectors":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Sectors"},"company_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Company Ids"},"deadline_window_days":{"anyOf":[{"type":"integer","maximum":90.0,"minimum":1.0},{"type":"null"}],"title":"Deadline Window Days"},"delivery_methods":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Delivery Methods"},"delivery_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Delivery Email"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"AlertUpdate"},"AnalyticsSummary":{"properties":{"total_events":{"type":"integer","title":"Total Events"},"today_events":{"type":"integer","title":"Today Events"},"unique_users_today":{"type":"integer","title":"Unique Users Today"},"top_events":{"items":{"$ref":"#/components/schemas/EventCountOut"},"type":"array","title":"Top Events"},"daily_active_users":{"items":{"$ref":"#/components/schemas/DailyActiveUsersOut"},"type":"array","title":"Daily Active Users"},"most_viewed_tenders":{"items":{"$ref":"#/components/schemas/TenderViewOut"},"type":"array","title":"Most Viewed Tenders"}},"type":"object","required":["total_events","today_events","unique_users_today","top_events","daily_active_users","most_viewed_tenders"],"title":"AnalyticsSummary"},"BidAssistantResponse":{"properties":{"tender_id":{"type":"string","title":"Tender Id"},"tender_title":{"type":"string","title":"Tender Title"},"generated_at":{"type":"string","title":"Generated At"},"checklist":{"items":{"$ref":"#/components/schemas/BidChecklistItem"},"type":"array","title":"Checklist"},"compliance_review":{"items":{"$ref":"#/components/schemas/ComplianceReview"},"type":"array","title":"Compliance Review"},"proposal_outline":{"items":{"$ref":"#/components/schemas/ProposalOutline"},"type":"array","title":"Proposal Outline"},"missing_documents":{"items":{"type":"string"},"type":"array","title":"Missing Documents"},"estimated_complexity":{"type":"string","title":"Estimated Complexity"},"ai_notes":{"type":"string","title":"Ai Notes"}},"type":"object","required":["tender_id","tender_title","generated_at","checklist","compliance_review","proposal_outline","missing_documents","estimated_complexity","ai_notes"],"title":"BidAssistantResponse"},"BidChecklistItem":{"properties":{"task":{"type":"string","title":"Task"},"category":{"type":"string","title":"Category"},"completed":{"type":"boolean","title":"Completed","default":false}},"type":"object","required":["task","category"],"title":"BidChecklistItem"},"Body_ariba_sync_start_ui_ariba_sync_post":{"properties":{"target_date":{"type":"string","title":"Target Date"}},"type":"object","required":["target_date"],"title":"Body_ariba_sync_start_ui_ariba_sync_post"},"Body_contact_submit_contact_post":{"properties":{"name":{"type":"string","title":"Name"},"email":{"type":"string","title":"Email"},"company":{"type":"string","title":"Company","default":""},"message":{"type":"string","title":"Message"}},"type":"object","required":["name","email","message"],"title":"Body_contact_submit_contact_post"},"Body_start_portal_batch_ui_scrape_start_portal_batch_post":{"properties":{"group":{"type":"string","title":"Group"},"target_date":{"type":"string","title":"Target Date"}},"type":"object","required":["group","target_date"],"title":"Body_start_portal_batch_ui_scrape_start_portal_batch_post"},"Body_start_portal_scrape_ui_scrape_start_portal_post":{"properties":{"portal_id":{"type":"string","title":"Portal Id"},"target_date":{"type":"string","title":"Target Date"}},"type":"object","required":["portal_id","target_date"],"title":"Body_start_portal_scrape_ui_scrape_start_portal_post"},"Body_start_scrape_all_ui_scrape_start_all_post":{"properties":{"target_date":{"type":"string","title":"Target Date"}},"type":"object","required":["target_date"],"title":"Body_start_scrape_all_ui_scrape_start_all_post"},"Body_start_scrape_ui_scrape_start_post":{"properties":{"newspaper_id":{"type":"string","title":"Newspaper Id"},"target_date":{"type":"string","title":"Target Date"}},"type":"object","required":["newspaper_id","target_date"],"title":"Body_start_scrape_ui_scrape_start_post"},"ChangePasswordRequest":{"properties":{"current_password":{"type":"string","title":"Current Password"},"new_password":{"type":"string","maxLength":128,"minLength":8,"title":"New Password"}},"type":"object","required":["current_password","new_password"],"title":"ChangePasswordRequest"},"ChatRequest":{"properties":{"query":{"type":"string","title":"Query"},"tender_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tender Id"}},"type":"object","required":["query"],"title":"ChatRequest"},"ChatResponse":{"properties":{"answer":{"type":"string","title":"Answer"},"sources_used":{"items":{"type":"string"},"type":"array","title":"Sources Used"}},"type":"object","required":["answer","sources_used"],"title":"ChatResponse"},"CheckoutRequest":{"properties":{"plan":{"type":"string","title":"Plan"},"billing":{"type":"string","title":"Billing"}},"type":"object","required":["plan","billing"],"title":"CheckoutRequest"},"CommentIn":{"properties":{"content":{"type":"string","maxLength":5000,"minLength":1,"title":"Content"},"parent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Id"}},"type":"object","required":["content"],"title":"CommentIn"},"CommentOut":{"properties":{"id":{"type":"string","title":"Id"},"user_id":{"type":"string","title":"User Id"},"user_name":{"type":"string","title":"User Name"},"tender_id":{"type":"string","title":"Tender Id"},"parent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Id"},"content":{"type":"string","title":"Content"},"mentioned_user_ids":{"items":{"type":"string"},"type":"array","title":"Mentioned User Ids","default":[]},"is_edited":{"type":"boolean","title":"Is Edited"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"replies":{"items":{"$ref":"#/components/schemas/CommentOut"},"type":"array","title":"Replies","default":[]}},"type":"object","required":["id","user_id","user_name","tender_id","content","is_edited","created_at","updated_at"],"title":"CommentOut"},"CompanyBrief":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sector"}},"type":"object","required":["id","name","slug"],"title":"CompanyBrief"},"CompanyProfileCreate":{"properties":{"sectors":{"items":{"type":"string"},"type":"array","title":"Sectors"},"certifications":{"items":{"type":"string"},"type":"array","title":"Certifications"},"pec_categories":{"items":{"type":"string"},"type":"array","title":"Pec Categories"},"capabilities":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Capabilities"},"geographic_regions":{"items":{"type":"string"},"type":"array","title":"Geographic Regions"},"years_of_experience":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Years Of Experience"}},"type":"object","title":"CompanyProfileCreate"},"CompanyProfileOut":{"properties":{"id":{"type":"string","title":"Id"},"user_id":{"type":"string","title":"User Id"},"sectors":{"items":{"type":"string"},"type":"array","title":"Sectors"},"certifications":{"items":{"type":"string"},"type":"array","title":"Certifications"},"pec_categories":{"items":{"type":"string"},"type":"array","title":"Pec Categories"},"capabilities":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Capabilities"},"geographic_regions":{"items":{"type":"string"},"type":"array","title":"Geographic Regions"},"years_of_experience":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Years Of Experience"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","user_id","sectors","certifications","pec_categories","geographic_regions","is_active","created_at","updated_at"],"title":"CompanyProfileOut"},"CompanyProfileUpdate":{"properties":{"sectors":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Sectors"},"certifications":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Certifications"},"pec_categories":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Pec Categories"},"capabilities":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Capabilities"},"geographic_regions":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Geographic Regions"},"years_of_experience":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Years Of Experience"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"CompanyProfileUpdate"},"ComplianceReview":{"properties":{"requirement":{"type":"string","title":"Requirement"},"status":{"type":"string","title":"Status"},"detail":{"type":"string","title":"Detail"}},"type":"object","required":["requirement","status","detail"],"title":"ComplianceReview"},"DailyActiveUsersOut":{"properties":{"date":{"type":"string","title":"Date"},"users":{"type":"integer","title":"Users"}},"type":"object","required":["date","users"],"title":"DailyActiveUsersOut"},"DashboardStats":{"properties":{"total_active":{"type":"integer","title":"Total Active"},"closing_soon":{"type":"integer","title":"Closing Soon"},"expired":{"type":"integer","title":"Expired"},"today_new":{"type":"integer","title":"Today New"},"total_tenders":{"type":"integer","title":"Total Tenders"},"sectors":{"additionalProperties":{"type":"integer"},"type":"object","title":"Sectors"}},"type":"object","required":["total_active","closing_soon","expired","today_new","total_tenders","sectors"],"title":"DashboardStats"},"DeadlineStats":{"properties":{"avg_days":{"type":"number","title":"Avg Days"},"median_days":{"type":"number","title":"Median Days"},"fastest_days":{"type":"integer","title":"Fastest Days"},"slowest_days":{"type":"integer","title":"Slowest Days"},"total_with_deadline":{"type":"integer","title":"Total With Deadline"}},"type":"object","required":["avg_days","median_days","fastest_days","slowest_days","total_with_deadline"],"title":"DeadlineStats"},"EventCountOut":{"properties":{"event_type":{"type":"string","title":"Event Type"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["event_type","count"],"title":"EventCountOut"},"FailedScrapeOut":{"properties":{"id":{"type":"string","title":"Id"},"newspaper_name":{"type":"string","title":"Newspaper Name"},"run_date":{"type":"string","title":"Run Date"},"status":{"type":"string","title":"Status"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Ms"}},"type":"object","required":["id","newspaper_name","run_date","status"],"title":"FailedScrapeOut"},"ForgotPasswordRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"}},"type":"object","required":["email"],"title":"ForgotPasswordRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"LoginRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","title":"Password"}},"type":"object","required":["email","password"],"title":"LoginRequest"},"LowConfidenceTenderOut":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"sector":{"type":"string","title":"Sector"},"confidence":{"type":"number","title":"Confidence"},"newspaper_name":{"type":"string","title":"Newspaper Name"},"published_date":{"type":"string","title":"Published Date"},"needs_review":{"type":"boolean","title":"Needs Review"}},"type":"object","required":["id","title","sector","confidence","newspaper_name","published_date","needs_review"],"title":"LowConfidenceTenderOut"},"MatchBreakdownItem":{"properties":{"criterion":{"type":"string","title":"Criterion"},"score":{"type":"integer","title":"Score"},"max":{"type":"integer","title":"Max"},"detail":{"type":"string","title":"Detail"}},"type":"object","required":["criterion","score","max","detail"],"title":"MatchBreakdownItem"},"NewspaperBrief":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"}},"type":"object","required":["id","name"],"title":"NewspaperBrief"},"NewspaperCreate":{"properties":{"name":{"type":"string","maxLength":150,"minLength":1,"title":"Name"},"base_url":{"type":"string","title":"Base Url"},"e_paper_pattern":{"type":"string","title":"E Paper Pattern"},"language":{"type":"string","title":"Language","default":"en"},"scraper_module":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scraper Module"}},"type":"object","required":["name","base_url","e_paper_pattern"],"title":"NewspaperCreate"},"NewspaperHealthOut":{"properties":{"name":{"type":"string","title":"Name"},"language":{"type":"string","title":"Language"},"is_active":{"type":"boolean","title":"Is Active"},"total_scrapes":{"type":"integer","title":"Total Scrapes"},"success_rate":{"type":"number","title":"Success Rate"},"avg_ocr_confidence":{"type":"number","title":"Avg Ocr Confidence"},"last_scrape_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Scrape Date"},"last_scrape_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Scrape Status"}},"type":"object","required":["name","language","is_active","total_scrapes","success_rate","avg_ocr_confidence"],"title":"NewspaperHealthOut"},"NewspaperOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"base_url":{"type":"string","title":"Base Url"},"e_paper_pattern":{"type":"string","title":"E Paper Pattern"},"language":{"type":"string","title":"Language"},"is_active":{"type":"boolean","title":"Is Active"},"scraper_module":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scraper Module"}},"type":"object","required":["id","name","base_url","e_paper_pattern","language","is_active"],"title":"NewspaperOut"},"NewspaperUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"base_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Base Url"},"e_paper_pattern":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"E Paper Pattern"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"scraper_module":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scraper Module"}},"type":"object","title":"NewspaperUpdate"},"NoteIn":{"properties":{"content":{"type":"string","maxLength":5000,"minLength":1,"title":"Content"},"is_pinned":{"type":"boolean","title":"Is Pinned","default":false}},"type":"object","required":["content"],"title":"NoteIn"},"NoteOut":{"properties":{"id":{"type":"string","title":"Id"},"tender_id":{"type":"string","title":"Tender Id"},"content":{"type":"string","title":"Content"},"is_pinned":{"type":"boolean","title":"Is Pinned"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","tender_id","content","is_pinned","created_at","updated_at"],"title":"NoteOut"},"NotificationListResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/NotificationOut"},"type":"array","title":"Data"},"unread_count":{"type":"integer","title":"Unread Count"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["data","unread_count","total"],"title":"NotificationListResponse"},"NotificationOut":{"properties":{"id":{"type":"string","title":"Id"},"type":{"type":"string","title":"Type"},"title":{"type":"string","title":"Title"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"},"tender_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tender Id"},"alert_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Alert Id"},"is_read":{"type":"boolean","title":"Is Read"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","type","title","is_read","created_at"],"title":"NotificationOut"},"PaginationMeta":{"properties":{"page":{"type":"integer","title":"Page"},"size":{"type":"integer","title":"Size"},"total":{"type":"integer","title":"Total"},"total_pages":{"type":"integer","title":"Total Pages"}},"type":"object","required":["page","size","total","total_pages"],"title":"PaginationMeta"},"PlanLimit":{"properties":{"feature":{"type":"string","title":"Feature"},"used":{"type":"integer","title":"Used"},"limit":{"type":"integer","title":"Limit"},"remaining":{"type":"integer","title":"Remaining"}},"type":"object","required":["feature","used","limit","remaining"],"title":"PlanLimit"},"PlanOut":{"properties":{"plan":{"type":"string","title":"Plan"},"name":{"type":"string","title":"Name"},"price_monthly":{"type":"integer","title":"Price Monthly"},"price_yearly":{"type":"integer","title":"Price Yearly"},"features":{"items":{"type":"string"},"type":"array","title":"Features"},"limits":{"additionalProperties":{"type":"integer"},"type":"object","title":"Limits"}},"type":"object","required":["plan","name","price_monthly","price_yearly","features","limits"],"title":"PlanOut"},"ProcurementAdviceResponse":{"properties":{"tender_id":{"type":"string","title":"Tender Id"},"tender_title":{"type":"string","title":"Tender Title"},"competition_assessment":{"type":"string","title":"Competition Assessment"},"risk_level":{"type":"string","title":"Risk Level"},"historical_context":{"type":"string","title":"Historical Context"},"recommended_for":{"type":"string","title":"Recommended For"},"key_insights":{"items":{"type":"string"},"type":"array","title":"Key Insights"}},"type":"object","required":["tender_id","tender_title","competition_assessment","risk_level","historical_context","recommended_for","key_insights"],"title":"ProcurementAdviceResponse"},"ProposalOutline":{"properties":{"section":{"type":"string","title":"Section"},"content_suggestions":{"type":"string","title":"Content Suggestions"}},"type":"object","required":["section","content_suggestions"],"title":"ProposalOutline"},"QueueStats":{"properties":{"low_confidence":{"type":"integer","title":"Low Confidence"},"duplicates":{"type":"integer","title":"Duplicates"},"missing_deadline":{"type":"integer","title":"Missing Deadline"},"total_in_queue":{"type":"integer","title":"Total In Queue"}},"type":"object","required":["low_confidence","duplicates","missing_deadline","total_in_queue"],"title":"QueueStats"},"RefreshRequest":{"properties":{"refresh_token":{"type":"string","title":"Refresh Token"}},"type":"object","required":["refresh_token"],"title":"RefreshRequest"},"RegisterRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","maxLength":128,"minLength":8,"title":"Password"},"full_name":{"type":"string","maxLength":200,"minLength":1,"title":"Full Name"},"company_name":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Company Name"}},"type":"object","required":["email","password","full_name"],"title":"RegisterRequest"},"ResetPasswordRequest":{"properties":{"token":{"type":"string","title":"Token"},"new_password":{"type":"string","maxLength":128,"minLength":8,"title":"New Password"}},"type":"object","required":["token","new_password"],"title":"ResetPasswordRequest"},"ReviewActionRequest":{"properties":{"action":{"type":"string","title":"Action"},"merge_target_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Merge Target Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sector"}},"type":"object","required":["action"],"title":"ReviewActionRequest"},"SaveTenderIn":{"properties":{"note":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Note"}},"type":"object","title":"SaveTenderIn"},"SavedTenderOut":{"properties":{"id":{"type":"string","title":"Id"},"tender_id":{"type":"string","title":"Tender Id"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","tender_id","created_at"],"title":"SavedTenderOut"},"SeasonalPattern":{"properties":{"month":{"type":"integer","title":"Month"},"avg_tenders":{"type":"number","title":"Avg Tenders"},"sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sector"}},"type":"object","required":["month","avg_tenders"],"title":"SeasonalPattern"},"SectorCount":{"properties":{"sector":{"type":"string","title":"Sector"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["sector","count"],"title":"SectorCount"},"SectorTrend":{"properties":{"sector":{"type":"string","title":"Sector"},"current_month":{"type":"integer","title":"Current Month"},"previous_month":{"type":"integer","title":"Previous Month"},"pct_change":{"type":"number","title":"Pct Change"}},"type":"object","required":["sector","current_month","previous_month","pct_change"],"title":"SectorTrend"},"SimilarTenderItem":{"properties":{"tender":{"$ref":"#/components/schemas/TenderListItem"},"similarity_score":{"type":"integer","title":"Similarity Score"}},"type":"object","required":["tender","similarity_score"],"title":"SimilarTenderItem","description":"A similar tender with its similarity score."},"SimilarTendersResponse":{"properties":{"tender_id":{"type":"string","title":"Tender Id"},"similar":{"items":{"$ref":"#/components/schemas/SimilarTenderItem"},"type":"array","title":"Similar"},"total_candidates_scored":{"type":"integer","title":"Total Candidates Scored","default":0}},"type":"object","required":["tender_id","similar"],"title":"SimilarTendersResponse"},"SubscriptionStatus":{"properties":{"plan":{"type":"string","title":"Plan"},"plan_name":{"type":"string","title":"Plan Name"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"is_active":{"type":"boolean","title":"Is Active"},"limits":{"items":{"$ref":"#/components/schemas/PlanLimit"},"type":"array","title":"Limits"},"features":{"items":{"type":"string"},"type":"array","title":"Features"},"price_monthly":{"type":"integer","title":"Price Monthly"},"price_yearly":{"type":"integer","title":"Price Yearly"}},"type":"object","required":["plan","plan_name","is_active","limits","features","price_monthly","price_yearly"],"title":"SubscriptionStatus"},"TenderDetail":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"requirements":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requirements"},"sector":{"type":"string","title":"Sector"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"pec_category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pec Category"},"tender_fee":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tender Fee"},"earnest_money":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Earnest Money"},"bid_opening_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Bid Opening Date"},"submission_method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Submission Method"},"contact_info":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Info"},"project_location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Location"},"experience_requirements":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Experience Requirements"},"certifications_required":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Certifications Required"},"procurement_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Procurement Source"},"published_date":{"type":"string","format":"date","title":"Published Date"},"submission_deadline":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Submission Deadline"},"status":{"type":"string","title":"Status"},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"source_page":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Source Page"},"is_verified":{"type":"boolean","title":"Is Verified"},"company":{"anyOf":[{"$ref":"#/components/schemas/CompanyBrief"},{"type":"null"}]},"newspaper":{"anyOf":[{"$ref":"#/components/schemas/NewspaperBrief"},{"type":"null"}]},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","title","sector","published_date","status","is_verified","created_at","updated_at"],"title":"TenderDetail","description":"Full representation for detail views."},"TenderListItem":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"sector":{"type":"string","title":"Sector"},"published_date":{"type":"string","format":"date","title":"Published Date"},"submission_deadline":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Submission Deadline"},"status":{"type":"string","title":"Status"},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"pec_category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pec Category"},"project_location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Location"},"procurement_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Procurement Source"},"company":{"anyOf":[{"$ref":"#/components/schemas/CompanyBrief"},{"type":"null"}]},"newspaper":{"anyOf":[{"$ref":"#/components/schemas/NewspaperBrief"},{"type":"null"}]}},"type":"object","required":["id","title","sector","published_date","status"],"title":"TenderListItem","description":"Compact representation for list views."},"TenderListResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/TenderListItem"},"type":"array","title":"Data"},"pagination":{"$ref":"#/components/schemas/PaginationMeta"}},"type":"object","required":["data","pagination"],"title":"TenderListResponse"},"TenderMatchOut":{"properties":{"tender":{"$ref":"#/components/schemas/TenderListItem"},"match_score":{"type":"integer","title":"Match Score"},"raw_score":{"type":"integer","title":"Raw Score"},"max_score":{"type":"integer","title":"Max Score"},"breakdown":{"items":{"$ref":"#/components/schemas/MatchBreakdownItem"},"type":"array","title":"Breakdown"},"recommendations":{"items":{"type":"string"},"type":"array","title":"Recommendations"},"competition_assessment":{"type":"string","title":"Competition Assessment"}},"type":"object","required":["tender","match_score","raw_score","max_score","breakdown","recommendations","competition_assessment"],"title":"TenderMatchOut"},"TenderSearchResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/TenderListItem"},"type":"array","title":"Data"},"pagination":{"$ref":"#/components/schemas/PaginationMeta"},"query":{"type":"string","title":"Query"}},"type":"object","required":["data","pagination","query"],"title":"TenderSearchResponse"},"TenderViewOut":{"properties":{"tender_id":{"type":"string","title":"Tender Id"},"title":{"type":"string","title":"Title"},"views":{"type":"integer","title":"Views"}},"type":"object","required":["tender_id","title","views"],"title":"TenderViewOut"},"TimeSeriesPoint":{"properties":{"period":{"type":"string","title":"Period"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["period","count"],"title":"TimeSeriesPoint"},"TokenResponse":{"properties":{"access_token":{"type":"string","title":"Access Token"},"refresh_token":{"type":"string","title":"Refresh Token"},"token_type":{"type":"string","title":"Token Type","default":"bearer"},"expires_in":{"type":"integer","title":"Expires In"}},"type":"object","required":["access_token","refresh_token","expires_in"],"title":"TokenResponse"},"TopOrg":{"properties":{"organization":{"type":"string","title":"Organization"},"tender_count":{"type":"integer","title":"Tender Count"},"sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sector"}},"type":"object","required":["organization","tender_count"],"title":"TopOrg"},"UserProfile":{"properties":{"id":{"type":"string","title":"Id"},"email":{"type":"string","title":"Email"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name"},"role":{"type":"string","title":"Role"},"subscription_plan":{"type":"string","title":"Subscription Plan"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","email","role","subscription_plan","is_active","created_at"],"title":"UserProfile"},"UserProfileUpdate":{"properties":{"full_name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Full Name"},"company_name":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Company Name"}},"type":"object","title":"UserProfileUpdate"},"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"},"WorkflowOut":{"properties":{"id":{"type":"string","title":"Id"},"tender_id":{"type":"string","title":"Tender Id"},"status":{"type":"string","title":"Status"},"amount_bid":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Amount Bid"},"submission_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Submission Date"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","tender_id","status","created_at","updated_at"],"title":"WorkflowOut"},"WorkflowUpdate":{"properties":{"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"amount_bid":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Amount Bid"},"submission_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Submission Date"}},"type":"object","title":"WorkflowUpdate"}},"securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"/api/v1/auth/login"}}}}}}