{"openapi":"3.1.0","info":{"title":"CELLIO Dating Mini App","version":"0.1.0"},"paths":{"/health":{"get":{"summary":"Health Check","description":"Basic liveness probe.","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/ready":{"get":{"summary":"Readiness Check","description":"Readiness probe — checks DB and Redis.","operationId":"readiness_check_ready_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/workers/status":{"get":{"summary":"Workers Status","description":"Статус фоновых воркеров (по heartbeat в Redis).","operationId":"workers_status_api_workers_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/":{"get":{"summary":"Serve Index","operationId":"serve_index__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/sw.js":{"get":{"summary":"Service Worker","description":"Serve Service Worker with proper headers for offline support.","operationId":"service_worker_sw_js_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/health":{"get":{"summary":"Health Check","description":"Health check для Docker/мониторинга. Проверяет DB + Redis.","operationId":"health_check_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/me":{"get":{"summary":"Get Me","operationId":"get_me_api_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/candidates":{"get":{"summary":"Get Candidates","operationId":"get_candidates_api_candidates_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/swipe":{"post":{"summary":"Do Swipe","operationId":"do_swipe_api_swipe_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SwipeIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/swipes/remaining":{"get":{"summary":"Swipes Remaining","description":"Сколько свайпов осталось сегодня.","operationId":"swipes_remaining_api_swipes_remaining_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/likes/incoming":{"get":{"summary":"Incoming Likes","description":"Кто меня лайкнул — список входящих лайков (без мэтча).\nPremium видит фото и имена, free — только количество и размытые аватарки.","operationId":"incoming_likes_api_likes_incoming_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/analytics/track":{"post":{"summary":"Track Client Event","description":"Отследить событие со стороны клиента (view, swipe, profile_open и т.д.).","operationId":"track_client_event_api_analytics_track_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackEventIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/matches":{"get":{"summary":"Get Matches","operationId":"get_matches_api_matches_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/threads":{"get":{"summary":"Chat Threads V158","description":"Alias-extended на /api/matches (threads = active matches).","operationId":"chat_threads_v158_api_chat_threads_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/{match_id}":{"get":{"summary":"Get Chat","description":"Получить чат. Поддерживает cursor-based пагинацию через before_id.","operationId":"get_chat_api_chat__match_id__get","parameters":[{"name":"match_id","in":"path","required":true,"schema":{"type":"integer","title":"Match Id"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"before_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Before Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/{match_id}/search":{"get":{"summary":"Search Chat Messages","description":"Поиск по сообщениям в чате.","operationId":"search_chat_messages_api_chat__match_id__search_get","parameters":[{"name":"match_id","in":"path","required":true,"schema":{"type":"integer","title":"Match Id"}},{"name":"q","in":"query","required":true,"schema":{"type":"string","title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/send":{"post":{"summary":"Send Message","operationId":"send_message_api_chat_send_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/send-voice":{"post":{"summary":"Send Voice Message","description":"Отправка голосового сообщения.","operationId":"send_voice_message_api_chat_send_voice_post","parameters":[{"name":"match_id","in":"query","required":true,"schema":{"type":"integer","title":"Match Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_send_voice_message_api_chat_send_voice_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/message/{message_id}/react":{"post":{"summary":"React To Message","description":"Добавляет или удаляет реакцию на сообщение.","operationId":"react_to_message_api_chat_message__message_id__react_post","parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"integer","title":"Message Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageReactionIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gift":{"post":{"summary":"Send Gift","operationId":"send_gift_api_gift_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GiftIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gifts":{"get":{"summary":"Get Gifts Catalog","operationId":"get_gifts_catalog_api_gifts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/signal/{match_id}":{"post":{"summary":"Send Warm Signal","operationId":"send_warm_signal_api_signal__match_id__post","parameters":[{"name":"match_id","in":"path","required":true,"schema":{"type":"integer","title":"Match Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/{match_id}/read":{"post":{"summary":"Mark Messages Read","description":"Отметить все непрочитанные сообщения в чате как прочитанные.","operationId":"mark_messages_read_api_chat__match_id__read_post","parameters":[{"name":"match_id","in":"path","required":true,"schema":{"type":"integer","title":"Match Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/user/{user_id}/online":{"get":{"summary":"Check User Online","description":"Получить статус онлайна пользователя и время последней активности.","operationId":"check_user_online_api_user__user_id__online_get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/shop":{"get":{"summary":"Get Shop","operationId":"get_shop_api_shop_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/shop/buy":{"post":{"summary":"Buy Item","operationId":"buy_item_api_shop_buy_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopBuyIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/daily-bonus":{"get":{"summary":"Daily Bonus Status","description":"Возвращает состояние ежедневного бонуса без claim. BUG 25: фронт делал GET → 405.","operationId":"daily_bonus_status_api_daily_bonus_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Claim Daily Bonus","operationId":"claim_daily_bonus_api_daily_bonus_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/topup/packages":{"get":{"summary":"Topup Packages Alias","description":"Alias на /api/payments/packages — фронт использует старый URL.","operationId":"topup_packages_alias_api_topup_packages_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/games":{"get":{"summary":"Get Games List","operationId":"get_games_list_api_games_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/games/history":{"get":{"summary":"Games History","description":"История завершённых игр пользователя.","operationId":"games_history_api_games_history_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/games/roles":{"get":{"summary":"Get Mafia Roles","description":"Возвращает роли/локации/категории по game_type.","operationId":"get_mafia_roles_api_games_roles_get","parameters":[{"name":"game_type","in":"query","required":false,"schema":{"type":"string","default":"mafia","title":"Game Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/games/start":{"post":{"summary":"Start Game","operationId":"start_game_api_games_start_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GameStartIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/games/vote":{"post":{"summary":"Game Vote","description":"Отправить ответ/голос в текущем раунде игры.","operationId":"game_vote_api_games_vote_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GameVoteIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/games/{game_id}":{"get":{"summary":"Get Game State","description":"Получить текущее состояние игры.","operationId":"get_game_state_api_games__game_id__get","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/cities":{"get":{"summary":"Admin Cities","description":"Список доступных и загруженных городов.","operationId":"admin_cities_api_admin_cities_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/load/{slug}":{"get":{"summary":"Admin Load City","description":"Загрузить город из seeds/{slug}.json.","operationId":"admin_load_city_api_admin_load__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/unload/{slug}":{"get":{"summary":"Admin Unload City","description":"Выгрузить город (удалить все его venues).","operationId":"admin_unload_city_api_admin_unload__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/reset":{"get":{"summary":"Admin Reset","description":"Полный сброс: удалить ВСЕ venues и загрузить только Ижевск.","operationId":"admin_reset_api_admin_reset_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/reseed-venues":{"get":{"summary":"Reseed Venues Compat","description":"Алиас для /api/admin/reset.","operationId":"reseed_venues_compat_api_admin_reseed_venues_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/seed-owners":{"get":{"summary":"Seed Owners And Menus","description":"Создать бот-владельцев для каждого заведения и заполнить меню по категориям.","operationId":"seed_owners_and_menus_api_admin_seed_owners_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/owners":{"get":{"summary":"Admin Owners","description":"Список владельцев с их заведениями и статистикой меню.","operationId":"admin_owners_api_admin_owners_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","default":"","title":"Search"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/owner/{venue_id}/menu":{"get":{"summary":"Admin Owner Menu","description":"Меню конкретного заведения (личный кабинет владельца).","operationId":"admin_owner_menu_api_admin_owner__venue_id__menu_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/stats":{"get":{"summary":"Admin Stats V76","description":"Краткая дашборд-сводка.","operationId":"admin_stats_v76_api_admin_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/users":{"get":{"summary":"Admin Users V76","description":"Список юзеров: tg_id, username, display_name, registered_at, coins, is_banned.","operationId":"admin_users_v76_api_admin_users_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/analytics/overview":{"get":{"summary":"Admin Analytics Overview","description":"Общая статистика аналитики: DAU, матчи, сообщения, выручка за сегодня.","operationId":"admin_analytics_overview_api_admin_analytics_overview_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/analytics/daily":{"get":{"summary":"Admin Analytics Daily","description":"Ежедневная статистика за последние N дней.","operationId":"admin_analytics_daily_api_admin_analytics_daily_get","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/admin/analytics/funnel":{"get":{"summary":"Admin Analytics Funnel","description":"Метрики воронки: signup→profile→swipe→match→message.","operationId":"admin_analytics_funnel_api_admin_analytics_funnel_get","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/admin/venues-list":{"get":{"summary":"Admin Venues List","description":"Список venues с фильтрами.","operationId":"admin_venues_list_api_admin_venues_list_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"city","in":"query","required":false,"schema":{"type":"string","default":"","title":"City"}},{"name":"category","in":"query","required":false,"schema":{"type":"string","default":"","title":"Category"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","default":"","title":"Search"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/venue/{venue_id}/toggle":{"post":{"summary":"Admin Venue Toggle","description":"Включить/выключить venue.","operationId":"admin_venue_toggle_api_admin_venue__venue_id__toggle_post","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/venue/{venue_id}":{"delete":{"summary":"Admin Venue Delete","description":"Удалить venue (с FK каскадом).","operationId":"admin_venue_delete_api_admin_venue__venue_id__delete","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/user/{user_id}/coins":{"post":{"summary":"Admin User Coins","description":"Начислить/списать монеты пользователю.","operationId":"admin_user_coins_api_admin_user__user_id__coins_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"amount","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Amount"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin":{"get":{"summary":"Admin Panel","description":"Админ-панель HTML.","operationId":"admin_panel_admin_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/venues":{"get":{"summary":"Get Venues","operationId":"get_venues_api_venues_get","parameters":[{"name":"city","in":"query","required":false,"schema":{"type":"string","default":"","title":"City"}},{"name":"category","in":"query","required":false,"schema":{"type":"string","default":"","title":"Category"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}},{"name":"lat","in":"query","required":false,"schema":{"type":"number","default":0.0,"title":"Lat"}},{"name":"lon","in":"query","required":false,"schema":{"type":"number","default":0.0,"title":"Lon"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","default":"","title":"Search"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/{venue_id}/live-users":{"get":{"summary":"Get Venue Live Users","description":"Who is checked-in right now at this venue (anonymised).","operationId":"get_venue_live_users_api_venue__venue_id__live_users_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/notifications-v55-deprecated":{"get":{"summary":"Get Notifications V55","description":"Unified notification feed: new matches, unread messages, gifts, signals.","operationId":"get_notifications_v55_api_notifications_v55_deprecated_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/match/{match_id}/compat":{"get":{"summary":"Get Match Compat V55","description":"Heuristic compatibility score 0..100 for a match, based on shared\ninterests and age proximity. Deterministic by (a,b) pair.","operationId":"get_match_compat_v55_api_match__match_id__compat_get","parameters":[{"name":"match_id","in":"path","required":true,"schema":{"type":"integer","title":"Match Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/{venue_id}/reviews":{"get":{"summary":"Get Venue Reviews V55","description":"Return up to N review objects for a venue (from VenueRating).","operationId":"get_venue_reviews_v55_api_venue__venue_id__reviews_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/matches/page":{"get":{"summary":"Get Matches Page V55","description":"Paginated /api/matches for large match lists.","operationId":"get_matches_page_v55_api_matches_page_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/healthz":{"get":{"summary":"Healthz V55","description":"Lightweight health-check: DB ping + uptime.","operationId":"healthz_v55_healthz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/badges":{"get":{"summary":"Get Badges Catalog V75","description":"Каталог всех доступных бейджей.","operationId":"get_badges_catalog_v75_api_badges_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/reports":{"get":{"summary":"Admin Reports V76","description":"Список жалоб на пользователей. Таблица `user_reports` если существует.","operationId":"admin_reports_v76_api_admin_reports_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/bot/seed":{"post":{"summary":"Admin Bot Seed V76","description":"Placeholder: возвращает рекомендацию запустить seed_wrap.py (реальный seed — вне процесса).","operationId":"admin_bot_seed_v76_api_admin_bot_seed_post","parameters":[{"name":"city","in":"query","required":false,"schema":{"type":"string","default":"izhevsk","title":"City"}},{"name":"count","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"title":"Count"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/venue/cleanup":{"post":{"summary":"Admin Venue Cleanup V76","description":"Идемпотентная деактивация: venues без upcoming checkins + без фото.\nПо умолчанию dry_run=True — только возвращает список.","operationId":"admin_venue_cleanup_v76_api_admin_venue_cleanup_post","parameters":[{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Dry Run"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/version":{"get":{"summary":"Get Version V56","description":"Return list of active patches based on markers in source code.","operationId":"get_version_v56_api_version_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/referral/leaderboard":{"get":{"summary":"Referral Leaderboard V58","description":"Top-20 referrers; auto-creates referred_by column if missing.","operationId":"referral_leaderboard_v58_api_referral_leaderboard_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/premium/trial":{"post":{"summary":"Premium Trial V58","description":"Activate a 3-day premium trial once per user. Stores flag in users.premium_until.","operationId":"premium_trial_v58_api_premium_trial_post","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/weekly":{"get":{"summary":"Weekly Summary V58","description":"Return user's activity stats for last 7 days.","operationId":"weekly_summary_v58_api_me_weekly_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/report":{"post":{"summary":"Report User","operationId":"report_user_api_report_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/{venue_id}/events":{"get":{"summary":"Venue Events V58","description":"Upcoming events (mock + DB if table exists).","operationId":"venue_events_v58_api_venue__venue_id__events_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/compat/questions":{"get":{"summary":"Compat Questions V59","description":"30+ compatibility questions for matching test.","operationId":"compat_questions_v59_api_compat_questions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/me/achievements":{"get":{"summary":"My Achievements V59","description":"Compute simple achievement progress.","operationId":"my_achievements_v59_api_me_achievements_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/verify-photo":{"post":{"summary":"Verify Photo V59","description":"Mark user as photo-verified after they send a verification gesture selfie.\nMock: any submission counts; real impl would verify face match + gesture pose.","operationId":"verify_photo_v59_api_me_verify_photo_post","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}},{"name":"gesture","in":"query","required":false,"schema":{"type":"string","default":"thumbs_up","title":"Gesture"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/feed":{"get":{"summary":"Feed V70","description":"Activity feed: recent checkins + matches across user's network.","operationId":"feed_v70_api_feed_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/visitors":{"get":{"summary":"My Visitors V70","description":"Who viewed my profile (uses profile_views table; auto-creates).","operationId":"my_visitors_v70_api_me_visitors_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/visit":{"post":{"summary":"Record Visit V70","description":"Record a profile view event.","operationId":"record_visit_v70_api_me_visit_post","parameters":[{"name":"viewer_tg","in":"query","required":true,"schema":{"type":"integer","title":"Viewer Tg"}},{"name":"profile_user_id","in":"query","required":true,"schema":{"type":"integer","title":"Profile User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/match/{match_id}/icebreakers":{"get":{"summary":"Icebreakers V70","description":"Context-aware conversation starters based on shared interests.","operationId":"icebreakers_v70_api_match__match_id__icebreakers_get","parameters":[{"name":"match_id","in":"path","required":true,"schema":{"type":"integer","title":"Match Id"}},{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/match/{match_id}/icebreakers-smart":{"get":{"summary":"Icebreakers Smart V109","description":"Smart icebreakers: interests + compat + venue + time-of-day + bio-hook.","operationId":"icebreakers_smart_v109_api_match__match_id__icebreakers_smart_get","parameters":[{"name":"match_id","in":"path","required":true,"schema":{"type":"integer","title":"Match Id"}},{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/{venue_id}/checkin-history":{"get":{"summary":"Venue Checkin History V70","description":"My checkin history for a venue.","operationId":"venue_checkin_history_v70_api_venue__venue_id__checkin_history_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}},{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/blocked":{"get":{"summary":"My Blocked V70","description":"List blocked users.","operationId":"my_blocked_v70_api_me_blocked_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/block":{"post":{"summary":"Block User V70","description":"V985: исправлены имена колонок (user_id, blocked_user_id) — соответствуют реальной schema user_blocks.","operationId":"block_user_v70_api_me_block_post","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}},{"name":"target_user_id","in":"query","required":true,"schema":{"type":"integer","title":"Target User Id"}},{"name":"reason","in":"query","required":false,"schema":{"type":"string","default":"","title":"Reason"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/unblock":{"post":{"summary":"Unblock User V70","description":"V985: правильные имена колонок (user_id, blocked_user_id).","operationId":"unblock_user_v70_api_me_unblock_post","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}},{"name":"target_user_id","in":"query","required":true,"schema":{"type":"integer","title":"Target User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/mute":{"post":{"summary":"Mute User V985","description":"V985: muter (tg_id) mutes target. Resolves target_user_id → tg if needed.","operationId":"mute_user_v985_api_me_mute_post","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}},{"name":"target_tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Target Tg Id"}},{"name":"target_user_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Target User Id"}},{"name":"reason","in":"query","required":false,"schema":{"type":"string","default":"","title":"Reason"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"V991 Me Mute Get","description":"Алиас GET на /api/me/mutes.","operationId":"v991_me_mute_get_api_me_mute_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/unmute":{"post":{"summary":"Unmute User V985","description":"V985: unmute target. Resolves target_user_id → tg if needed.","operationId":"unmute_user_v985_api_me_unmute_post","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}},{"name":"target_tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Target Tg Id"}},{"name":"target_user_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Target User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/mutes":{"get":{"summary":"List Mutes V985","description":"V985: list muted tg_ids by current user.","operationId":"list_mutes_v985_api_me_mutes_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/match/{match_id}/mute":{"post":{"summary":"Mute Match V985","description":"V985: mute the OTHER party of a match. Resolves match → other user → tg → user_mutes_v82.","operationId":"mute_match_v985_api_match__match_id__mute_post","parameters":[{"name":"match_id","in":"path","required":true,"schema":{"type":"integer","title":"Match Id"}},{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}},{"name":"reason","in":"query","required":false,"schema":{"type":"string","default":"","title":"Reason"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/match/{match_id}/unmute":{"post":{"summary":"Unmute Match V985","description":"V985: unmute other party of match.","operationId":"unmute_match_v985_api_match__match_id__unmute_post","parameters":[{"name":"match_id","in":"path","required":true,"schema":{"type":"integer","title":"Match Id"}},{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/{venue_id}/similar":{"get":{"summary":"Venue Similar V70","operationId":"venue_similar_v70_api_venue__venue_id__similar_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":6,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/analytics":{"get":{"summary":"My Analytics V70","operationId":"my_analytics_v70_api_me_analytics_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/recommendations":{"get":{"summary":"My Recs V70","description":"Top picks based on shared interests overlap.","operationId":"my_recs_v70_api_me_recommendations_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":5,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/leaderboard/global":{"get":{"summary":"Leaderboard Global V70","operationId":"leaderboard_global_v70_api_leaderboard_global_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/match/{match_id}/unmatch":{"post":{"summary":"Unmatch V70","operationId":"unmatch_v70_api_match__match_id__unmatch_post","parameters":[{"name":"match_id","in":"path","required":true,"schema":{"type":"integer","title":"Match Id"}},{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/{venue_id}/menu/recommend":{"get":{"summary":"Menu Recommend V70","operationId":"menu_recommend_v70_api_venue__venue_id__menu_recommend_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}},{"name":"top","in":"query","required":false,"schema":{"type":"integer","default":3,"title":"Top"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/message/{message_id}/react":{"post":{"summary":"Message React V70","description":"Toggle emoji reaction on a message (uses dating_messages.reactions JSONB).","operationId":"message_react_v70_api_message__message_id__react_post","parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"integer","title":"Message Id"}},{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}},{"name":"emoji","in":"query","required":true,"schema":{"type":"string","title":"Emoji"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/match/{match_id}/typing":{"get":{"summary":"Typing Status V70","description":"Returns whether the OTHER party is typing (60s TTL in-memory).","operationId":"typing_status_v70_api_match__match_id__typing_get","parameters":[{"name":"match_id","in":"path","required":true,"schema":{"type":"integer","title":"Match Id"}},{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Typing Set V70","operationId":"typing_set_v70_api_match__match_id__typing_post","parameters":[{"name":"match_id","in":"path","required":true,"schema":{"type":"integer","title":"Match Id"}},{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stickers":{"get":{"summary":"Stickers V70","operationId":"stickers_v70_api_stickers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/me/profile-strength":{"get":{"summary":"Profile Strength V70","operationId":"profile_strength_v70_api_me_profile_strength_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/boost":{"get":{"summary":"Boost Get V968","description":"V968: GET fallback for /api/me/boost — returns current boost status.","operationId":"boost_get_v968_api_me_boost_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Boost V70","description":"V985: списывает 50 coin + пишет в dating_boosts (не mock).","operationId":"boost_v70_api_me_boost_post","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/boost/status":{"get":{"summary":"Boost Status V70","operationId":"boost_status_v70_api_me_boost_status_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gatherings":{"get":{"summary":"Get Gatherings","operationId":"get_gatherings_api_gatherings_get","parameters":[{"name":"city","in":"query","required":false,"schema":{"type":"string","default":"","title":"City"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gatherings/{gathering_id}/join":{"post":{"summary":"Join Gathering","operationId":"join_gathering_api_gatherings__gathering_id__join_post","parameters":[{"name":"gathering_id","in":"path","required":true,"schema":{"type":"integer","title":"Gathering Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/achievements":{"get":{"summary":"Get Achievements","operationId":"get_achievements_api_achievements_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/leaderboard":{"get":{"summary":"Get Leaderboard Api","operationId":"get_leaderboard_api_api_leaderboard_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/referral":{"get":{"summary":"Get Referral","operationId":"get_referral_api_referral_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/settings":{"post":{"summary":"Update Settings","operationId":"update_settings_api_settings_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettingsIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/delete-account":{"post":{"summary":"Delete Account","description":"Удаление аккаунта: очистка личных данных, скрытие профиля.\n\nНе удаляет строку из БД — soft delete для сохранения целостности\n(мэтчи, сообщения и т.д.).","operationId":"delete_account_api_delete_account_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/compatibility/{target_user_id}":{"get":{"summary":"Get Compatibility","operationId":"get_compatibility_api_compatibility__target_user_id__get","parameters":[{"name":"target_user_id","in":"path","required":true,"schema":{"type":"integer","title":"Target User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/who-liked":{"get":{"summary":"Who Liked Me","operationId":"who_liked_me_api_who_liked_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/profile":{"get":{"summary":"Get Profile","description":"Get current user's dating profile with Redis caching.","operationId":"get_profile_api_profile_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/profile/update":{"post":{"summary":"Update Profile","operationId":"update_profile_api_profile_update_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileUpdateIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/profile/verify":{"post":{"summary":"Request Verification","description":"Запросить верификацию. Юзер должен иметь фото. Будет проверено админом.","operationId":"request_verification_api_profile_verify_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/verification-queue":{"get":{"summary":"Verification Queue","description":"Очередь на верификацию.","operationId":"verification_queue_api_admin_verification_queue_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/verify/{user_id}":{"post":{"summary":"Admin Verify User","description":"Одобрить или отклонить верификацию.","operationId":"admin_verify_user_api_admin_verify__user_id__post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/photos/upload-v140":{"post":{"summary":"Upload Photo V140","description":"V140 upload endpoint accepting tg_id instead of initData — for browser access.","operationId":"upload_photo_v140_api_photos_upload_v140_post","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_photo_v140_api_photos_upload_v140_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/photos/upload":{"post":{"summary":"Upload Photo","description":"Загрузить фото пользователя. Максимум 6 фото на профиль.","operationId":"upload_photo_api_photos_upload_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_photo_api_photos_upload_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/photos/{index}":{"delete":{"summary":"Delete Photo","description":"Удалить фото по индексу.","operationId":"delete_photo_api_photos__index__delete","parameters":[{"name":"index","in":"path","required":true,"schema":{"type":"integer","title":"Index"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/photos/reorder-v985":{"post":{"summary":"Reorder Photos V985","description":"V985: photos reorder via tg_id query (no initData required).","operationId":"reorder_photos_v985_api_photos_reorder_v985_post","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/photos/reorder":{"put":{"summary":"Reorder Photos","description":"Переупорядочить фотографии.","operationId":"reorder_photos_api_photos_reorder_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhotoReorderIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/photo-queue":{"get":{"summary":"Get Photo Moderation Queue","description":"Получить очередь фото на модерацию.","operationId":"get_photo_moderation_queue_api_admin_photo_queue_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/photo/{photo_id}/moderate":{"post":{"summary":"Moderate Photo","description":"Одобрить или отклонить фото на модерации.","operationId":"moderate_photo_api_admin_photo__photo_id__moderate_post","parameters":[{"name":"photo_id","in":"path","required":true,"schema":{"type":"integer","title":"Photo Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/cleanup-games":{"post":{"summary":"Cleanup Finished Games","description":"Удалить завершённые игры старше 7 дней для экономии места.","operationId":"cleanup_finished_games_api_admin_cleanup_games_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/unmatch/{match_id}":{"post":{"summary":"Unmatch","operationId":"unmatch_api_unmatch__match_id__post","parameters":[{"name":"match_id","in":"path","required":true,"schema":{"type":"integer","title":"Match Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/user/{user_id}/block":{"post":{"summary":"Block User Endpoint","description":"Заблокировать пользователя.","operationId":"block_user_endpoint_api_user__user_id__block_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlockIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/user/{user_id}/unblock":{"post":{"summary":"Unblock User Endpoint","description":"Разблокировать пользователя.","operationId":"unblock_user_endpoint_api_user__user_id__unblock_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/blocked-users":{"get":{"summary":"Get Blocked Users","description":"Получить список заблокированных пользователей.","operationId":"get_blocked_users_api_blocked_users_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/send-no-match-message":{"post":{"summary":"Send No Match Msg","operationId":"send_no_match_msg_api_send_no_match_message_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoMatchMsgIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/incoming-messages":{"get":{"summary":"Get Incoming Messages","operationId":"get_incoming_messages_api_incoming_messages_get","parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/respond-no-match":{"post":{"summary":"Respond No Match","operationId":"respond_no_match_api_respond_no_match_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoMatchRespondIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/icebreaker":{"get":{"summary":"Get Icebreaker","operationId":"get_icebreaker_api_icebreaker_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/meet-confirm/{match_id}":{"post":{"summary":"Confirm Meeting","operationId":"confirm_meeting_api_meet_confirm__match_id__post","parameters":[{"name":"match_id","in":"path","required":true,"schema":{"type":"integer","title":"Match Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/meet-feedback":{"post":{"summary":"Submit Meet Feedback","operationId":"submit_meet_feedback_api_meet_feedback_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeetFeedbackIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/match/{match_id}/review":{"post":{"summary":"Submit Date Review","description":"Оставить отзыв о встрече.","operationId":"submit_date_review_api_match__match_id__review_post","parameters":[{"name":"match_id","in":"path","required":true,"schema":{"type":"integer","title":"Match Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/user/{user_id}/reviews":{"get":{"summary":"Get User Reviews","description":"Получить отзывы о пользователе.","operationId":"get_user_reviews_api_user__user_id__reviews_get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/user/{user_id}/rating":{"get":{"summary":"Get User Rating","description":"Получить средний рейтинг пользователя.","operationId":"get_user_rating_api_user__user_id__rating_get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/coin-history":{"get":{"summary":"Coin History","operationId":"coin_history_api_coin_history_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue-checkin/{venue_id}":{"post":{"summary":"Venue Checkin","description":"Чек-ин в заведение. Поддерживает QR, NFC, deeplink, авто-активацию.","operationId":"venue_checkin_api_venue_checkin__venue_id__post","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CheckinIn"},{"type":"null"}],"title":"Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue-checkout":{"post":{"summary":"Venue Checkout","description":"Выход из заведения (ручной).","operationId":"venue_checkout_api_venue_checkout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/venue/my-checkin":{"get":{"summary":"My Current Checkin","description":"Текущий активный чекин пользователя.","operationId":"my_current_checkin_api_venue_my_checkin_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/venue/{venue_id}/people":{"get":{"summary":"Venue People","operationId":"venue_people_api_venue__venue_id__people_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/{venue_id}/rate":{"post":{"summary":"Rate Venue","operationId":"rate_venue_api_venue__venue_id__rate_post","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VenueRateIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/{venue_id}/checkin/nfc":{"post":{"summary":"Nfc Checkin","description":"NFC чек-ин в заведение по UID метки.","operationId":"nfc_checkin_api_venue__venue_id__checkin_nfc_post","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NFCCheckinIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/{venue_id}/tables":{"get":{"summary":"Get Venue Tables","description":"Карта столиков в заведении с информацией об занятости.","operationId":"get_venue_tables_api_venue__venue_id__tables_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/{venue_id}/nfc-tag":{"post":{"summary":"Register Nfc Tag","description":"Регистрация новой NFC метки (только администратор/владелец заведения).","operationId":"register_nfc_tag_api_venue__venue_id__nfc_tag_post","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NFCTagRegisterIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/{venue_id}/live-stats":{"get":{"summary":"Get Venue Live Stats","description":"Статистика по заведению в реальном времени.","operationId":"get_venue_live_stats_api_venue__venue_id__live_stats_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/update-location":{"post":{"summary":"Update Location","description":"Обновить геолокацию пользователя (для радара).","operationId":"update_location_api_update_location_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLocationIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/nearby":{"get":{"summary":"Nearby Users","description":"Люди поблизости — геолокация с радиусом + fallback на город.","operationId":"nearby_users_api_nearby_get","parameters":[{"name":"radius_km","in":"query","required":false,"schema":{"type":"number","default":5.0,"title":"Radius Km"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/nearby/toggle-radar":{"post":{"summary":"Toggle Radar","operationId":"toggle_radar_api_nearby_toggle_radar_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/hookah":{"get":{"summary":"Hookah Lounges","description":"Кальянные — подмножество venues с категорией hookah.","operationId":"hookah_lounges_api_hookah_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/intentions":{"get":{"summary":"Get Intentions","operationId":"get_intentions_api_intentions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Set Intentions","operationId":"set_intentions_api_intentions_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntentionsIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/verification":{"get":{"summary":"Verification Status","operationId":"verification_status_api_verification_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/premium":{"get":{"summary":"Premium Info","operationId":"premium_info_api_premium_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/venue/{venue_id}/person/{target_user_id}":{"get":{"summary":"Venue Person Profile","description":"Мини-профиль человека в заведении — фото, инфо, совместимость, общие интересы.","operationId":"venue_person_profile_api_venue__venue_id__person__target_user_id__get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}},{"name":"target_user_id","in":"path","required":true,"schema":{"type":"integer","title":"Target User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/greet":{"post":{"summary":"Venue Greet","description":"Отправить приветствие человеку в заведении (бесплатно).","operationId":"venue_greet_api_venue_greet_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VenueGreetingIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/wink":{"post":{"summary":"Venue Wink","description":"Подмигнуть — анонимный сигнал. Взаимное подмигивание = мэтч.","operationId":"venue_wink_api_venue_wink_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VenueWinkIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/gift":{"post":{"summary":"Venue Gift","description":"Отправить подарок человеку в заведении (платно).","operationId":"venue_gift_api_venue_gift_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__VenueGiftIn__1"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/my-greetings":{"get":{"summary":"My Venue Greetings","description":"Входящие приветствия и подарки в заведениях.","operationId":"my_venue_greetings_api_venue_my_greetings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/venue/greeting/{greeting_id}/read":{"post":{"summary":"Mark Greeting Read","operationId":"mark_greeting_read_api_venue_greeting__greeting_id__read_post","parameters":[{"name":"greeting_id","in":"path","required":true,"schema":{"type":"integer","title":"Greeting Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/{venue_id}/people-detailed":{"get":{"summary":"Venue People Detailed","description":"Расширенный список людей в заведении — с фото и общими интересами.","operationId":"venue_people_detailed_api_venue__venue_id__people_detailed_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/settings/photo-search":{"post":{"summary":"Toggle Photo Search","operationId":"toggle_photo_search_api_settings_photo_search_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/venue/{venue_id}/find-by-photo":{"post":{"summary":"Find By Photo","description":"Поиск человека по фото среди чекинувшихся. Показывает фото с камеры рядом с профилями для сравнения.","operationId":"find_by_photo_api_venue__venue_id__find_by_photo_post","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhotoSearchIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/{venue_id}/photo-compliment":{"post":{"summary":"Send Photo Compliment","description":"Отправить фото-комплимент: сфотографируй человека и отправь ему с сообщением.","operationId":"send_photo_compliment_api_venue__venue_id__photo_compliment_post","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhotoComplimentIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/{venue_id}/drinks":{"get":{"summary":"Venue Drinks","description":"Список напитков/позиций меню заведения.","operationId":"venue_drinks_api_venue__venue_id__drinks_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/order-drink":{"post":{"summary":"Order Drink","description":"Заказать напиток другому человеку в заведении.","operationId":"order_drink_api_venue_order_drink_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DrinkOrderIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/my-drink-orders":{"get":{"summary":"My Drink Orders","description":"Входящие заказы напитков для текущего пользователя.","operationId":"my_drink_orders_api_venue_my_drink_orders_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/venue/icebreaker-games":{"get":{"summary":"List Icebreaker Games","description":"Список доступных ледокол-игр.","operationId":"list_icebreaker_games_api_venue_icebreaker_games_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/venue/icebreaker/start":{"post":{"summary":"Start Icebreaker","description":"Начать ледокол-игру с человеком в заведении.","operationId":"start_icebreaker_api_venue_icebreaker_start_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IcebreakerStartIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/icebreaker/answer":{"post":{"summary":"Icebreaker Answer","description":"Ответить в ледокол-игре.","operationId":"icebreaker_answer_api_venue_icebreaker_answer_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IcebreakerAnswerIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/icebreaker/{game_id}":{"get":{"summary":"Get Icebreaker","description":"Получить состояние ледокол-игры.","operationId":"get_icebreaker_api_venue_icebreaker__game_id__get","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/mafia/create":{"post":{"summary":"Venue Mafia Create","description":"Хост создаёт лобби мафии — в заведении или онлайн.","operationId":"venue_mafia_create_api_venue_mafia_create_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VenueMafiaCreateIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/mafia/add-bot":{"post":{"summary":"Venue Mafia Add Bot","description":"Хост добавляет бота в лобби.","operationId":"venue_mafia_add_bot_api_venue_mafia_add_bot_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VenueMafiaAddBotIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/mafia/remove-bot/{player_id}":{"delete":{"summary":"Venue Mafia Remove Bot","description":"Хост удаляет бота из лобби.","operationId":"venue_mafia_remove_bot_api_venue_mafia_remove_bot__player_id__delete","parameters":[{"name":"player_id","in":"path","required":true,"schema":{"type":"integer","title":"Player Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/mafia/assign-role":{"post":{"summary":"Venue Mafia Assign Role","description":"Хост назначает роль игроку/боту ДО начала игры.","operationId":"venue_mafia_assign_role_api_venue_mafia_assign_role_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VenueMafiaAssignRoleIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/mafia/set-roles":{"post":{"summary":"Venue Mafia Set Roles","description":"Хост задаёт набор разрешённых ролей для игры.","operationId":"venue_mafia_set_roles_api_venue_mafia_set_roles_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VenueMafiaSetRolesIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/mafia/reset-roles":{"post":{"summary":"Venue Mafia Reset Roles","description":"Хост сбрасывает роли на авто-режим.","operationId":"venue_mafia_reset_roles_api_venue_mafia_reset_roles_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VenueMafiaSetRolesIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/mafia/set-theme":{"post":{"summary":"Venue Mafia Set Theme","description":"Хост выбирает тематику фраз ведущего.","operationId":"venue_mafia_set_theme_api_venue_mafia_set_theme_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VenueMafiaSetThemeIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/mafia/set-timer":{"post":{"summary":"Venue Mafia Set Timer","description":"Хост выбирает скорость таймера.","operationId":"venue_mafia_set_timer_api_venue_mafia_set_timer_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VenueMafiaSetTimerIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/mafia/themes-list":{"get":{"summary":"Venue Mafia Themes List","description":"Возвращает список доступных тем для ведущего.","operationId":"venue_mafia_themes_list_api_venue_mafia_themes_list_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/venue/mafia/set-variation":{"post":{"summary":"Venue Mafia Set Variation","description":"Хост выбирает вариацию игры (классика или иммерсивная) и сценарий.","operationId":"venue_mafia_set_variation_api_venue_mafia_set_variation_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VenueMafiaSetVariationIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/mafia/variations-list":{"get":{"summary":"Venue Mafia Variations List","description":"Список вариаций игры.","operationId":"venue_mafia_variations_list_api_venue_mafia_variations_list_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/venue/mafia/scenarios-list":{"get":{"summary":"Venue Mafia Scenarios List","description":"Список сценариев для иммерсивной мафии.","operationId":"venue_mafia_scenarios_list_api_venue_mafia_scenarios_list_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/venue/mafia/roles-list":{"get":{"summary":"Venue Mafia Roles List","description":"Возвращает все доступные роли для UI.","operationId":"venue_mafia_roles_list_api_venue_mafia_roles_list_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/venue/mafia/join":{"post":{"summary":"Venue Mafia Join","description":"Игрок присоединяется по коду.","operationId":"venue_mafia_join_api_venue_mafia_join_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VenueMafiaJoinIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/mafia/{game_id}/lobby":{"get":{"summary":"Venue Mafia Lobby","description":"Состояние лобби: кто присоединился.","operationId":"venue_mafia_lobby_api_venue_mafia__game_id__lobby_get","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/mafia/{game_id}/start":{"post":{"summary":"Venue Mafia Start","description":"Хост запускает игру — раздаёт роли, начинается ночь.","operationId":"venue_mafia_start_api_venue_mafia__game_id__start_post","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/mafia/{game_id}/my-role":{"get":{"summary":"Venue Mafia My Role","description":"Игрок получает свою роль + список кого видит.","operationId":"venue_mafia_my_role_api_venue_mafia__game_id__my_role_get","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/mafia/{game_id}/night-action":{"post":{"summary":"Venue Mafia Night Action","description":"Ночное действие: мафия убивает, доктор лечит, детектив проверяет и т.д.","operationId":"venue_mafia_night_action_api_venue_mafia__game_id__night_action_post","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VenueMafiaNightActionIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/mafia/{game_id}/resolve-night":{"post":{"summary":"Venue Mafia Resolve Night","description":"Хост нажимает 'Рассвет' — вычисляем результаты ночи.","operationId":"venue_mafia_resolve_night_api_venue_mafia__game_id__resolve_night_post","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/mafia/{game_id}/day-vote":{"post":{"summary":"Venue Mafia Day Vote","description":"Дневное голосование: кого казнить.","operationId":"venue_mafia_day_vote_api_venue_mafia__game_id__day_vote_post","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VenueMafiaDayVoteIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/mafia/{game_id}/resolve-day":{"post":{"summary":"Venue Mafia Resolve Day","description":"Хост завершает день — подсчёт голосов, казнь.","operationId":"venue_mafia_resolve_day_api_venue_mafia__game_id__resolve_day_post","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/mafia/{game_id}/state":{"get":{"summary":"Venue Mafia State","description":"Полное состояние игры для UI (без секретных данных).","operationId":"venue_mafia_state_api_venue_mafia__game_id__state_get","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/mafia/{game_id}/spectator-roles":{"get":{"summary":"Venue Mafia Spectator Roles","description":"Режим наблюдателя: мёртвые игроки видят все роли и голоса.","operationId":"venue_mafia_spectator_roles_api_venue_mafia__game_id__spectator_roles_get","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/mafia/{game_id}/results":{"get":{"summary":"Venue Mafia Results","description":"Финальные результаты: все роли, статистика.","operationId":"venue_mafia_results_api_venue_mafia__game_id__results_get","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/{venue_id}/mafia-games":{"get":{"summary":"Venue Mafia List","description":"Список активных/лобби игр мафии в заведении.","operationId":"venue_mafia_list_api_venue__venue_id__mafia_games_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mafia/create-online":{"post":{"summary":"Mafia Create Online","description":"Создать онлайн-игру мафии — играть на расстоянии.","operationId":"mafia_create_online_api_mafia_create_online_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/mafia/online-games":{"get":{"summary":"Mafia Online List","description":"Список открытых онлайн-лобби.","operationId":"mafia_online_list_api_mafia_online_games_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/mafia/my-games":{"get":{"summary":"Mafia My Games","description":"Мои активные игры мафии.","operationId":"mafia_my_games_api_mafia_my_games_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/mafia/stats":{"get":{"summary":"Mafia My Stats","description":"Моя статистика мафии.","operationId":"mafia_my_stats_api_mafia_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/mafia/leaderboard":{"get":{"summary":"Mafia Leaderboard","description":"Лидерборд мафии: all / week / month / year + рекорды.","operationId":"mafia_leaderboard_api_mafia_leaderboard_get","parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bunker/create":{"post":{"summary":"Bunker Create","description":"Создать игру Бункер.","operationId":"bunker_create_api_bunker_create_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BunkerCreateIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bunker/join":{"post":{"summary":"Bunker Join","description":"Присоединиться к Бункеру.","operationId":"bunker_join_api_bunker_join_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BunkerJoinIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bunker/{game_id}/start":{"post":{"summary":"Bunker Start","description":"Запуск игры Бункер.","operationId":"bunker_start_api_bunker__game_id__start_post","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bunker/{game_id}/reveal":{"post":{"summary":"Bunker Reveal","description":"Раскрыть одну характеристику своей карточки.","operationId":"bunker_reveal_api_bunker__game_id__reveal_post","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BunkerRevealIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bunker/{game_id}/vote":{"post":{"summary":"Bunker Vote","description":"Голосование за изгнание.","operationId":"bunker_vote_api_bunker__game_id__vote_post","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BunkerVoteIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bunker/{game_id}/resolve-vote":{"post":{"summary":"Bunker Resolve Vote","description":"Подсчёт голосов и изгнание.","operationId":"bunker_resolve_vote_api_bunker__game_id__resolve_vote_post","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bunker/{game_id}/state":{"get":{"summary":"Bunker State","description":"Состояние игры Бункер.","operationId":"bunker_state_api_bunker__game_id__state_get","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spyfall/create":{"post":{"summary":"Spyfall Create","operationId":"spyfall_create_api_spyfall_create_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpyfallCreateIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spyfall/join":{"post":{"summary":"Spyfall Join","operationId":"spyfall_join_api_spyfall_join_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BunkerJoinIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spyfall/{game_id}/start":{"post":{"summary":"Spyfall Start","operationId":"spyfall_start_api_spyfall__game_id__start_post","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spyfall/{game_id}/vote":{"post":{"summary":"Spyfall Vote","operationId":"spyfall_vote_api_spyfall__game_id__vote_post","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpyfallVoteIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spyfall/{game_id}/spy-guess":{"post":{"summary":"Spyfall Spy Guess","description":"Шпион угадывает локацию.","operationId":"spyfall_spy_guess_api_spyfall__game_id__spy_guess_post","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpyfallGuessIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spyfall/{game_id}/resolve":{"post":{"summary":"Spyfall Resolve","description":"Подсчёт голосов.","operationId":"spyfall_resolve_api_spyfall__game_id__resolve_post","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spyfall/{game_id}/state":{"get":{"summary":"Spyfall State","operationId":"spyfall_state_api_spyfall__game_id__state_get","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/crocodile/create":{"post":{"summary":"Crocodile Create","operationId":"crocodile_create_api_crocodile_create_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrocodileCreateIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/crocodile/join":{"post":{"summary":"Crocodile Join","operationId":"crocodile_join_api_crocodile_join_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BunkerJoinIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/crocodile/{game_id}/next-word":{"post":{"summary":"Crocodile Next","description":"Следующее слово / следующий объяснятель.","operationId":"crocodile_next_api_crocodile__game_id__next_word_post","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/crocodile/{game_id}/guess":{"post":{"summary":"Crocodile Guess","description":"Кто-то угадал слово.","operationId":"crocodile_guess_api_crocodile__game_id__guess_post","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/crocodile/{game_id}/skip":{"post":{"summary":"Crocodile Skip","description":"Пропустить слово (никто не угадал).","operationId":"crocodile_skip_api_crocodile__game_id__skip_post","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/crocodile/{game_id}/finish":{"post":{"summary":"Crocodile Finish","operationId":"crocodile_finish_api_crocodile__game_id__finish_post","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/crocodile/{game_id}/state":{"get":{"summary":"Crocodile State","operationId":"crocodile_state_api_crocodile__game_id__state_get","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/never/create":{"post":{"summary":"Never Create","operationId":"never_create_api_never_create_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NeverCreateIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/never/join":{"post":{"summary":"Never Join","operationId":"never_join_api_never_join_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BunkerJoinIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/never/{game_id}/next":{"post":{"summary":"Never Next","description":"Следующее утверждение.","operationId":"never_next_api_never__game_id__next_post","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/never/{game_id}/respond":{"post":{"summary":"Never Respond","description":"Ответить: я это делал (True) или нет (False).","operationId":"never_respond_api_never__game_id__respond_post","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}},{"name":"did_it","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Did It"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/never/{game_id}/state":{"get":{"summary":"Never State","operationId":"never_state_api_never__game_id__state_get","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/party-games":{"get":{"summary":"List Party Games","description":"Список всех доступных партийных игр.","operationId":"list_party_games_api_party_games_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/party/add-bot":{"post":{"summary":"Party Add Bot","description":"Хост добавляет бота в любую партийную игру.","operationId":"party_add_bot_api_party_add_bot_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartyBotIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/party/remove-bot/{player_id}":{"delete":{"summary":"Party Remove Bot","description":"Хост удаляет бота из партийной игры.","operationId":"party_remove_bot_api_party_remove_bot__player_id__delete","parameters":[{"name":"player_id","in":"path","required":true,"schema":{"type":"integer","title":"Player Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/party/leave":{"post":{"summary":"Party Leave","description":"Игрок выходит из партийной игры (лобби или активная).","operationId":"party_leave_api_party_leave_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/party/fill-bots":{"post":{"summary":"Party Fill Bots","description":"Быстро добить ботами до нужного количества.","operationId":"party_fill_bots_api_party_fill_bots_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartyFillBotsIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/party/bot-tick":{"post":{"summary":"Party Bot Tick","description":"Триггерит авто-действия ботов (вызывается из фронта при поллинге).","operationId":"party_bot_tick_api_party_bot_tick_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartyBotIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/speed-dating/create":{"post":{"summary":"Sd Create","description":"Создать сессию быстрых свиданий.","operationId":"sd_create_api_speed_dating_create_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SDCreateIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/speed-dating/join":{"post":{"summary":"Sd Join","description":"Присоединиться к сессии по коду.","operationId":"sd_join_api_speed_dating_join_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SDJoinIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/speed-dating/{sd_id}/state":{"get":{"summary":"Sd State","description":"Полное состояние сессии (поллинг каждые 3 сек).","operationId":"sd_state_api_speed_dating__sd_id__state_get","parameters":[{"name":"sd_id","in":"path","required":true,"schema":{"type":"integer","title":"Sd Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/speed-dating/{sd_id}/start":{"post":{"summary":"Sd Start","description":"Создатель запускает сессию.","operationId":"sd_start_api_speed_dating__sd_id__start_post","parameters":[{"name":"sd_id","in":"path","required":true,"schema":{"type":"integer","title":"Sd Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/speed-dating/{sd_id}/next-round":{"post":{"summary":"Sd Next Round","description":"Переход к следующему раунду (создатель или авто по таймеру).","operationId":"sd_next_round_api_speed_dating__sd_id__next_round_post","parameters":[{"name":"sd_id","in":"path","required":true,"schema":{"type":"integer","title":"Sd Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/speed-dating/{sd_id}/rate":{"post":{"summary":"Sd Rate","description":"Оценить партнёра после раунда.","operationId":"sd_rate_api_speed_dating__sd_id__rate_post","parameters":[{"name":"sd_id","in":"path","required":true,"schema":{"type":"integer","title":"Sd Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SDRateIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/speed-dating/{sd_id}/message":{"post":{"summary":"Sd Send Message","description":"Отправить сообщение текущему партнёру в чате раунда.","operationId":"sd_send_message_api_speed_dating__sd_id__message_post","parameters":[{"name":"sd_id","in":"path","required":true,"schema":{"type":"integer","title":"Sd Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SDMessageIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/speed-dating/{sd_id}/chat":{"get":{"summary":"Sd Get Chat","description":"Получить сообщения чата текущего раунда с партнёром.","operationId":"sd_get_chat_api_speed_dating__sd_id__chat_get","parameters":[{"name":"sd_id","in":"path","required":true,"schema":{"type":"integer","title":"Sd Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/speed-dating/{sd_id}/results":{"get":{"summary":"Sd Results","description":"Результаты: взаимные лайки → матчи.","operationId":"sd_results_api_speed_dating__sd_id__results_get","parameters":[{"name":"sd_id","in":"path","required":true,"schema":{"type":"integer","title":"Sd Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/speed-dating/{sd_id}/finish":{"post":{"summary":"Sd Finish","description":"Принудительно завершить сессию (создатель).","operationId":"sd_finish_api_speed_dating__sd_id__finish_post","parameters":[{"name":"sd_id","in":"path","required":true,"schema":{"type":"integer","title":"Sd Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/speed-dating/{sd_id}/leave":{"post":{"summary":"Sd Leave","description":"Выйти из speed dating сессии.","operationId":"sd_leave_api_speed_dating__sd_id__leave_post","parameters":[{"name":"sd_id","in":"path","required":true,"schema":{"type":"integer","title":"Sd Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/speed-dating/presets":{"get":{"summary":"Sd Presets","description":"Список пресетов скорости.","operationId":"sd_presets_api_speed_dating_presets_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/speed-dating/my-sessions":{"get":{"summary":"Sd My Sessions","description":"Мои активные/недавние сессии speed dating.","operationId":"sd_my_sessions_api_speed_dating_my_sessions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/merch":{"get":{"summary":"List Merch","description":"Каталог мерча CELLIO.","operationId":"list_merch_api_merch_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/merch/order":{"post":{"summary":"Order Merch","description":"Заказать мерч.","operationId":"order_merch_api_merch_order_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MerchOrderIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/merch/my-orders":{"get":{"summary":"My Merch Orders","description":"Мои заказы мерча.","operationId":"my_merch_orders_api_merch_my_orders_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/merch/order/{order_id}":{"delete":{"summary":"Cancel Merch Order","description":"Отменить заказ мерча (только со статусом pending).","operationId":"cancel_merch_order_api_merch_order__order_id__delete","parameters":[{"name":"order_id","in":"path","required":true,"schema":{"type":"integer","title":"Order Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/invite":{"post":{"summary":"Send Venue Invite","description":"Пригласить человека в заведение.","operationId":"send_venue_invite_api_venue_invite_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/my-invites":{"get":{"summary":"My Venue Invites","description":"Мои входящие приглашения в заведения.","operationId":"my_venue_invites_api_venue_my_invites_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/venue/invite/{invite_id}/respond":{"post":{"summary":"Respond Venue Invite","description":"Принять или отклонить приглашение.","operationId":"respond_venue_invite_api_venue_invite__invite_id__respond_post","parameters":[{"name":"invite_id","in":"path","required":true,"schema":{"type":"integer","title":"Invite Id"}},{"name":"accept","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Accept"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/{venue_id}/menu":{"get":{"summary":"Venue Menu","description":"Ассортимент заведения — напитки, еда, услуги, подарки.","operationId":"venue_menu_api_venue__venue_id__menu_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/menu/order":{"post":{"summary":"Order Menu Item","description":"Заказать позицию из меню (себе или в подарок другому).","operationId":"order_menu_item_api_venue_menu_order_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MenuOrderIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/my-menu-orders":{"get":{"summary":"My Menu Orders","description":"Мои входящие заказы/подарки из меню.","operationId":"my_menu_orders_api_venue_my_menu_orders_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/owner/my-venues":{"get":{"summary":"Owner My Venues","description":"Список заведений, где пользователь — владелец.","operationId":"owner_my_venues_api_owner_my_venues_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/owner/venue/{venue_id}/dashboard":{"get":{"summary":"Owner Dashboard","description":"Дашборд владельца: посетители, заказы, статистика.","operationId":"owner_dashboard_api_owner_venue__venue_id__dashboard_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/owner/venue/{venue_id}/orders":{"get":{"summary":"Owner Orders","description":"Заказы в заведении (для владельца).","operationId":"owner_orders_api_owner_venue__venue_id__orders_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"pending","title":"Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/owner/venue/{venue_id}/order/{order_id}/status":{"post":{"summary":"Owner Update Order","description":"Обновить статус заказа (владелец).","operationId":"owner_update_order_api_owner_venue__venue_id__order__order_id__status_post","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}},{"name":"order_id","in":"path","required":true,"schema":{"type":"integer","title":"Order Id"}},{"name":"new_status","in":"query","required":false,"schema":{"type":"string","default":"confirmed","title":"New Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/owner/venue/{venue_id}/menu/add":{"post":{"summary":"Owner Add Menu Item","description":"Добавить позицию в ассортимент (владелец).","operationId":"owner_add_menu_item_api_owner_venue__venue_id__menu_add_post","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MenuItemIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/owner/venue/{venue_id}/menu/{item_id}":{"put":{"summary":"Owner Update Menu Item","description":"Обновить позицию ассортимента (владелец).","operationId":"owner_update_menu_item_api_owner_venue__venue_id__menu__item_id__put","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"integer","title":"Item Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MenuItemIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Owner Delete Menu Item","description":"Удалить позицию из ассортимента (владелец).","operationId":"owner_delete_menu_item_api_owner_venue__venue_id__menu__item_id__delete","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"integer","title":"Item Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/owner/venue/create":{"post":{"summary":"Owner Create Venue","description":"Зарегистрировать своё заведение.","operationId":"owner_create_venue_api_owner_venue_create_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VenueCreateIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/owner/venue/{venue_id}/edit":{"put":{"summary":"Owner Edit Venue","description":"Редактировать инфо заведения.","operationId":"owner_edit_venue_api_owner_venue__venue_id__edit_put","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VenueEditIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/owner/venue/{venue_id}/info":{"get":{"summary":"Owner Venue Info","description":"Полная инфа о заведении для кабинета.","operationId":"owner_venue_info_api_owner_venue__venue_id__info_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/owner/venue/{venue_id}/menu":{"get":{"summary":"Owner Menu List","description":"Все позиции меню (включая неактивные) — для кабинета.","operationId":"owner_menu_list_api_owner_venue__venue_id__menu_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/owner/venue/{venue_id}/stats":{"get":{"summary":"Owner Stats","description":"Расширенная статистика: выручка, популярные позиции, посетители.","operationId":"owner_stats_api_owner_venue__venue_id__stats_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/owner/venue/{venue_id}/reviews":{"get":{"summary":"V979 Owner Reviews Alias","operationId":"v979_owner_reviews_alias_api_owner_venue__venue_id__reviews_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}},{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/owner/venue/{venue_id}/audience":{"get":{"summary":"V979 Owner Audience Alias","operationId":"v979_owner_audience_alias_api_owner_venue__venue_id__audience_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}},{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/owner/venue/{venue_id}/mafia":{"get":{"summary":"V979 Owner Mafia Events","operationId":"v979_owner_mafia_events_api_owner_venue__venue_id__mafia_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}},{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/owner/venue/{venue_id}/menu/{item_id}/toggle":{"post":{"summary":"Owner Toggle Menu Item","description":"Вкл/выкл позицию меню.","operationId":"owner_toggle_menu_item_api_owner_venue__venue_id__menu__item_id__toggle_post","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"integer","title":"Item Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/{venue_id}/qr-link":{"get":{"summary":"V901 Venue Qr Link","description":"V901: deep-link для регистрации через конкретное venue.\nВозвращает t.me/bot_cloudbbot?start=v_<id> + URL картинки QR (через api.qrserver.com).","operationId":"v901_venue_qr_link_api_venue__venue_id__qr_link_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/couple-tests":{"get":{"summary":"List Couple Tests","description":"Список доступных парных тестов.","operationId":"list_couple_tests_api_couple_tests_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/couple-test/start":{"post":{"summary":"Start Couple Test","description":"Запустить парный тест в мэтче. Если test_key не указан — рандомный.","operationId":"start_couple_test_api_couple_test_start_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoupleTestStartIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/couple-test/answer":{"post":{"summary":"Submit Couple Test Answers","description":"Отправить свои ответы на тест.","operationId":"submit_couple_test_answers_api_couple_test_answer_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoupleTestAnswerIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/couple-test/{session_id}":{"get":{"summary":"Get Couple Test Status","description":"Получить статус / результаты теста.","operationId":"get_couple_test_status_api_couple_test__session_id__get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"integer","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/couple-test/match/{match_id}/history":{"get":{"summary":"Couple Test History","description":"История пройденных тестов в мэтче.","operationId":"couple_test_history_api_couple_test_match__match_id__history_get","parameters":[{"name":"match_id","in":"path","required":true,"schema":{"type":"integer","title":"Match Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tod/create":{"post":{"summary":"Tod Create","operationId":"tod_create_api_tod_create_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TodCreateIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tod/join":{"post":{"summary":"Tod Join","operationId":"tod_join_api_tod_join_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BunkerJoinIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tod/{game_id}/start":{"post":{"summary":"Tod Start","operationId":"tod_start_api_tod__game_id__start_post","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tod/{game_id}/choose":{"post":{"summary":"Tod Choose","description":"Текущий игрок выбирает правду или действие.","operationId":"tod_choose_api_tod__game_id__choose_post","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TodChoiceIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tod/{game_id}/complete":{"post":{"summary":"Tod Complete","description":"Отметить задание как выполненное или пропущенное.","operationId":"tod_complete_api_tod__game_id__complete_post","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TodCompleteIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tod/{game_id}/next":{"post":{"summary":"Tod Next","description":"Перейти к следующему игроку.","operationId":"tod_next_api_tod__game_id__next_post","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tod/{game_id}/state":{"get":{"summary":"Tod State","operationId":"tod_state_api_tod__game_id__state_get","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/game-like":{"post":{"summary":"Game Like","description":"Лайкнуть игрока после игры → если взаимно → мэтч!","operationId":"game_like_api_game_like_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GameLikeIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue-party/create":{"post":{"summary":"Venue Party Create","description":"Создать партийную игру в заведении — все чекиненные получают уведомление.","operationId":"venue_party_create_api_venue_party_create_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VenuePartyIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/{venue_id}/active-games":{"get":{"summary":"Venue Active Games","description":"Список активных игр в заведении.","operationId":"venue_active_games_api_venue__venue_id__active_games_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/combos/my":{"get":{"summary":"My Combos","description":"Мои активированные комбо.","operationId":"my_combos_api_combos_my_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/combos":{"get":{"summary":"Get Combos","description":"Список активных комбо-предложений. Фильтр по городу/типу/заведению.","operationId":"get_combos_api_combos_get","parameters":[{"name":"city","in":"query","required":false,"schema":{"type":"string","default":"","title":"City"}},{"name":"combo_type","in":"query","required":false,"schema":{"type":"string","default":"","title":"Combo Type"}},{"name":"venue_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Venue Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/combos/{combo_id}":{"get":{"summary":"Get Combo Detail","description":"Детали одного комбо-предложения.","operationId":"get_combo_detail_api_combos__combo_id__get","parameters":[{"name":"combo_id","in":"path","required":true,"schema":{"type":"integer","title":"Combo Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/combos/{combo_id}/activate":{"post":{"summary":"Activate Combo","description":"Пользователь активирует комбо — получает код для предъявления в заведениях.","operationId":"activate_combo_api_combos__combo_id__activate_post","parameters":[{"name":"combo_id","in":"path","required":true,"schema":{"type":"integer","title":"Combo Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/combos/activation/{code}/visit/{step_id}":{"post":{"summary":"Combo Visit Step","description":"Отметить посещение шага комбо (заведение сканирует код или пользователь чекинится).","operationId":"combo_visit_step_api_combos_activation__code__visit__step_id__post","parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}},{"name":"step_id","in":"path","required":true,"schema":{"type":"integer","title":"Step Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/combos/create":{"post":{"summary":"Create Combo","description":"Владелец заведения создаёт комбо-предложение с партнёрами.","operationId":"create_combo_api_combos_create_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/venue/partner-offer/send":{"post":{"summary":"Send Partner Offer","description":"Заведение A отправляет предложение заведению B:\n«Я дам твоим клиентам X, хочу получить от тебя Y».","operationId":"send_partner_offer_api_venue_partner_offer_send_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/venue/partner-offer/{offer_id}/respond":{"post":{"summary":"Respond Partner Offer","description":"Заведение B отвечает на предложение: counter / accept / reject.\nПри counter — отправляет своё встречное предложение.\nПри accept — обе стороны довольны, создаются товары.","operationId":"respond_partner_offer_api_venue_partner_offer__offer_id__respond_post","parameters":[{"name":"offer_id","in":"path","required":true,"schema":{"type":"integer","title":"Offer Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/{venue_id}/partner-offers":{"get":{"summary":"Venue Partner Offers","description":"Все предложения для/от этого заведения.","operationId":"venue_partner_offers_api_venue__venue_id__partner_offers_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venues/partners":{"get":{"summary":"Browse Venues For Partnership","description":"Список заведений доступных для партнёрства (для выбора кому отправить предложение).","operationId":"browse_venues_for_partnership_api_venues_partners_get","parameters":[{"name":"city","in":"query","required":false,"schema":{"type":"string","default":"","title":"City"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/speed-dating/{sd_id}/mini-game":{"get":{"summary":"Sd Mini Game","description":"Получить случайную мини-игру для текущего раунда свидания.","operationId":"sd_mini_game_api_speed_dating__sd_id__mini_game_get","parameters":[{"name":"sd_id","in":"path","required":true,"schema":{"type":"integer","title":"Sd Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tournament/create":{"post":{"summary":"Tournament Create","description":"Создать турнир из нескольких игр.","operationId":"tournament_create_api_tournament_create_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TournamentCreateIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tournament/join":{"post":{"summary":"Tournament Join","operationId":"tournament_join_api_tournament_join_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BunkerJoinIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tournament/{game_id}/state":{"get":{"summary":"Tournament State","operationId":"tournament_state_api_tournament__game_id__state_get","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tournament/{game_id}/start-next":{"post":{"summary":"Tournament Start Next","description":"Запустить следующую игру в турнире.","operationId":"tournament_start_next_api_tournament__game_id__start_next_post","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tournament/{game_id}/collect-scores":{"post":{"summary":"Tournament Collect","description":"Собрать очки из завершённой суб-игры и перейти к следующей.","operationId":"tournament_collect_api_tournament__game_id__collect_scores_post","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/date-budgets":{"get":{"summary":"Get Date Budgets","operationId":"get_date_budgets_api_date_budgets_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/date/invite":{"post":{"summary":"Send Date Invitation","description":"Пригласить на свидание с выбором бюджета. Списывает монеты.","operationId":"send_date_invitation_api_date_invite_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DateInviteIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/date/invite/{invitation_id}/accept":{"post":{"summary":"Accept Date Invitation","description":"Принять приглашение на свидание.","operationId":"accept_date_invitation_api_date_invite__invitation_id__accept_post","parameters":[{"name":"invitation_id","in":"path","required":true,"schema":{"type":"integer","title":"Invitation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/date/invite/{invitation_id}/reject":{"post":{"summary":"Reject Date Invitation","description":"Отклонить приглашение — монеты возвращаются отправителю.","operationId":"reject_date_invitation_api_date_invite__invitation_id__reject_post","parameters":[{"name":"invitation_id","in":"path","required":true,"schema":{"type":"integer","title":"Invitation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/date/invitations/{match_id}":{"get":{"summary":"Get Date Invitations","description":"Получить все приглашения в мэтче.","operationId":"get_date_invitations_api_date_invitations__match_id__get","parameters":[{"name":"match_id","in":"path","required":true,"schema":{"type":"integer","title":"Match Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auction/create":{"post":{"summary":"Create Auction","description":"Создать аукцион на свидание.","operationId":"create_auction_api_auction_create_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuctionCreateIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auctions":{"get":{"summary":"List Auctions","description":"Список активных аукционов.","operationId":"list_auctions_api_auctions_get","parameters":[{"name":"city","in":"query","required":false,"schema":{"type":"string","default":"","title":"City"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auction/{auction_id}/bid":{"post":{"summary":"Place Bid","description":"Сделать ставку в аукционе.","operationId":"place_bid_api_auction__auction_id__bid_post","parameters":[{"name":"auction_id","in":"path","required":true,"schema":{"type":"integer","title":"Auction Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuctionBidIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auctions/my":{"get":{"summary":"My Auctions","description":"Мои аукционы (созданные + где ставил).","operationId":"my_auctions_api_auctions_my_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/auction/{auction_id}/cancel":{"post":{"summary":"Cancel Auction","description":"Отменить свой аукцион.","operationId":"cancel_auction_api_auction__auction_id__cancel_post","parameters":[{"name":"auction_id","in":"path","required":true,"schema":{"type":"integer","title":"Auction Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue-gifts/{match_id}":{"get":{"summary":"Get Venue Gifts For Match","description":"Список товаров из заведений для подарка в мэтче.\nПоказываем товары из заведений, в которых сейчас чекинены оба (или хотя бы один).","operationId":"get_venue_gifts_for_match_api_venue_gifts__match_id__get","parameters":[{"name":"match_id","in":"path","required":true,"schema":{"type":"integer","title":"Match Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue-gift/send":{"post":{"summary":"Send Venue Gift","description":"Подарить товар из заведения в рамках мэтча.","operationId":"send_venue_gift_api_venue_gift_send_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__VenueGiftIn__2"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/{venue_id}/commission":{"get":{"summary":"Venue Commission Stats","description":"Статистика комиссий для владельца заведения.","operationId":"venue_commission_stats_api_venue__venue_id__commission_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gift/{message_id}/accept":{"post":{"summary":"Accept Gift","description":"Принять подарок. Только получатель может принять.","operationId":"accept_gift_api_gift__message_id__accept_post","parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"integer","title":"Message Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gift/{message_id}/reject":{"post":{"summary":"Reject Gift","description":"Отклонить подарок. Монеты возвращаются отправителю.","operationId":"reject_gift_api_gift__message_id__reject_post","parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"integer","title":"Message Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/{venue_id}/sales":{"get":{"summary":"Get Venue Sales","description":"Акционные позиции заведения.","operationId":"get_venue_sales_api_venue__venue_id__sales_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sales":{"get":{"summary":"Get All Sales","description":"Все акции в городе пользователя.","operationId":"get_all_sales_api_sales_get","parameters":[{"name":"city","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue-auctions":{"post":{"summary":"Create Venue Auction","description":"Создать аукцион на товар заведения (владелец заведения).","operationId":"create_venue_auction_api_venue_auctions_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VenueAuctionCreateIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"List Venue Auctions","description":"Активные аукционы на товары заведений.","operationId":"list_venue_auctions_api_venue_auctions_get","parameters":[{"name":"city","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue-auctions/{auction_id}/bid":{"post":{"summary":"Bid Venue Auction","description":"Сделать ставку на аукционе товара.","operationId":"bid_venue_auction_api_venue_auctions__auction_id__bid_post","parameters":[{"name":"auction_id","in":"path","required":true,"schema":{"type":"integer","title":"Auction Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VenueAuctionBidIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/{venue_id}/sale":{"post":{"summary":"Set Venue Sale","description":"Установить скидку на товар (владелец заведения).","operationId":"set_venue_sale_api_venue__venue_id__sale_post","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}},{"name":"item_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Item Id"}},{"name":"discount_percent","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Discount Percent"}},{"name":"sale_label","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sale Label"}},{"name":"duration_hours","in":"query","required":false,"schema":{"type":"integer","default":24,"title":"Duration Hours"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/notifications":{"get":{"summary":"Get Notifications","description":"Получить список уведомлений пользователя.","operationId":"get_notifications_api_notifications_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"unread_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Unread Only"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/notifications/read":{"post":{"summary":"Mark Notifications Read","description":"Отметить уведомления как прочитанные. Если ids пусто — отмечает все.","operationId":"mark_notifications_read_api_notifications_read_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_mark_notifications_read_api_notifications_read_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/notifications/count":{"get":{"summary":"Get Notifications Count","description":"Получить количество непрочитанных уведомлений.","operationId":"get_notifications_count_api_notifications_count_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/venue/{venue_id}":{"get":{"summary":"Get Venue By Id V53","description":"Индивидуальная карточка заведения.","operationId":"get_venue_by_id_v53_api_venue__venue_id__get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/streak":{"get":{"summary":"Get My Streak V53","description":"Current daily-bonus streak + last claim date.","operationId":"get_my_streak_v53_api_me_streak_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/me/preferences":{"get":{"summary":"Me Preferences Get","operationId":"me_preferences_get_api_me_preferences_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Me Preferences Post","operationId":"me_preferences_post_api_me_preferences_post","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/timezone":{"get":{"summary":"Me Timezone Get","operationId":"me_timezone_get_api_me_timezone_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Me Timezone Post","operationId":"me_timezone_post_api_me_timezone_post","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/match/{match_id}/schedule-date":{"post":{"summary":"Match Schedule Date","operationId":"match_schedule_date_api_match__match_id__schedule_date_post","parameters":[{"name":"match_id","in":"path","required":true,"schema":{"type":"integer","title":"Match Id"}},{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/match/{match_id}/dates":{"get":{"summary":"Match Dates List","operationId":"match_dates_list_api_match__match_id__dates_get","parameters":[{"name":"match_id","in":"path","required":true,"schema":{"type":"integer","title":"Match Id"}},{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/{venue_id}/rsvp":{"post":{"summary":"Venue Rsvp","operationId":"venue_rsvp_api_venue__venue_id__rsvp_post","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}},{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/{venue_id}/rsvp-list":{"get":{"summary":"Venue Rsvp List","operationId":"venue_rsvp_list_api_venue__venue_id__rsvp_list_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}},{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/quiet-hours":{"get":{"summary":"Me Quiet Hours Get","operationId":"me_quiet_hours_get_api_me_quiet_hours_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Me Quiet Hours Post","operationId":"me_quiet_hours_post_api_me_quiet_hours_post","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/export-data":{"get":{"summary":"Me Export Data","operationId":"me_export_data_api_me_export_data_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/heatmap":{"get":{"summary":"Me Heatmap","operationId":"me_heatmap_api_me_heatmap_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}},{"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/wishes":{"get":{"summary":"Wishes Get","operationId":"wishes_get_api_wishes_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Wishes Post","operationId":"wishes_post_api_wishes_post","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/obs/v82/summary":{"get":{"summary":"Obs V82 Summary","description":"Observability dashboard v82: counts across all v82 tables + sys info.","operationId":"obs_v82_summary_api_obs_v82_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/obs/v82/slow-queries":{"get":{"summary":"Obs V82 Slow Queries","description":"Return slow-query snapshot from pg_stat_statements if available.","operationId":"obs_v82_slow_queries_api_obs_v82_slow_queries_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/obs/v82/ping":{"get":{"summary":"Obs V82 Ping","operationId":"obs_v82_ping_api_obs_v82_ping_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/venue/invite-nearby-v2":{"post":{"summary":"Venue Invite Nearby V2","description":"V83 probe on UNIQUE path.","operationId":"venue_invite_nearby_v2_api_venue_invite_nearby_v2_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/venue/invite-nearby":{"post":{"summary":"Venue Invite Nearby","description":"V83 final.","operationId":"venue_invite_nearby_api_venue_invite_nearby_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/discover":{"get":{"summary":"Discover V86","description":"V86: Discover users to swipe. Returns list of dating profiles.\nFilters out own profile, already-swiped, and blocked users.","operationId":"discover_v86_api_discover_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/gifts-inbox":{"get":{"summary":"My Gifts Inbox V86","description":"V86: Inbox of gifts received. Tries gift_transactions_v83, falls back to gift_transactions.","operationId":"my_gifts_inbox_v86_api_me_gifts_inbox_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/places":{"get":{"summary":"Places V86","description":"V86: alias for /api/venues — legacy client calls /api/places. V108: search param with cyr↔lat.","operationId":"places_v86_api_places_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","title":"Tg Id"}},{"name":"city","in":"query","required":false,"schema":{"type":"string","title":"City"}},{"name":"category","in":"query","required":false,"schema":{"type":"string","title":"Category"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","title":"Search"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/places/nearby":{"get":{"summary":"Places Nearby Alias V974","description":"V974: alias for FE — /api/places/nearby returns venues sorted by distance from lat/lng (default Ижевск).","operationId":"places_nearby_alias_v974_api_places_nearby_get","parameters":[{"name":"lat","in":"query","required":false,"schema":{"type":"number","default":56.85,"title":"Lat"}},{"name":"lng","in":"query","required":false,"schema":{"type":"number","default":53.21,"title":"Lng"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}},{"name":"city","in":"query","required":false,"schema":{"type":"string","title":"City"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/photos":{"get":{"summary":"Me Photos V87","operationId":"me_photos_v87_api_me_photos_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/wallet":{"get":{"summary":"Me Wallet V87","description":"V88: users.coin_balance + wallet_transactions_v83 (ts/ref_kind/ref_id, no description).","operationId":"me_wallet_v87_api_me_wallet_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/stories":{"get":{"summary":"Me Stories V87","description":"V88: user_stories_v83 has no 'views' column.","operationId":"me_stories_v87_api_me_stories_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/invites":{"get":{"summary":"Me Invites V87","operationId":"me_invites_v87_api_me_invites_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/subscription":{"get":{"summary":"Me Subscription V87","description":"V88: subscriptions_v83 keyed by user_id, columns start_at/end_at.","operationId":"me_subscription_v87_api_me_subscription_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/privacy":{"get":{"summary":"Me Privacy V87","operationId":"me_privacy_v87_api_me_privacy_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/matches":{"get":{"summary":"Me Matches V87","operationId":"me_matches_v87_api_me_matches_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/reports":{"get":{"summary":"Me Reports V87","operationId":"me_reports_v87_api_me_reports_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/badges":{"get":{"summary":"Me Badges V87","description":"V88: user_achievements_v83 keys are user_id+rule_code; achievement_rules_v83 has no emoji.","operationId":"me_badges_v87_api_me_badges_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/likes":{"get":{"summary":"Me Likes V87","operationId":"me_likes_v87_api_me_likes_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/superlikes":{"get":{"summary":"Me Superlikes V87","operationId":"me_superlikes_v87_api_me_superlikes_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/{vid}/gallery":{"get":{"summary":"Venue Gallery V87","operationId":"venue_gallery_v87_api_venue__vid__gallery_get","parameters":[{"name":"vid","in":"path","required":true,"schema":{"type":"integer","title":"Vid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stories":{"get":{"summary":"Stories V87","description":"V88: drop 'views', users.tg_id join.","operationId":"stories_v87_api_stories_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","title":"Tg Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/events":{"get":{"summary":"Events List V87","operationId":"events_list_v87_api_events_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","title":"Tg Id"}},{"name":"city","in":"query","required":false,"schema":{"type":"string","title":"City"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/events/upcoming":{"get":{"summary":"Events Upcoming V87","operationId":"events_upcoming_v87_api_events_upcoming_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","title":"Tg Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/live-rooms":{"get":{"summary":"Live Rooms V87","description":"V88: live_rooms_v83 columns are max_participants+active+ended_at.","operationId":"live_rooms_v87_api_live_rooms_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/live-rooms/active":{"get":{"summary":"Live Rooms Active V87","description":"V88: WHERE active = TRUE (not is_live).","operationId":"live_rooms_active_v87_api_live_rooms_active_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/challenges/today":{"get":{"summary":"Challenges Today V87","description":"V88: daily_challenges_v83 has no active_date/difficulty; use active=TRUE.","operationId":"challenges_today_v87_api_challenges_today_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/leaderboard/city":{"get":{"summary":"Leaderboard City V87","operationId":"leaderboard_city_v87_api_leaderboard_city_get","parameters":[{"name":"city","in":"query","required":true,"schema":{"type":"string","title":"City"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/compat-test/questions":{"get":{"summary":"Compat Test Questions V87","operationId":"compat_test_questions_v87_api_compat_test_questions_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","title":"Tg Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/quiz":{"get":{"summary":"Quiz V87","description":"V88: quiz_questions_v83 schema: question/correct/topic/difficulty.","operationId":"quiz_v87_api_quiz_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","title":"Tg Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/promo-codes":{"get":{"summary":"Promo Codes List V87","description":"V88: promo_codes uses is_used (not is_active).","operationId":"promo_codes_list_v87_api_promo_codes_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","title":"Tg Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/safety-tips":{"get":{"summary":"Safety Tips V87","description":"V88: safety_tips_v83 uses is_active, no priority column.","operationId":"safety_tips_v87_api_safety_tips_get","parameters":[{"name":"lang","in":"query","required":false,"schema":{"type":"string","default":"ru","title":"Lang"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gift-catalog":{"get":{"summary":"Gift Catalog V87","description":"V88: gift_catalog_v83 columns: id, name, emoji, price_coins, rarity, is_active, sort_order.","operationId":"gift_catalog_v87_api_gift_catalog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/filter-presets":{"get":{"summary":"Filter Presets V87","description":"V88: filter_presets_v83 columns: code, title, payload, public.","operationId":"filter_presets_v87_api_filter_presets_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ai-prompts":{"get":{"summary":"Ai Prompts V87","description":"V88: real table is ai_prompts_catalog_v83 (code/title/prompt/category/active).","operationId":"ai_prompts_v87_api_ai_prompts_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"type":"string","title":"Category"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/feature-flags":{"get":{"summary":"Feature Flags V87","description":"V88: real table is feature_flags_v83 (code/enabled/rollout_pct/description).","operationId":"feature_flags_v87_api_feature_flags_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/recommendations":{"get":{"summary":"Recommendations V87","operationId":"recommendations_v87_api_recommendations_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/discover/candidates":{"get":{"summary":"Discover Candidates V89","description":"V89: alias for /api/discover but returns candidates-shaped payload.","operationId":"discover_candidates_v89_api_discover_candidates_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/leaderboard/dates":{"get":{"summary":"Leaderboard Dates V89","description":"V89: leaderboard по количеству встреч (scheduled_dates_v80).","operationId":"leaderboard_dates_v89_api_leaderboard_dates_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/photos":{"get":{"summary":"Photos List V89","description":"V89: GET alias for /api/me/photos (HTML calls /api/photos directly).","operationId":"photos_list_v89_api_photos_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/speed-dating":{"get":{"summary":"Speed Dating List V89","description":"V89: list speed-dating sessions (speed_dating_sessions).","operationId":"speed_dating_list_v89_api_speed_dating_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","title":"Tg Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venues/nearby":{"get":{"summary":"Venues Nearby V89","description":"V791: nearby venues enriched with people_now/boys/girls.","operationId":"venues_nearby_v89_api_venues_nearby_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","title":"Tg Id"}},{"name":"city","in":"query","required":false,"schema":{"type":"string","title":"City"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/compatibility/save":{"post":{"summary":"Save Compatibility Answers","description":"Сохранить ответы пользователя на тест совместимости.","operationId":"save_compatibility_answers_api_compatibility_save_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompatibilityAnswersRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/compatibility/score/{target_user_id}":{"get":{"summary":"Get Compatibility Score","description":"Рассчитать процент совместимости между текущим пользователем и целевым.","operationId":"get_compatibility_score_api_compatibility_score__target_user_id__get","parameters":[{"name":"target_user_id","in":"path","required":true,"schema":{"type":"integer","title":"Target User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/availability/set":{"post":{"summary":"Set User Availability","description":"Установить доступность пользователя. Заменяет всю существующую доступность.","operationId":"set_user_availability_api_availability_set_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AvailabilitySetRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/availability/{target_user_id}":{"get":{"summary":"Get User Availability","description":"Получить доступность конкретного пользователя.","operationId":"get_user_availability_api_availability__target_user_id__get","parameters":[{"name":"target_user_id","in":"path","required":true,"schema":{"type":"integer","title":"Target User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/availability/overlap/{match_id}":{"get":{"summary":"Get Availability Overlap","description":"Найти пересекающиеся слоты доступности между текущим пользователем и матчем.","operationId":"get_availability_overlap_api_availability_overlap__match_id__get","parameters":[{"name":"match_id","in":"path","required":true,"schema":{"type":"integer","title":"Match Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/nearby-matches":{"get":{"summary":"Get Nearby Matches","description":"Получить список матчей, которые сейчас онлайн и рядом (в том же городе или заведении).","operationId":"get_nearby_matches_api_nearby_matches_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/payments/packages":{"get":{"summary":"Get Coin Packages","operationId":"get_coin_packages_api_payments_packages_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/payments/create-invoice":{"post":{"summary":"Create Stars Invoice","operationId":"create_stars_invoice_api_payments_create_invoice_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/payments/check-balance":{"post":{"summary":"Check Balance After Payment","operationId":"check_balance_after_payment_api_payments_check_balance_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/payments/yukassa-packages":{"get":{"summary":"Get Yukassa Packages","description":"Возвращает пакеты коинов с ценами в рублях.","operationId":"get_yukassa_packages_api_payments_yukassa_packages_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/payments/yukassa-create":{"post":{"summary":"Create Yukassa Payment","description":"Создаёт платёж ЮKassa и возвращает URL для редиректа.","operationId":"create_yukassa_payment_api_payments_yukassa_create_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/payments/yukassa-status/{payment_id}":{"get":{"summary":"Check Yukassa Status","description":"Проверяет статус платежа ЮKassa.","operationId":"check_yukassa_status_api_payments_yukassa_status__payment_id__get","parameters":[{"name":"payment_id","in":"path","required":true,"schema":{"type":"string","title":"Payment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/payments/yukassa-webhook":{"post":{"summary":"Yukassa Webhook","description":"Webhook для уведомлений от ЮKassa.\nЮKassa отправляет POST с JSON при изменении статуса платежа.\nНачисляет коины при успешной оплате.","operationId":"yukassa_webhook_api_payments_yukassa_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/feed-plus":{"get":{"summary":"Feed Plus V104","operationId":"feed_plus_v104_api_feed_plus_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/likes-plus":{"get":{"summary":"Me Likes Plus V104","operationId":"me_likes_plus_v104_api_me_likes_plus_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/streaks":{"get":{"summary":"Me Streaks V158","description":"Alias-extended: возвращает streak + history breakdown.","operationId":"me_streaks_v158_api_me_streaks_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/coins/transactions":{"get":{"summary":"Me Coins Tx V158","operationId":"me_coins_tx_v158_api_me_coins_transactions_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/visits":{"get":{"summary":"Me Visits V158","description":"Alias на /api/me/visitors (FE expects /visits per BACKLOG).","operationId":"me_visits_v158_api_me_visits_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/likes-out":{"get":{"summary":"Me Likes Out V158","operationId":"me_likes_out_v158_api_me_likes_out_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/super-likes":{"get":{"summary":"Me Super Likes V158","operationId":"me_super_likes_v158_api_me_super_likes_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/boosts":{"get":{"summary":"Me Boosts V158","operationId":"me_boosts_v158_api_me_boosts_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/badges/progress":{"get":{"summary":"Me Badges Progress V158","operationId":"me_badges_progress_v158_api_me_badges_progress_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/quests":{"get":{"summary":"Me Quests V158","operationId":"me_quests_v158_api_me_quests_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/leveling":{"get":{"summary":"Me Leveling V158","operationId":"me_leveling_v158_api_me_leveling_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/referrals":{"get":{"summary":"Me Referrals V158","operationId":"me_referrals_v158_api_me_referrals_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/blocks":{"get":{"summary":"Me Blocks V158","description":"Alias на /api/me/blocked.","operationId":"me_blocks_v158_api_me_blocks_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/sessions":{"get":{"summary":"Me Sessions V158","description":"Список устройств/сессий (placeholder — JWT/session tracking).","operationId":"me_sessions_v158_api_me_sessions_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/saved":{"get":{"summary":"Me Saved V158","description":"Сохранённые профили.","operationId":"me_saved_v158_api_me_saved_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/visited-venues":{"get":{"summary":"Me Visited Venues V158","operationId":"me_visited_venues_v158_api_me_visited_venues_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/catalog/visited-venues":{"get":{"summary":" V137 Visited Venues Alias","operationId":"_v137_visited_venues_alias_api_catalog_visited_venues_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venues/{venue_id}/tables":{"get":{"summary":"Venues Tables V158","operationId":"venues_tables_v158_api_venues__venue_id__tables_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venues/{venue_id}/staff":{"get":{"summary":"Venues Staff V158","operationId":"venues_staff_v158_api_venues__venue_id__staff_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venues/{venue_id}/events":{"get":{"summary":"Venues Events V158","operationId":"venues_events_v158_api_venues__venue_id__events_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venues/{venue_id}/promotions":{"get":{"summary":"Venues Promotions V158","operationId":"venues_promotions_v158_api_venues__venue_id__promotions_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venues/{venue_id}/reviews":{"get":{"summary":"Venues Reviews V158","operationId":"venues_reviews_v158_api_venues__venue_id__reviews_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venues/{venue_id}/photos":{"get":{"summary":"Venues Photos V158","operationId":"venues_photos_v158_api_venues__venue_id__photos_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venues/{venue_id}/checkins/now":{"get":{"summary":"Venues Checkins Now V158","operationId":"venues_checkins_now_v158_api_venues__venue_id__checkins_now_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venues/{venue_id}/menu/categories":{"get":{"summary":"Venues Menu Cats V158","operationId":"venues_menu_cats_v158_api_venues__venue_id__menu_categories_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venues/{venue_id}/menu/items":{"get":{"summary":"Venues Menu Items V158","operationId":"venues_menu_items_v158_api_venues__venue_id__menu_items_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}},{"name":"category","in":"query","required":false,"schema":{"type":"string","default":"","title":"Category"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venues/{venue_id}/qr":{"get":{"summary":"Venues Qr V158","description":"Alias на /api/venue/{venue_id}/qr-link.","operationId":"venues_qr_v158_api_venues__venue_id__qr_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/match/queue":{"get":{"summary":"Match Queue V158","description":"Alias-extended на /api/discover (queue of swipe candidates).","operationId":"match_queue_v158_api_match_queue_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/match/boost":{"post":{"summary":"Match Boost V158","description":"Alias на /api/me/boost POST.","operationId":"match_boost_v158_api_match_boost_post","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/catalog/{kind}":{"get":{"summary":"Catalog Generic V158","description":"Generic dispatcher for catalog/gifts, catalog/badges, catalog/stickers.","operationId":"catalog_generic_v158_api_catalog__kind__get","parameters":[{"name":"kind","in":"path","required":true,"schema":{"type":"string","title":"Kind"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"city","in":"query","required":false,"schema":{"type":"string","title":"City"}},{"name":"period","in":"query","required":false,"schema":{"type":"string","default":"weekly","title":"Period"}},{"name":"board","in":"query","required":false,"schema":{"type":"string","default":"matches","title":"Board"}},{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/metrics/funnel":{"get":{"summary":"Metrics Funnel V792","description":"V792: signup → profile → swipe → match → premium funnel counts.","operationId":"metrics_funnel_v792_api_metrics_funnel_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/metrics/retention":{"get":{"summary":"Metrics Retention V792","description":"V792: D1/D7/D30 retention rates.","operationId":"metrics_retention_v792_api_metrics_retention_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/metrics/revenue":{"get":{"summary":"Metrics Revenue V792","description":"V792: revenue (positive coin tx) over last N days, by tx_type.","operationId":"metrics_revenue_v792_api_metrics_revenue_get","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/metrics/mrr":{"get":{"summary":"Metrics Mrr V793","description":"V793: MRR estimate from active subscriptions (subscriptions_v83 + premium_subscriptions).","operationId":"metrics_mrr_v793_api_metrics_mrr_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/metrics/active-subs":{"get":{"summary":"Metrics Active Subs V793","description":"V793: latest active subscriptions across both subscription tables.","operationId":"metrics_active_subs_v793_api_metrics_active_subs_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/promo/validate":{"get":{"summary":"Promo Validate V793","description":"V793: check if a promo code is valid (active, not expired, has uses left).","operationId":"promo_validate_v793_api_promo_validate_get","parameters":[{"name":"code","in":"query","required":false,"schema":{"type":"string","default":"","title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/share/profile-card":{"get":{"summary":"Share Profile Card V794C","description":"V794c: shareable profile brag-card — uses users.user_id PK.","operationId":"share_profile_card_v794c_api_share_profile_card_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/share/match-card":{"get":{"summary":"Share Match Card V794C","description":"V794c: shareable match card.","operationId":"share_match_card_v794c_api_share_match_card_get","parameters":[{"name":"match_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Match Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/referrals/top":{"get":{"summary":"Referrals Top V794C","description":"V794c: top referrers — try referrals table, fallback to users.referred_by_id.","operationId":"referrals_top_v794c_api_referrals_top_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/metrics/cohorts":{"get":{"summary":"Metrics Cohorts V795","description":"V795: weekly registration cohorts with D1/D7 retention rates.","operationId":"metrics_cohorts_v795_api_metrics_cohorts_get","parameters":[{"name":"weeks","in":"query","required":false,"schema":{"type":"integer","default":6,"title":"Weeks"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/metrics/feature-adoption":{"get":{"summary":"Metrics Feature Adoption V795","description":"V795: % of users who used each feature (swipe/match/checkin/gift/premium).","operationId":"metrics_feature_adoption_v795_api_metrics_feature_adoption_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/metrics/heatmap":{"get":{"summary":"Metrics Heatmap V795","description":"V795: hourly activity heatmap from coin_transactions (last N days).","operationId":"metrics_heatmap_v795_api_metrics_heatmap_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":7,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/leaderboard/streaks":{"get":{"summary":"Leaderboard Streaks V796","description":"V796: top users by daily_bonus_streak.","operationId":"leaderboard_streaks_v796_api_leaderboard_streaks_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/leaderboard/coins":{"get":{"summary":"Leaderboard Coins V796","description":"V796: top users by coin_balance, optionally city-scoped.","operationId":"leaderboard_coins_v796_api_leaderboard_coins_get","parameters":[{"name":"city","in":"query","required":false,"schema":{"type":"string","title":"City"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/compare":{"get":{"summary":"Me Compare V796","description":"V796: compare me vs population: rank in matches/checkins/streak/coins, plus avg & top-1.","operationId":"me_compare_v796_api_me_compare_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/inactive-users":{"get":{"summary":"Admin Inactive Users V797","description":"V797: users inactive >= N days, sorted by last_activity_at ASC. For re-engage push.","operationId":"admin_inactive_users_v797_api_admin_inactive_users_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":7,"title":"Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/at-risk-streak":{"get":{"summary":"Admin At Risk Streak V797","description":"V797: streak holders close to losing it (last_bonus > 20h ago).","operationId":"admin_at_risk_streak_v797_api_admin_at_risk_streak_get","parameters":[{"name":"min_streak","in":"query","required":false,"schema":{"type":"integer","default":2,"title":"Min Streak"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/top-spenders":{"get":{"summary":"Admin Top Spenders V797","description":"V797: top users by negative coin_transactions (spending) over N days.","operationId":"admin_top_spenders_v797_api_admin_top_spenders_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/profile/completion":{"get":{"summary":"Profile Completion V798","description":"V798: profile completion score 0-100 + list of missing fields.","operationId":"profile_completion_v798_api_profile_completion_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/discover/quality-stats":{"get":{"summary":"Discover Quality Stats V798","description":"V798: aggregate stats on profile quality across population.","operationId":"discover_quality_stats_v798_api_discover_quality_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/me/visibility":{"get":{"summary":"Me Visibility V798","description":"V798: how visible am I in discover (filters / settings).","operationId":"me_visibility_v798_api_me_visibility_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/digest":{"get":{"summary":"Me Digest V799C","operationId":"me_digest_v799c_api_me_digest_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}},{"name":"hours","in":"query","required":false,"schema":{"type":"integer","default":24,"title":"Hours"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/timeline":{"get":{"summary":"Me Timeline V799C","operationId":"me_timeline_v799c_api_me_timeline_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":7,"title":"Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/highlights":{"get":{"summary":"Me Highlights V799D","operationId":"me_highlights_v799d_api_me_highlights_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/streak-status":{"get":{"summary":"Me Streak V800B","operationId":"me_streak_v800b_api_me_streak_status_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/suggestions-today":{"get":{"summary":"Me Suggestions V800B","operationId":"me_suggestions_v800b_api_me_suggestions_today_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/weekly-recap":{"get":{"summary":"Me Weekly V800B","operationId":"me_weekly_v800b_api_me_weekly_recap_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/swipe-stats":{"get":{"summary":"Me Swipe Stats V801","operationId":"me_swipe_stats_v801_api_me_swipe_stats_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/match-quality":{"get":{"summary":"Me Match Quality V801","operationId":"me_match_quality_v801_api_me_match_quality_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/profile-tune":{"get":{"summary":"Me Profile Tune V801","operationId":"me_profile_tune_v801_api_me_profile_tune_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/venue-pick":{"get":{"summary":"Me Venue Pick V802","operationId":"me_venue_pick_v802_api_me_venue_pick_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/venue-history":{"get":{"summary":"Me Venue History V802","operationId":"me_venue_history_v802_api_me_venue_history_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/venue-favorites":{"get":{"summary":"Me Venue Favorites V802","operationId":"me_venue_favorites_v802_api_me_venue_favorites_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/icebreakers-personal":{"get":{"summary":"Me Icebreakers Personal V803","operationId":"me_icebreakers_personal_v803_api_me_icebreakers_personal_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}},{"name":"match_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Match Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/conversation-tips":{"get":{"summary":"Me Conversation Tips V803","operationId":"me_conversation_tips_v803_api_me_conversation_tips_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/match-revival":{"get":{"summary":"Me Match Revival V803","operationId":"me_match_revival_v803_api_me_match_revival_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}},{"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/patent/info":{"get":{"summary":"Patent Info V804","operationId":"patent_info_v804_api_patent_info_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/patent/scenarios":{"get":{"summary":"Patent Scenarios V804","operationId":"patent_scenarios_v804_api_patent_scenarios_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/patent/formula":{"get":{"summary":"Patent Formula V804","operationId":"patent_formula_v804_api_patent_formula_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/me/karma-shield":{"get":{"summary":"Me Karma Shield V804","operationId":"me_karma_shield_v804_api_me_karma_shield_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/patent/tech-status":{"get":{"summary":"V806 Tech Status","description":"Живой статус 6 протоколов патента в проде с метриками за 24ч.","operationId":"v806_tech_status_api_patent_tech_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/me/mesh-trust":{"get":{"summary":"V806 Mesh Trust","description":"Персональный mesh-trust score: агрегат NFC-чекинов + сообщений + мэтчей + верификаций.\nРеализация пункта 9 формулы (распределённая БД репутации с защитой от недобросовестности).","operationId":"v806_mesh_trust_api_me_mesh_trust_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/ultrasound-token":{"get":{"summary":"V806 Ultrasound Issue","description":"Выпускает короткий цифровой токен для ультразвуковой передачи через WebAudio FSK.\nToken живёт 2 минуты и подтверждает proof-of-presence (пункт 2 формулы).","operationId":"v806_ultrasound_issue_api_me_ultrasound_token_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}},{"name":"venue_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/ultrasound-verify":{"get":{"summary":"V806 Ultrasound Verify","description":"Партнёр подтверждает услышанный ультразвуковой токен. Создаёт proof-of-presence запись.","operationId":"v806_ultrasound_verify_api_me_ultrasound_verify_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}},{"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/patent/federation-status":{"get":{"summary":"V806 Federation Status","description":"Реализация пункта 6 формулы — федеративное объединение городов в единую карму.","operationId":"v806_federation_status_api_patent_federation_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/geocode":{"get":{"summary":"V814 Geocode","description":"V814: прокси к Nominatim (CORS-safe для webapp).","operationId":"v814_geocode_api_geocode_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":5,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/suggest":{"post":{"summary":"V827 Venue Suggest","description":"V827: пользователь предлагает заведение.","operationId":"v827_venue_suggest_api_venue_suggest_post","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_V827SuggestIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venues/trending-24h":{"get":{"summary":"V846B Trending 24H","description":"V846b: топ venues по чекинам за последние 24 часа.","operationId":"v846b_trending_24h_api_venues_trending_24h_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}},{"name":"city","in":"query","required":false,"schema":{"type":"string","default":"Ижевск","title":"City"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/daily-quest":{"get":{"summary":"V850 Daily Quest","description":"V850: ежедневный квест на чекин в новое место.","operationId":"v850_daily_quest_api_me_daily_quest_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/topup/buy":{"post":{"summary":"V883 Topup Buy Alias","description":"V883: алиас на /api/payments/yukassa-create — FE legacy endpoint /api/topup/buy\nвозвращает ту же payload {payment_url, payment_id, status, plan_key}.","operationId":"v883_topup_buy_alias_api_topup_buy_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/me/summary":{"get":{"summary":"V884 Me Summary","description":"V884: alias for /api/catalog/me-summary (V270). urllib-based delegate (no httpx dep).","operationId":"v884_me_summary_api_me_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/me/bio":{"get":{"summary":"V885 Me Bio","description":"V885: alias чтобы FE мог быстро получить только bio.","operationId":"v885_me_bio_api_me_bio_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/me/discover-filters":{"get":{"summary":"V885 Me Discover Filters","description":"V885: фильтры discover из User.settings.","operationId":"v885_me_discover_filters_api_me_discover_filters_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/me/notif-prefs":{"get":{"summary":"V885 Me Notif Prefs","description":"V885: настройки уведомлений из User.settings.","operationId":"v885_me_notif_prefs_api_me_notif_prefs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"V885 Me Notif Prefs Set","description":"V885: set notif prefs.","operationId":"v885_me_notif_prefs_set_api_me_notif_prefs_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/me/mood":{"get":{"summary":"V885 Me Mood Get","description":"V885: текущий mood пользователя.","operationId":"v885_me_mood_get_api_me_mood_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"V885 Me Mood Set","description":"V885: установить mood.","operationId":"v885_me_mood_set_api_me_mood_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/me/pause":{"post":{"summary":"V885 Me Pause","description":"V885: поставить профиль на паузу (выключить radar/discover видимость).","operationId":"v885_me_pause_api_me_pause_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/me/resume":{"post":{"summary":"V885 Me Resume","description":"V885: снять с паузы — вернуть видимость.","operationId":"v885_me_resume_api_me_resume_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/me/quest-claim":{"post":{"summary":"V885 Me Quest Claim","description":"V885/V984B: забрать награду за дневной квест — uses dedicated v984b_quest_claims table.","operationId":"v885_me_quest_claim_api_me_quest_claim_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/me/inbox-greetings":{"get":{"summary":"V885 Me Inbox Greetings","description":"V885: alias на /api/inbox-greetings (если есть) или пусто.","operationId":"v885_me_inbox_greetings_api_me_inbox_greetings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/inbox":{"get":{"summary":"V885 Inbox","description":"V885: общий inbox — последние 10 непрочитанных.","operationId":"v885_inbox_api_inbox_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/swipe/undo":{"post":{"summary":"V885 Swipe Undo","description":"V885: отменить последний свайп. Удаляет последнюю запись DatingSwipe.","operationId":"v885_swipe_undo_api_swipe_undo_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/unmatch":{"post":{"summary":"V885 Unmatch","description":"V885: top-level alias для расматчивания. Принимает {match_id} или {user_id} в body.","operationId":"v885_unmatch_api_unmatch_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/signal":{"post":{"summary":"V885 Signal","description":"V885: отправка «сигнала» матчу (cosmetic ping). Тихий success — нечего реально слать.","operationId":"v885_signal_api_signal_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/reactions/toggle":{"post":{"summary":"V885 Reactions Toggle","description":"V885: реакция emoji на сообщение. Cosmetic stub — записываем в Redis ключ.","operationId":"v885_reactions_toggle_api_reactions_toggle_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/shop/boost/buy":{"post":{"summary":"V885 Shop Boost Buy","description":"V885: alias — переадресует на /api/shop/buy {kind:'boost', id}.","operationId":"v885_shop_boost_buy_api_shop_boost_buy_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/shop/bundle/buy":{"post":{"summary":"V885 Shop Bundle Buy","description":"V885: покупка бандла.","operationId":"v885_shop_bundle_buy_api_shop_bundle_buy_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/venue-checkin":{"post":{"summary":"V885 Venue Checkin Legacy","description":"V885: legacy alias на /api/venue/{id}/checkin/nfc.","operationId":"v885_venue_checkin_legacy_api_venue_checkin_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/venue-gifts":{"get":{"summary":"V885 Venue Gifts","description":"V885: каталог venue-подарков (alias на /api/catalog/gifts).","operationId":"v885_venue_gifts_api_venue_gifts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/date/invitations":{"get":{"summary":"V885 Date Invitations","description":"V885: входящие приглашения на свидания.","operationId":"v885_date_invitations_api_date_invitations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/daily-bonus/status":{"get":{"summary":"V887 Daily Bonus Status","description":"V887/V984B: статус дневного бонуса — uses daily_bonus_last_at (settings col не существует).","operationId":"v887_daily_bonus_status_api_daily_bonus_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/daily-bonus/claim":{"post":{"summary":"V887 Daily Bonus Claim","description":"V887/V984B: забрать дневной бонус — uses daily_bonus_last_at (idempotent per day).","operationId":"v887_daily_bonus_claim_api_daily_bonus_claim_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/daily-bonus/coins/gift":{"post":{"summary":"V887 Daily Bonus Gift","description":"V887/V984B: подарить монеты другу — uses coin_balance, no settings dep.","operationId":"v887_daily_bonus_gift_api_daily_bonus_coins_gift_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/ai/rewrite-bio":{"post":{"summary":"V887 Ai Rewrite Bio","description":"V887: AI rewrite bio. Простой стаб с готовыми архетипами.","operationId":"v887_ai_rewrite_bio_api_ai_rewrite_bio_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/ai/translate":{"post":{"summary":"V887 Ai Translate","description":"V887: stub для AI-перевода — возвращает оригинал + метку.","operationId":"v887_ai_translate_api_ai_translate_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/bots":{"get":{"summary":"V887 Admin Bots","description":"V887: список ботов (для админки).","operationId":"v887_admin_bots_api_admin_bots_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/availability":{"get":{"summary":"V887 Availability Get","description":"V887: get availability slots (текущие свободные слоты пользователя).","operationId":"v887_availability_get_api_availability_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/meet-confirm":{"post":{"summary":"V887 Meet Confirm","description":"V887: подтверждение встречи (после свидания: «вы встретились?»).","operationId":"v887_meet_confirm_api_meet_confirm_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/owner/venue":{"get":{"summary":"V887 Owner Venue Get","description":"V887: получить venue, владельцем которого является юзер.","operationId":"v887_owner_venue_get_api_owner_venue_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/party/remove-bot":{"post":{"summary":"V887 Party Remove Bot","description":"V887: убрать бота из party-игры.","operationId":"v887_party_remove_bot_api_party_remove_bot_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/venue/mafia/remove-bot":{"post":{"summary":"V887 Venue Mafia Remove Bot","description":"V887: убрать бота из мафии.","operationId":"v887_venue_mafia_remove_bot_api_venue_mafia_remove_bot_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/venue-b2b/discover":{"get":{"summary":"V893 B2B Discover","description":"V893: список venues для свайпа.\nparams: venue_id (моё venue), limit=20, city (optional filter)","operationId":"v893_b2b_discover_api_venue_b2b_discover_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/venue-b2b/swipe":{"post":{"summary":"V893 B2B Swipe","description":"V893: свайпнуть venue. body: {from_venue_id, to_venue_id, action: like|skip|super, intent?, note?}","operationId":"v893_b2b_swipe_api_venue_b2b_swipe_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/venue-b2b/matches":{"get":{"summary":"V893 B2B Matches","description":"V893: матчи venue (где venue участвует в b2b match).","operationId":"v893_b2b_matches_api_venue_b2b_matches_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/venue-b2b/scenarios":{"get":{"summary":"V893 B2B Scenarios","description":"V893: получить идеи партнёрства для пары категорий.\nparams: type_a, type_b (или venue_a_id+venue_b_id для авто-определения категорий)","operationId":"v893_b2b_scenarios_api_venue_b2b_scenarios_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/venue-b2b/collab":{"post":{"summary":"V893 B2B Collab","description":"V893: создать совместное мероприятие/акцию между матчем.","operationId":"v893_b2b_collab_api_venue_b2b_collab_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/venue-b2b/collabs":{"get":{"summary":"V893 B2B Collabs","description":"V893: список совместных активностей venue.","operationId":"v893_b2b_collabs_api_venue_b2b_collabs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/venue/{venue_id}/feed":{"get":{"summary":"V904 Venue Feed","description":"V904: лента новостей и акций venue (mock или из RSS/TG fetcher).","operationId":"v904_venue_feed_api_venue__venue_id__feed_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/{venue_id}/acquisition-stats":{"get":{"summary":"V901 Acq Stats","description":"V901: статистика acquisition для venue owner — сколько юзеров пришло через QR.","operationId":"v901_acq_stats_api_venue__venue_id__acquisition_stats_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/{venue_id}/acquire":{"post":{"summary":"V901 Register Acquisition","description":"V901: регистрирует факт прихода юзера через QR заведения.\nВызывается из bot-handler при /start v_<id>. Начисляет бонусные монеты.","operationId":"v901_register_acquisition_api_venue__venue_id__acquire_post","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue-b2b/audience-overlap":{"get":{"summary":"V901 Audience Overlap","description":"V901: показывает оверлап аудиторий двух venue (стимул к B2B партнёрству).\nparams: venue_a, venue_b — две venue id для сравнения.","operationId":"v901_audience_overlap_api_venue_b2b_audience_overlap_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/venue/{venue_id}/owner-dashboard":{"get":{"summary":"V903 Owner Dashboard","description":"V903: единый endpoint для venue owner — собирает всё в один respond.\nQR + acquisition stats + последние acquired users + B2B матчи + сценарии.","operationId":"v903_owner_dashboard_api_venue__venue_id__owner_dashboard_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/{venue_id}/owner-acquisition-csv":{"get":{"summary":"V903 Csv Export","description":"V903: экспорт CSV для owner — все acquired users.","operationId":"v903_csv_export_api_venue__venue_id__owner_acquisition_csv_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/venue/{venue_id}/feed-source":{"post":{"summary":"V981 Add Feed Source","description":"V981: добавить источник новостей/акций для venue. Доступ:\n- tg_id владельца venue (owner_tg_id), либо\n- tg_id из ADMIN_IDS (Yaroslav 375367988)","operationId":"v981_add_feed_source_api_admin_venue__venue_id__feed_source_post","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/{venue_id}/owner-check":{"get":{"summary":"V907 Owner Check","description":"V907: проверяет что пользователь — владелец venue. Возвращает {ok, is_owner, owner_tg_id}.","operationId":"v907_owner_check_api_venue__venue_id__owner_check_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/venues-owned":{"get":{"summary":"V908 My Venues","description":"V908: возвращает список venues где данный tg_id указан как owner_tg_id.","operationId":"v908_my_venues_api_me_venues_owned_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/venue/{venue_id}/partner-pitches":{"get":{"summary":"V911 Partner Pitches","description":"V911: топ-N venues с лучшим потенциалом партнёрства для venue_id.\nВозвращает список с overlap_users + potential_new_audience + scenario_match_count.","operationId":"v911_partner_pitches_api_venue__venue_id__partner_pitches_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":8,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/org/me":{"get":{"summary":"V913 My Org","description":"V913: возвращает организацию текущего user (через tg_id).","operationId":"v913_my_org_api_org_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/org/register":{"post":{"summary":"V913 Org Register","description":"V913: регистрация организации владельца. Body: name, inn, kpp, ogrn, legal_address, ceo_name, bank_*, contact_*","operationId":"v913_org_register_api_org_register_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/upd/{doc_id}/render":{"get":{"summary":"V913 Upd Render","description":"V913: render УПД как HTML — для печати через Ctrl+P / Сохранить как PDF.","operationId":"v913_upd_render_api_upd__doc_id__render_get","parameters":[{"name":"doc_id","in":"path","required":true,"schema":{"type":"integer","title":"Doc Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mafia/event/create":{"post":{"summary":"V913 Mafia Create","description":"V913: организатор создаёт мафия-вечер в venue.","operationId":"v913_mafia_create_api_mafia_event_create_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/mafia/events":{"get":{"summary":"V913 Mafia Events","description":"V913: список mafia events. params: venue_id (optional), upcoming=1 (default).","operationId":"v913_mafia_events_api_mafia_events_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/upd/generate-monthly":{"post":{"summary":"V914 Upd Generate","description":"V914: автогенерация УПД за месяц. Body: organization_id, year, month, base_price_per_venue_rub (default 990).","operationId":"v914_upd_generate_api_upd_generate_monthly_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/org/inn-lookup":{"get":{"summary":"V916 Inn Lookup","description":"V916: автозаполнение реквизитов организации по ИНН через egrul.nalog.ru.\nВозвращает {ok, name, inn, kpp, ogrn, address, ceo_name, ceo_position}.\nДелает 2-step запрос: POST для token, GET search-result/<token>.","operationId":"v916_inn_lookup_api_org_inn_lookup_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/public/stats":{"get":{"tags":["public"],"summary":"S54 Public Stats","operationId":"s54_public_stats_api_public_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/owner/venue/{venue_id}/recent-acquisitions":{"get":{"summary":"V926 Recent Acquisitions","description":"V926: последние гости заведения для виджета 'live-feed' на venue_owner.html.\nБез auth-gate — возвращает публично-безопасные данные (имена + дельта времени).","operationId":"v926_recent_acquisitions_api_owner_venue__venue_id__recent_acquisitions_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/owner/venue/{venue_id}/recent-acquisitions-cross":{"get":{"summary":"V926 Cross Acquisitions","description":"V926: гости которые недавно были в ВАШЕМ заведении и потом отсканировали QR где-то ещё.\nЭто показывает 'отток в сеть' — самый сильный аргумент для владельца.","operationId":"v926_cross_acquisitions_api_owner_venue__venue_id__recent_acquisitions_cross_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/network/top-venues":{"get":{"summary":"V928 Top Venues","description":"V928: Топ заведений сети — promoted сначала, потом по acquisitions за 7 дней.","operationId":"v928_top_venues_api_network_top_venues_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/network/promote/start":{"post":{"summary":"V928 Promote Start","description":"V928: Включить продвижение venue на N дней. Тело: {venue_id, days, paid_rub, owner_tg_id}.\nЭто пока упрощённый эндпоинт — без YooKassa интеграции (можно добавить позже).","operationId":"v928_promote_start_api_network_promote_start_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mafia/hosts":{"get":{"summary":"V929 List Hosts","description":"V929: Список активных ведущих мафии.","operationId":"v929_list_hosts_api_mafia_hosts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/mafia/host/{host_id}/reviews":{"get":{"summary":"V929 Host Reviews","description":"V929: Отзывы на конкретного ведущего.","operationId":"v929_host_reviews_api_mafia_host__host_id__reviews_get","parameters":[{"name":"host_id","in":"path","required":true,"schema":{"type":"integer","title":"Host Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mafia/host/{host_id}/review":{"post":{"summary":"V929 Post Review","description":"V929: Оставить отзыв на ведущего. Тело: {tg_id, rating, text, event_id?}","operationId":"v929_post_review_api_mafia_host__host_id__review_post","parameters":[{"name":"host_id","in":"path","required":true,"schema":{"type":"integer","title":"Host Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mafia/events-with-hosts":{"get":{"summary":"V931 Events With Hosts","description":"V931: расширенный список мафия-вечеров с инфой о ведущем.","operationId":"v931_events_with_hosts_api_mafia_events_with_hosts_get","parameters":[{"name":"upcoming","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Upcoming"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mafia/host-by-tg":{"get":{"summary":"V936 Host By Tg","description":"V936: Найти host_id по tg_id. Используется FE для проверки регистрации ведущего.","operationId":"v936_host_by_tg_api_mafia_host_by_tg_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"string","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mafia/host/register":{"post":{"summary":"V936 Register Host","description":"V936: Зарегистрировать нового ведущего. Тело: {tg_id, display_name, bio?}","operationId":"v936_register_host_api_mafia_host_register_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mafia/events/create":{"post":{"summary":"V936 Create Event","description":"V936: Создать мафия-вечер. Auth: tg_id ведущего.\nBody: {tg_id, venue_id, title, description, scheduled_at (ISO), duration_min, max_players, min_players, price_rub}","operationId":"v936_create_event_api_mafia_events_create_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/network/venues-for-mafia":{"get":{"summary":"V936 Venues For Mafia","description":"V936: Список venues подходящих для проведения мафии (с owner и активные).","operationId":"v936_venues_for_mafia_api_network_venues_for_mafia_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/venue/register-self":{"post":{"summary":"V946 Venue Register Self","description":"V946: Self-serve регистрация заведения с привязкой owner_tg_id.\nBody: {tg_id, name, category, city, address, description, latitude, longitude, work_hours, phone}","operationId":"v946_venue_register_self_api_venue_register_self_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/inn/lookup":{"get":{"summary":"V946 Inn Lookup","description":"V968: Safe fallback (V946 egrul.nalog.ru proxy was failing 500). Manual entry suggested.","operationId":"v946_inn_lookup_api_inn_lookup_get","parameters":[{"name":"inn","in":"query","required":true,"schema":{"type":"string","title":"Inn"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mafia/events/{event_id}/promote":{"post":{"summary":"V947 Promote Event","description":"V947: Запустить продвижение мафия-вечера. Body: {tg_id, days?, paid_rub?}","operationId":"v947_promote_event_api_mafia_events__event_id__promote_post","parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"integer","title":"Event Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mafia/event/signup":{"post":{"summary":"V979 Mafia Event Signup","description":"V979_C: записаться на мафия-вечер. body: {event_id, [user_id|tg_id]}.\nuser_id — id из таблицы users (НЕ tg_id). Если передан только tg_id — резолвится.","operationId":"v979_mafia_event_signup_api_mafia_event_signup_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/mafia-events/signup":{"post":{"summary":"V979 Mafia Event Signup","description":"V979_C: записаться на мафия-вечер. body: {event_id, [user_id|tg_id]}.\nuser_id — id из таблицы users (НЕ tg_id). Если передан только tg_id — резолвится.","operationId":"v979_mafia_event_signup_api_mafia_events_signup_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/games/roles-by-type":{"get":{"summary":"V964 Roles By Type","description":"V964: Роли/локации/категории для конкретного game_type. Без auth для FE viewer.","operationId":"v964_roles_by_type_api_games_roles_by_type_get","parameters":[{"name":"game_type","in":"query","required":false,"schema":{"type":"string","default":"mafia","title":"Game Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/friends":{"get":{"summary":"V984 Me Friends","description":"V984: список друзей текущего юзера (биdir user_friends_v82).","operationId":"v984_me_friends_api_me_friends_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/friends/request":{"post":{"summary":"V984 Friends Request","description":"V984: отправить заявку в друзья. Body: {\"to_tg\": <bigint>} or query ?to_tg=...","operationId":"v984_friends_request_api_friends_request_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/friends/accept":{"post":{"summary":"V984 Friends Accept","description":"V984: принять заявку в друзья. Body: {\"from_tg\": ...} текущий юзер = me (tg_id query).","operationId":"v984_friends_accept_api_friends_accept_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/friends/reject":{"post":{"summary":"V984 Friends Reject","operationId":"v984_friends_reject_api_friends_reject_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/wheel/status":{"get":{"summary":"V984 Wheel Status","description":"V984: статус колеса (доступно ли крутить, cooldown 24ч).","operationId":"v984_wheel_status_api_wheel_status_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/wheel/spin":{"post":{"summary":"V984 Wheel Spin","description":"V984: крутить колесо удачи. Cooldown 24ч. Призы — монеты + редкие подарки.","operationId":"v984_wheel_spin_api_wheel_spin_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/venue-roulette/spin":{"post":{"summary":"V984 Venue Roulette","description":"V984: случайное venue из города юзера (или Ижевск по умолчанию).","operationId":"v984_venue_roulette_api_venue_roulette_spin_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/group-match/create":{"post":{"summary":"V984 Group Match Create","description":"V984: создать групповой матч (3+ человека). Body: {\"size\": 3, \"topic\": \"коктейли\", \"venue_id\": 12}","operationId":"v984_group_match_create_api_group_match_create_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/group-match/join":{"post":{"summary":"V984 Group Match Join","operationId":"v984_group_match_join_api_group_match_join_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/group-match/list":{"get":{"summary":"V984 Group Match List","operationId":"v984_group_match_list_api_group_match_list_get","parameters":[{"name":"city","in":"query","required":false,"schema":{"type":"string","title":"City"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/live-room/{room_id}/join":{"post":{"summary":"V984 Live Room Join","operationId":"v984_live_room_join_api_live_room__room_id__join_post","parameters":[{"name":"room_id","in":"path","required":true,"schema":{"type":"integer","title":"Room Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/live-room/{room_id}/leave":{"post":{"summary":"V984 Live Room Leave","operationId":"v984_live_room_leave_api_live_room__room_id__leave_post","parameters":[{"name":"room_id","in":"path","required":true,"schema":{"type":"integer","title":"Room Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/live-room/{room_id}/participants":{"get":{"summary":"V984 Live Room Participants","operationId":"v984_live_room_participants_api_live_room__room_id__participants_get","parameters":[{"name":"room_id","in":"path","required":true,"schema":{"type":"integer","title":"Room Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/verification/claim":{"post":{"summary":"V986 Verification Claim","description":"V986 #75: пользователь подаёт заявку на верификацию (selfie/doc/phone/social).","operationId":"v986_verification_claim_api_me_verification_claim_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/verification/status":{"get":{"summary":"V986 Verification Status","description":"V986 #75: текущий статус верификации (последняя заявка).","operationId":"v986_verification_status_api_me_verification_status_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/shop/discount/apply":{"post":{"summary":"V986 Discount Apply","description":"V986 #109: применить промокод к amount (kopeks). Idempotent — фиксирует redemption.","operationId":"v986_discount_apply_api_shop_discount_apply_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/shop/discount/list":{"get":{"summary":"V986 Discount List","description":"V986 #109: показать активные промокоды (для FE).","operationId":"v986_discount_list_api_shop_discount_list_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/me/profile-qr":{"get":{"summary":"V986 Profile Qr","description":"V986 #118: QR-data + share-payload для профиля.\nВозвращает text payload (deep-link) + ссылку на QR-картинку (через api.qrserver.com).","operationId":"v986_profile_qr_api_me_profile_qr_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}},{"name":"bot","in":"query","required":false,"schema":{"type":"string","default":"CellioMatchBot","title":"Bot"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/discover/rewind":{"post":{"summary":"V986 Rewind","description":"V986 #147: откатить последний свайп (dating_swipes from_user_id=tg_id→user_id).","operationId":"v986_rewind_api_discover_rewind_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/discover/rewind/history":{"get":{"summary":"V986 Rewind History","description":"V986 #147: история откатов (последние 20).","operationId":"v986_rewind_history_api_discover_rewind_history_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/dealbreakers":{"get":{"summary":"V986 Dealbreakers Get","description":"V986 #173: список dealbreakers юзера + словарь опций.","operationId":"v986_dealbreakers_get_api_me_dealbreakers_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"V986 Dealbreakers Set","description":"V986 #173: сохранить dealbreakers (массив ключей).","operationId":"v986_dealbreakers_set_api_me_dealbreakers_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/love-language/quiz":{"get":{"summary":"V986 Ll Quiz","description":"V986 #161: вопросы для квиза любовных языков.","operationId":"v986_ll_quiz_api_me_love_language_quiz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/me/love-language":{"post":{"summary":"V986 Ll Save","description":"V986 #161: сохранить ответы (массив индексов 0-4 длиной = #вопросов).\nСчитаем какой ключ доминирует.","operationId":"v986_ll_save_api_me_love_language_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"V986 Ll Get","description":"V986 #161: получить сохранённый результат.","operationId":"v986_ll_get_api_me_love_language_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/emergency-contact":{"get":{"summary":"V986 Emergency Get","description":"V986 #92: получить экстренный контакт.","operationId":"v986_emergency_get_api_me_emergency_contact_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"V986 Emergency Set","description":"V986 #92: сохранить экстренный контакт (upsert).","operationId":"v986_emergency_set_api_me_emergency_contact_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"V986 Emergency Del","description":"V986 #92: удалить экстренный контакт.","operationId":"v986_emergency_del_api_me_emergency_contact_delete","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mafia/{game_id}/join-bot":{"post":{"summary":"V987 Mafia Join Bot","description":"V987 helper: добавить N ботов в лобби. Использует реальных bot-юзеров (tg_id<0).","operationId":"v987_mafia_join_bot_api_mafia__game_id__join_bot_post","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_V987MafiaJoinBot"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mafia/{game_id}/start":{"post":{"summary":"V987 Mafia Start","description":"V987: запуск мафии — раздать роли, перейти в фазу night, round=1.","operationId":"v987_mafia_start_api_mafia__game_id__start_post","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mafia/{game_id}/night-action":{"post":{"summary":"V987 Mafia Night Action","description":"V987: ночное действие (mafia/doctor/detective подают цели).","operationId":"v987_mafia_night_action_api_mafia__game_id__night_action_post","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_V987MafiaNightAction"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mafia/{game_id}/resolve-night":{"post":{"summary":"V987 Mafia Resolve Night","description":"V987: подсчёт ночи — убийство/спасение/проверка. Если боты в игре — авто-симулируют действия.","operationId":"v987_mafia_resolve_night_api_mafia__game_id__resolve_night_post","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mafia/{game_id}/day-vote":{"post":{"summary":"V987 Mafia Day Vote","operationId":"v987_mafia_day_vote_api_mafia__game_id__day_vote_post","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_V987MafiaDayVote"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mafia/{game_id}/resolve-day":{"post":{"summary":"V987 Mafia Resolve Day","description":"V987: дневное голосование — изгнать большинством. Боты голосуют автоматически.","operationId":"v987_mafia_resolve_day_api_mafia__game_id__resolve_day_post","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mafia/{game_id}/state":{"get":{"summary":"V987 Mafia State","operationId":"v987_mafia_state_api_mafia__game_id__state_get","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bunker/{game_id}/join-bot":{"post":{"summary":"V987 Bunker Join Bot","operationId":"v987_bunker_join_bot_api_bunker__game_id__join_bot_post","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_V987JoinBotIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spyfall/{game_id}/join-bot":{"post":{"summary":"V987 Spyfall Join Bot","operationId":"v987_spyfall_join_bot_api_spyfall__game_id__join_bot_post","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_V987JoinBotIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tarot/spreads":{"get":{"summary":"V988 Tarot Spreads","operationId":"v988_tarot_spreads_api_tarot_spreads_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/tarot/spread/{spread_key}/draw":{"post":{"summary":"V988 Tarot Draw","operationId":"v988_tarot_draw_api_tarot_spread__spread_key__draw_post","parameters":[{"name":"spread_key","in":"path","required":true,"schema":{"type":"string","title":"Spread Key"}},{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/premium/plans":{"get":{"summary":"V988 Premium Plans","operationId":"v988_premium_plans_api_premium_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/premium/buy":{"post":{"summary":"V988 Premium Buy","operationId":"v988_premium_buy_api_premium_buy_post","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/date-invites":{"get":{"summary":"V988 My Date Invites","operationId":"v988_my_date_invites_api_me_date_invites_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}},{"name":"direction","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Direction"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/profile/{user_id}":{"get":{"summary":"V990 Get Profile By Id","description":"V990 #4: GET profile by user_id + auto-increment view counter.\nUNIQUE(viewer_id, profile_id, day) so 1 view per day per pair.\nHooks: INSERT into profile_views + INSERT into activity_feed_v83 (visit verb).","operationId":"v990_get_profile_by_id_api_profile__user_id__get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"viewer_tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Viewer Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/profile-view":{"post":{"summary":"V990 Profile View","description":"V990 #2: explicit profile-view hook. body: {viewer_tg_id, profile_user_id}.\nMirrors POST /api/me/visit but also writes feed entries.","operationId":"v990_profile_view_api_profile_view_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/feed-v990":{"get":{"summary":"V990 Feed With Views","description":"V990 #2: feed extended with profile_views (real-time activity from activity_feed_v83+feed_v82+profile_views).\nReturns events directed AT this user: who viewed/liked/visited THEM.","operationId":"v990_feed_with_views_api_feed_v990_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/push-config":{"get":{"summary":"V990 Push Config Get","description":"V990 #3: get push notification preferences.","operationId":"v990_push_config_get_api_me_push_config_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"summary":"V990 Push Config Put","description":"V990 #3: save push preferences. Body: {enabled, types}.","operationId":"v990_push_config_put_api_me_push_config_put","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V990PushConfig"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/push/test":{"post":{"summary":"V990 Push Test","description":"V990 #3: send a test push to user via Telegram bot if configured.","operationId":"v990_push_test_api_push_test_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tournament/bracket-create":{"post":{"summary":"V989 Tour Bracket Create","description":"Создать bracket-турнир. body: {name, max_players=8}","operationId":"v989_tour_bracket_create_api_tournament_bracket_create_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/tournament/bracket-join":{"post":{"summary":"V989 Tour Bracket Join","description":"body: {code, user_id?, display_name?, tg_id?}. Если нет user_id — создаст stub player.","operationId":"v989_tour_bracket_join_api_tournament_bracket_join_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/tournament/bracket-start":{"post":{"summary":"V989 Tour Bracket Start","description":"body: {code} or {tournament_id}. Симулирует все раунды до победителя.","operationId":"v989_tour_bracket_start_api_tournament_bracket_start_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/tournament/bracket/{tid}/state":{"get":{"summary":"V989 Tour Bracket State","operationId":"v989_tour_bracket_state_api_tournament_bracket__tid__state_get","parameters":[{"name":"tid","in":"path","required":true,"schema":{"type":"integer","title":"Tid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/compat/answer":{"post":{"summary":"V989 Compat Answer","description":"body: {question_id, answer_idx, tg_id?}. Stores per-question answer.","operationId":"v989_compat_answer_api_compat_answer_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/compat/result":{"get":{"summary":"V989 Compat Result","operationId":"v989_compat_result_api_compat_result_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/compat/with/{target_user_id}":{"get":{"summary":"V989 Compat With","description":"Взвешенный score между tg_id и target_user_id.","operationId":"v989_compat_with_api_compat_with__target_user_id__get","parameters":[{"name":"target_user_id","in":"path","required":true,"schema":{"type":"integer","title":"Target User Id"}},{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/topup/init":{"post":{"summary":"V989 Topup Init","description":"body: {coins, rub?, tg_id?, plan_key?} → возвращает payment_url через yukassa-create.","operationId":"v989_topup_init_api_topup_init_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/yukassa-webhook":{"post":{"summary":"V989 Yukassa Webhook Alias","description":"V989 alias to /api/payments/yukassa-webhook + marks topup_orders_v989 paid.","operationId":"v989_yukassa_webhook_alias_api_yukassa_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/me/delete-request":{"post":{"summary":"V989 Me Delete Request","description":"Мягкое удаление: дезактивирует профиль, помечает is_active=false. Email notify (mock log).","operationId":"v989_me_delete_request_api_me_delete_request_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/me/data-export":{"post":{"summary":"V989 Me Data Export","description":"JSON-export: profile + messages + gifts + venues. Возвращает download_url (data-uri stub).","operationId":"v989_me_data_export_api_me_data_export_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/me/theme":{"get":{"summary":"V992 Theme Get","operationId":"v992_theme_get_api_me_theme_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"put":{"summary":"V992 Theme Put","operationId":"v992_theme_put_api_me_theme_put","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/notif-badge":{"get":{"summary":"V992 Notif Badge","operationId":"v992_notif_badge_api_me_notif_badge_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/notifications/{notif_id}/read":{"post":{"summary":"V992 Notif Read One","description":"Single-notification mark-as-read (per V992 spec).","operationId":"v992_notif_read_one_api_notifications__notif_id__read_post","parameters":[{"name":"notif_id","in":"path","required":true,"schema":{"type":"integer","title":"Notif Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/preferences-v992":{"get":{"summary":"V992 Prefs Get","operationId":"v992_prefs_get_api_me_preferences_v992_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"put":{"summary":"V992 Prefs Put","operationId":"v992_prefs_put_api_me_preferences_v992_put","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/onboarding/status":{"get":{"summary":"V992 Onboard Status","operationId":"v992_onboard_status_api_me_onboarding_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/me/onboarding/complete":{"post":{"summary":"V992 Onboard Complete","operationId":"v992_onboard_complete_api_me_onboarding_complete_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/b2b/swipe":{"post":{"summary":"V991 B2B Swipe Alias","operationId":"v991_b2b_swipe_alias_api_b2b_swipe_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/me/settings":{"get":{"summary":"V991 Me Settings Get","description":"Алиас на /api/settings GET (V991 — для smoke-проверки).","operationId":"v991_me_settings_get_api_me_settings_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gift/inbox":{"get":{"summary":"V991 Gift Inbox Alias","description":"Алиас на /api/me/gifts-inbox.","operationId":"v991_gift_inbox_alias_api_gift_inbox_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/referral/code":{"get":{"summary":"V991 Referral Code","description":"Получить свой реферальный код. Создаёт если нет.","operationId":"v991_referral_code_api_referral_code_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/referral/redeem":{"post":{"summary":"V991 Referral Redeem","description":"Новый юзер вводит чужой реферальный код. Sender +50, receiver +30 coins.\nЗащита: rate-limit (1 redeem per user), self-redeem prevention, single-use per receiver.","operationId":"v991_referral_redeem_api_referral_redeem_post","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_V991RedeemIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v993/achievement-trigger":{"post":{"summary":"V993 Trigger Endpoint","operationId":"v993_trigger_endpoint_api_v993_achievement_trigger_post","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}},{"name":"event_type","in":"query","required":true,"schema":{"type":"string","title":"Event Type"}},{"name":"count_delta","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Count Delta"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/push/send":{"post":{"summary":"V993 Push Send","description":"Publish message to bot via redis. Bot listener forwards to Telegram.","operationId":"v993_push_send_api_push_send_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_V993PushIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/search":{"get":{"summary":"V993 Global Search","description":"Unified search w/ ru<->en transliteration and Levenshtein fuzzy.","operationId":"v993_global_search_api_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v993/checkin-hook":{"post":{"summary":"V993 Checkin Hook","operationId":"v993_checkin_hook_api_v993_checkin_hook_post","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/owner/venue/{venue_id}/stats.csv":{"get":{"summary":"V995 Owner Stats Csv","description":"CSV: date, acquisitions, returning, total_revenue.\nperiod: '7d' / '30d' / '90d'.","operationId":"v995_owner_stats_csv_api_owner_venue__venue_id__stats_csv_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}},{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}},{"name":"period","in":"query","required":false,"schema":{"type":"string","default":"30d","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/photos/upload-multi":{"post":{"summary":"V995 Upload Multi","description":"POST multipart с несколькими files. Сохраняет, INSERT в photos (V995-таблица).\nВозвращает {ok, uploaded:[{id, url}], errors:[...]}.","operationId":"v995_upload_multi_api_photos_upload_multi_post","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_v995_upload_multi_api_photos_upload_multi_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stories/{story_id}/view":{"post":{"summary":"V995 Story View","description":"Инкрементируем user_stories_v83.view_count. Тоже пишем уникальный view в story_views_v995 (best-effort).","operationId":"v995_story_view_api_stories__story_id__view_post","parameters":[{"name":"story_id","in":"path","required":true,"schema":{"type":"integer","title":"Story Id"}},{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stories/{story_id}/react":{"post":{"summary":"V995 Story React","description":"Запись в story_reactions_v995(story_id, user_id, emoji). user_id определяется по tg_id.","operationId":"v995_story_react_api_stories__story_id__react_post","parameters":[{"name":"story_id","in":"path","required":true,"schema":{"type":"integer","title":"Story Id"}},{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/stories-v995":{"get":{"summary":"V995 Me Stories","description":"Расширенный /api/me/stories: каждой истории view_count + reactions_count.","operationId":"v995_me_stories_api_me_stories_v995_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/cookoff/list":{"get":{"summary":"Cookoff List V2","operationId":"cookoff_list_v2_api_cookoff_list_get","parameters":[{"name":"sort","in":"query","required":false,"schema":{"type":"string","pattern":"^(objective|legacy|votes|recent|name)$","default":"objective","title":"Sort"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":60,"title":"Limit"}},{"name":"verdict","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Verdict"}},{"name":"source","in":"query","required":false,"schema":{"type":"string","pattern":"^(editorial|popular_reference|community|all)$","default":"editorial","title":"Source"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/cookoff/recipe/{num}":{"get":{"summary":"Cookoff Recipe V2","operationId":"cookoff_recipe_v2_api_cookoff_recipe__num__get","parameters":[{"name":"num","in":"path","required":true,"schema":{"type":"string","title":"Num"}},{"name":"tg_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/cookoff/vote":{"post":{"summary":"Cookoff Vote V2","operationId":"cookoff_vote_v2_api_cookoff_vote_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/profile/food-tags":{"get":{"summary":"Food Tags Get","operationId":"food_tags_get_api_profile_food_tags_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Food Tags Set","operationId":"food_tags_set_api_profile_food_tags_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FoodTagsIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/cookoff/submit":{"post":{"summary":"Cookoff Submit P3","operationId":"cookoff_submit_p3_api_cookoff_submit_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CookoffSubmitIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/cookoff/my-submissions":{"get":{"summary":"Cookoff My Subs P3","operationId":"cookoff_my_subs_p3_api_cookoff_my_submissions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/feedback":{"post":{"summary":"Feedback Submit P3","operationId":"feedback_submit_p3_api_feedback_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/feedback/my":{"get":{"summary":"Feedback My P3","operationId":"feedback_my_p3_api_feedback_my_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/cookoff/ingredients-search":{"get":{"summary":"Cookoff Ingredients Search","operationId":"cookoff_ingredients_search_api_cookoff_ingredients_search_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"category","in":"query","required":false,"schema":{"type":"string","default":"","title":"Category"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/cookoff/calc-preview":{"post":{"summary":"Cookoff Calc Preview","description":"Превью расчёта без сохранения — для UI live-feedback.","operationId":"cookoff_calc_preview_api_cookoff_calc_preview_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CookoffSubmitV2"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/cookoff/submit-v2":{"post":{"summary":"Cookoff Submit V2 P3","operationId":"cookoff_submit_v2_p3_api_cookoff_submit_v2_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CookoffSubmitV2"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/cookoff/queue":{"get":{"summary":"Admin Cookoff Queue","operationId":"admin_cookoff_queue_api_admin_cookoff_queue_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/cookoff/moderate":{"post":{"summary":"Admin Cookoff Moderate","operationId":"admin_cookoff_moderate_api_admin_cookoff_moderate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModerateIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/feedback/queue":{"get":{"summary":"Admin Feedback Queue","operationId":"admin_feedback_queue_api_admin_feedback_queue_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/feedback/moderate":{"post":{"summary":"Admin Feedback Moderate","operationId":"admin_feedback_moderate_api_admin_feedback_moderate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackModerateIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/cookoff/ingredient-add-custom":{"post":{"summary":"Ingredient Add Custom","description":"User-submitted ingredient: insert with placeholder values, prefix name with '[U]' so admin sees pending.","operationId":"ingredient_add_custom_api_cookoff_ingredient_add_custom_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngredientCustom"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/deploy/upload-static":{"post":{"summary":" Admin Upload Static","operationId":"_admin_upload_static_api_admin_deploy_upload_static_post","parameters":[{"name":"X-Admin-Token","in":"header","required":false,"schema":{"type":"string","title":"X-Admin-Token"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body__admin_upload_static_api_admin_deploy_upload_static_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/deploy/sql-exec":{"post":{"summary":" Admin Sql Exec","operationId":"_admin_sql_exec_api_admin_deploy_sql_exec_post","parameters":[{"name":"X-Admin-Token","in":"header","required":false,"schema":{"type":"string","title":"X-Admin-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/deploy/index-html-patch":{"post":{"summary":" Admin Idx Patch","operationId":"_admin_idx_patch_api_admin_deploy_index_html_patch_post","parameters":[{"name":"X-Admin-Token","in":"header","required":false,"schema":{"type":"string","title":"X-Admin-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/deploy/index-html-inject-head":{"post":{"summary":" Admin Inject Head","operationId":"_admin_inject_head_api_admin_deploy_index_html_inject_head_post","parameters":[{"name":"X-Admin-Token","in":"header","required":false,"schema":{"type":"string","title":"X-Admin-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/deploy/api-py-append":{"post":{"summary":" Admin Api Append","description":"Append Python code to /app/webapp/api.py (for new routes). Requires restart to take effect.","operationId":"_admin_api_append_api_admin_deploy_api_py_append_post","parameters":[{"name":"X-Admin-Token","in":"header","required":false,"schema":{"type":"string","title":"X-Admin-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/deploy/restart-webapp":{"post":{"summary":" Admin Restart","operationId":"_admin_restart_api_admin_deploy_restart_webapp_post","parameters":[{"name":"X-Admin-Token","in":"header","required":false,"schema":{"type":"string","title":"X-Admin-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/deploy/status":{"get":{"summary":" Admin Status","operationId":"_admin_status_api_admin_deploy_status_get","parameters":[{"name":"X-Admin-Token","in":"header","required":false,"schema":{"type":"string","title":"X-Admin-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/cookoff/diet-tags-map":{"get":{"summary":"Cookoff Diet Tags Map","description":"Lightweight: возвращает map {num: [tags]} для всех recipes.","operationId":"cookoff_diet_tags_map_api_cookoff_diet_tags_map_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/cookoff/diet-tags":{"get":{"summary":"Cookoff Diet Tags S46","operationId":"cookoff_diet_tags_s46_api_cookoff_diet_tags_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/deploy/_debug_globals_s46":{"get":{"summary":" Debug Globals S46","operationId":"_debug_globals_s46_api_admin_deploy__debug_globals_s46_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/deploy/_debug_g2_s46":{"get":{"summary":" Debug G2 S46","operationId":"_debug_g2_s46_api_admin_deploy__debug_g2_s46_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/deploy/_debug_g3_s46":{"get":{"summary":" Debug G3 S46","operationId":"_debug_g3_s46_api_admin_deploy__debug_g3_s46_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/cookoff/diet-tags-v2":{"get":{"summary":"Cookoff Diet Tags S46 V2","operationId":"cookoff_diet_tags_s46_v2_api_cookoff_diet_tags_v2_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/deploy/static-patch":{"post":{"summary":" Admin Static Patch S46","operationId":"_admin_static_patch_s46_api_admin_deploy_static_patch_post","parameters":[{"name":"X-Admin-Token","in":"header","required":false,"schema":{"type":"string","title":"X-Admin-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/feedback/award":{"post":{"summary":" Admin Feedback Award S46","operationId":"_admin_feedback_award_s46_api_admin_feedback_award_post","parameters":[{"name":"X-Admin-Token","in":"header","required":false,"schema":{"type":"string","title":"X-Admin-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/feedback/my-rewards":{"get":{"summary":" My Feedback Rewards S46","operationId":"_my_feedback_rewards_s46_api_feedback_my_rewards_get","parameters":[{"name":"user_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/feedback/bug-leaderboard":{"get":{"summary":" Feedback Leaderboard S46","operationId":"_feedback_leaderboard_s46_api_feedback_bug_leaderboard_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/wiki/photo":{"get":{"summary":" Wiki Photo S46","operationId":"_wiki_photo_s46_api_wiki_photo_get","parameters":[{"name":"title","in":"query","required":false,"schema":{"type":"string","default":"","title":"Title"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/cookoff/cooking-times":{"get":{"summary":" Cookoff Cooking Times S46","description":"Returns {num: cooking_time_min} for all editorial recipes. One fetch вместо 90.","operationId":"_cookoff_cooking_times_s46_api_cookoff_cooking_times_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/cookoff/cooking-times-v2":{"get":{"summary":" Cookoff Cooking Times V2 S46","operationId":"_cookoff_cooking_times_v2_s46_api_cookoff_cooking_times_v2_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/cookoff/list-v2":{"get":{"summary":" Cookoff List V2 S46","description":"Same as /api/cookoff/list but includes cooking_time_min and diet_tags fields.","operationId":"_cookoff_list_v2_s46_api_cookoff_list_v2_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Limit"}},{"name":"source","in":"query","required":false,"schema":{"type":"string","default":"editorial","title":"Source"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/cookoff/list-v3":{"get":{"summary":" Cookoff List V3 S46","operationId":"_cookoff_list_v3_s46_api_cookoff_list_v3_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Limit"}},{"name":"source","in":"query","required":false,"schema":{"type":"string","default":"editorial","title":"Source"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/track-referral":{"post":{"summary":" Partners Track Referral S46","operationId":"_partners_track_referral_s46_api_partners_track_referral_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_S46TrackReferralReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/list":{"get":{"summary":" Partners List S46","operationId":"_partners_list_s46_api_partners_list_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/partners/{slug}/stats":{"get":{"summary":" Partner Stats S46","operationId":"_partner_stats_s46_api_partners__slug__stats_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/register":{"post":{"summary":" Partner Register S46","operationId":"_partner_register_s46_api_partners_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_S46PartnerRegisterReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/events/create":{"post":{"summary":" S47 Create Event","operationId":"_s47_create_event_api_partners_events_create_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/events/list":{"get":{"summary":" S47 List Events","operationId":"_s47_list_events_api_partners_events_list_get","parameters":[{"name":"partner_slug","in":"query","required":false,"schema":{"type":"string","title":"Partner Slug"}},{"name":"upcoming_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Upcoming Only"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/events/rsvp":{"post":{"summary":" S47 Rsvp","operationId":"_s47_rsvp_api_partners_events_rsvp_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/events/my":{"get":{"summary":" S47 My Rsvps","operationId":"_s47_my_rsvps_api_partners_events_my_get","parameters":[{"name":"user_tg_id","in":"query","required":true,"schema":{"type":"integer","title":"User Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/events/checkin":{"post":{"summary":" S47 Checkin","operationId":"_s47_checkin_api_partners_events_checkin_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/events/{event_slug}/stats":{"get":{"summary":" S47 Event Stats","operationId":"_s47_event_stats_api_partners_events__event_slug__stats_get","parameters":[{"name":"event_slug","in":"path","required":true,"schema":{"type":"string","title":"Event Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/events/create_v2":{"post":{"summary":" S47 Create Event V2","operationId":"_s47_create_event_v2_api_partners_events_create_v2_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/qr":{"get":{"summary":" S48 Qr","description":"Generate QR PNG inline. Pure Python — no external deps required.\nUses qrcode lib if available, else falls back to a simple SVG.","operationId":"_s48_qr_api_qr_get","parameters":[{"name":"text","in":"query","required":false,"schema":{"type":"string","default":"","title":"Text"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/events/{event_slug}/rsvps":{"get":{"summary":" S49 Event Rsvps","description":"Admin-only — list all RSVPs for event.","operationId":"_s49_event_rsvps_api_partners_events__event_slug__rsvps_get","parameters":[{"name":"event_slug","in":"path","required":true,"schema":{"type":"string","title":"Event Slug"}},{"name":"x-admin-token","in":"header","required":false,"schema":{"type":"string","title":"X-Admin-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/events/checkin_v2":{"post":{"summary":" S50 Checkin V2","description":"Mark RSVP attended + give user +5 coins (one-time per event).","operationId":"_s50_checkin_v2_api_partners_events_checkin_v2_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/event/{event_slug}":{"get":{"summary":" S51 Event Landing","operationId":"_s51_event_landing_event__event_slug__get","parameters":[{"name":"event_slug","in":"path","required":true,"schema":{"type":"string","title":"Event Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/event_v2/{event_slug}":{"get":{"summary":" S51 Event Landing V2","description":"Same as /event/{slug} but with Russian date formatting.","operationId":"_s51_event_landing_v2_event_v2__event_slug__get","parameters":[{"name":"event_slug","in":"path","required":true,"schema":{"type":"string","title":"Event Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/event_v3/{event_slug}":{"get":{"summary":" S51 Event Landing V3","operationId":"_s51_event_landing_v3_event_v3__event_slug__get","parameters":[{"name":"event_slug","in":"path","required":true,"schema":{"type":"string","title":"Event Slug"}},{"name":"token","in":"query","required":false,"schema":{"type":"string","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"}}}}}}},"/api/partners/{partner_slug}/auth":{"post":{"summary":" S52 Partner Auth","description":"Owner provides their tg_id to verify ownership. Returns success + partner stats summary.","operationId":"_s52_partner_auth_api_partners__partner_slug__auth_post","parameters":[{"name":"partner_slug","in":"path","required":true,"schema":{"type":"string","title":"Partner Slug"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/{partner_slug}/dashboard":{"get":{"summary":" S52 Partner Dashboard","description":"Fetch full dashboard data for a partner. Auth via owner_tg_id query param.","operationId":"_s52_partner_dashboard_api_partners__partner_slug__dashboard_get","parameters":[{"name":"partner_slug","in":"path","required":true,"schema":{"type":"string","title":"Partner Slug"}},{"name":"owner_tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Owner Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/leaderboard":{"get":{"summary":" S53 Leaderboard","description":"Public leaderboard of partners by total_referrals.","operationId":"_s53_leaderboard_api_partners_leaderboard_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/partner/{partner_slug}":{"get":{"summary":" S54 Partner Landing","operationId":"_s54_partner_landing_partner__partner_slug__get","parameters":[{"name":"partner_slug","in":"path","required":true,"schema":{"type":"string","title":"Partner Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dates/invite_v2":{"post":{"summary":" S55 Invite V2","description":"Create structured date invitation. Body: {from_user_id, to_user_id, venue_id?, proposed_date?, who_pays, who_books, message?}","operationId":"_s55_invite_v2_api_dates_invite_v2_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dates/invitation/{invitation_id}/respond":{"post":{"summary":" S55 Respond","description":"Accept/decline invitation. Body: {user_tg_id, action ('accept'|'decline'), response_message?}","operationId":"_s55_respond_api_dates_invitation__invitation_id__respond_post","parameters":[{"name":"invitation_id","in":"path","required":true,"schema":{"type":"integer","title":"Invitation Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dates/my_invitations":{"get":{"summary":" S55 My Invitations","description":"List user's invitations. role='incoming' (received) or 'outgoing' (sent).","operationId":"_s55_my_invitations_api_dates_my_invitations_get","parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"role","in":"query","required":false,"schema":{"type":"string","default":"incoming","title":"Role"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/events/{slug}/group_invite":{"post":{"tags":["partners-events"],"summary":"S47 Group Invite Create","description":"Create or fetch a group-invite link for an event by inviter user_id.\nReturns: {ok, invite_code, share_url, deep_link}","operationId":"s47_group_invite_create_api_partners_events__slug__group_invite_post","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/events/group_invite/accept":{"post":{"tags":["partners-events"],"summary":"S47 Group Invite Accept","description":"Accept a group invite — auto-RSVP the user to the event.\nbody: {invite_code, user_id}\nReturns: {ok, event_slug, event_title, rsvp_id}","operationId":"s47_group_invite_accept_api_partners_events_group_invite_accept_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/events/{slug}/group_invite_v2":{"post":{"summary":"S47 Group Invite Create V2","description":"Create or fetch a group-invite link for an event by inviter user_id.","operationId":"s47_group_invite_create_v2_api_partners_events__slug__group_invite_v2_post","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/events/group_invite/accept_v2":{"post":{"summary":"S47 Group Invite Accept V2","description":"Accept a group invite — auto-RSVP the user to the event.","operationId":"s47_group_invite_accept_v2_api_partners_events_group_invite_accept_v2_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/events/{slug}/group_invite_v3":{"post":{"summary":"S47 Group Invite Create V3","operationId":"s47_group_invite_create_v3_api_partners_events__slug__group_invite_v3_post","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/events/group_invite/accept_v3":{"post":{"summary":"S47 Group Invite Accept V3","operationId":"s47_group_invite_accept_v3_api_partners_events_group_invite_accept_v3_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/events/{slug}/group_invite_v4":{"post":{"summary":"S47 Group Invite Create V4","operationId":"s47_group_invite_create_v4_api_partners_events__slug__group_invite_v4_post","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/events/group_invite/accept_v4":{"post":{"summary":"S47 Group Invite Accept V4","operationId":"s47_group_invite_accept_v4_api_partners_events_group_invite_accept_v4_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/events/group_invite/accept_v5":{"post":{"summary":"S47 Group Invite Accept V5","operationId":"s47_group_invite_accept_v5_api_partners_events_group_invite_accept_v5_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/events/group_invite/accept_v6":{"post":{"summary":"S47 Group Invite Accept V6","operationId":"s47_group_invite_accept_v6_api_partners_events_group_invite_accept_v6_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/achievements/me":{"get":{"summary":"S47 My Achievements","description":"Return earned + locked badges for a user. Side-effect: re-evaluate triggers.","operationId":"s47_my_achievements_api_partners_achievements_me_get","parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/top_hosts":{"get":{"summary":"S47 Top Hosts","description":"Return partners ranked by total RSVPs across their events in the past `days` days.","operationId":"s47_top_hosts_api_partners_top_hosts_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/achievements/me_v2":{"get":{"summary":"S47 My Achievements V2","description":"Same as v1 but also evaluates event_streak_3 + month_5_events badges.","operationId":"s47_my_achievements_v2_api_partners_achievements_me_v2_get","parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/events/{slug}/attendees":{"get":{"summary":"S47 Event Attendees","description":"Return up to `limit` attendees (first names only) for an event.\nPrivacy: only users who opted-in via prefs.show_on_event_list (default false → hidden).\nAnonymous fallback: returns count even if names hidden.","operationId":"s47_event_attendees_api_partners_events__slug__attendees_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":12,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/profile/prefs/event_visibility":{"post":{"summary":"S47 Event Visibility","description":"Toggle whether user wants name shown on event attendee lists.\nbody: {user_id: int, show: bool}","operationId":"s47_event_visibility_api_profile_prefs_event_visibility_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"S47 Event Visibility Get","operationId":"s47_event_visibility_get_api_profile_prefs_event_visibility_get","parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/profile/prefs/event_visibility_v2":{"post":{"summary":"S47 Event Visibility V2","operationId":"s47_event_visibility_v2_api_profile_prefs_event_visibility_v2_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/events/group_invite/accept_v7":{"post":{"summary":"S47 Group Invite Accept V7","operationId":"s47_group_invite_accept_v7_api_partners_events_group_invite_accept_v7_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/events/{slug}/meta":{"post":{"summary":"S49 Event Meta","operationId":"s49_event_meta_api_partners_events__slug__meta_post","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/events/{slug}/rsvp_squad":{"post":{"summary":"S49 Rsvp Squad","operationId":"s49_rsvp_squad_api_partners_events__slug__rsvp_squad_post","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/events/{slug}/game_result":{"post":{"summary":"S49 Game Result","operationId":"s49_game_result_api_partners_events__slug__game_result_post","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/me/game_history":{"get":{"summary":"S49 My Game History","operationId":"s49_my_game_history_api_partners_me_game_history_get","parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/me/smart_pairs":{"get":{"summary":"S49 Smart Pairs","description":"Suggest matches based on voting patterns: people who voted FOR you OR you voted for THEM.","operationId":"s49_smart_pairs_api_partners_me_smart_pairs_get","parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":5,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/events/{slug}/feedback_anon":{"post":{"summary":"S49 Feedback Anon","operationId":"s49_feedback_anon_api_partners_events__slug__feedback_anon_post","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/wishlist/subscribe":{"post":{"summary":"S49 Wish Subscribe","operationId":"s49_wish_subscribe_api_partners_wishlist_subscribe_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/events/{slug}/expand_recurrence":{"post":{"summary":"S49 Expand Recurrence","description":"Generate next 4 weekly instances of an event marked recurrence='weekly'.","operationId":"s49_expand_recurrence_api_partners_events__slug__expand_recurrence_post","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/s50_probe":{"get":{"summary":"S50 Probe Noop","operationId":"s50_probe_noop_api_s50_probe_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/partners/events/list_v2":{"get":{"summary":"Partner Events List V2 S50","operationId":"partner_events_list_v2_s50_api_partners_events_list_v2_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"partner_slug","in":"query","required":false,"schema":{"type":"string","title":"Partner Slug"}},{"name":"upcoming_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Upcoming Only"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/list_v2":{"get":{"summary":"Partners List V2 S50","operationId":"partners_list_v2_s50_api_partners_list_v2_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/healthz_v2":{"get":{"summary":"Healthz V2 S50","operationId":"healthz_v2_s50_api_healthz_v2_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/feedback/submit_v2":{"post":{"summary":"Feedback Submit V2 S50","operationId":"feedback_submit_v2_s50_api_feedback_submit_v2_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/feedback/my_rewards_v2":{"get":{"summary":"Feedback My Rewards V2 S50","operationId":"feedback_my_rewards_v2_s50_api_feedback_my_rewards_v2_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/s50_marker":{"get":{"summary":"S50 Marker S50","operationId":"s50_marker_s50_api_s50_marker_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/partners/register_v2":{"post":{"summary":"Partners Register V2 S50","operationId":"partners_register_v2_s50_api_partners_register_v2_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/partners/list_full":{"get":{"summary":"Partners List Full S50","operationId":"partners_list_full_s50_api_partners_list_full_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/s50_status":{"get":{"summary":"S50 Status S50","operationId":"s50_status_s50_api_s50_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/feedback/submit_v3":{"post":{"summary":"Feedback Submit V3 S50","operationId":"feedback_submit_v3_s50_api_feedback_submit_v3_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/feedback/my_rewards_v3":{"get":{"summary":"Feedback My Rewards V3 S50","operationId":"feedback_my_rewards_v3_s50_api_feedback_my_rewards_v3_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/feedback/submit_v4":{"post":{"summary":"Feedback Submit V4 S50","operationId":"feedback_submit_v4_s50_api_feedback_submit_v4_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/strategy_e/apply_find12":{"post":{"summary":"Strategy E Apply Find12 S50","operationId":"strategy_e_apply_find12_s50_api_admin_strategy_e_apply_find12_post","parameters":[{"name":"x-admin-token","in":"header","required":false,"schema":{"type":"string","title":"X-Admin-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/strategy_e/start":{"post":{"summary":"Strategy E Start S50","operationId":"strategy_e_start_s50_api_admin_strategy_e_start_post","parameters":[{"name":"x-admin-token","in":"header","required":false,"schema":{"type":"string","title":"X-Admin-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/strategy_e/stop":{"post":{"summary":"Strategy E Stop S50","operationId":"strategy_e_stop_s50_api_admin_strategy_e_stop_post","parameters":[{"name":"x-admin-token","in":"header","required":false,"schema":{"type":"string","title":"X-Admin-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/strategy_e/status":{"get":{"summary":"Strategy E Status S50","operationId":"strategy_e_status_s50_api_admin_strategy_e_status_get","parameters":[{"name":"x-admin-token","in":"header","required":false,"schema":{"type":"string","title":"X-Admin-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/mafia/cleanup-stale":{"post":{"summary":"S50 Mafia Cleanup Stale","operationId":"s50_mafia_cleanup_stale_api_venue_mafia_cleanup_stale_post","parameters":[{"name":"ttl_min","in":"query","required":false,"schema":{"type":"integer","maximum":1440,"minimum":5,"default":60,"title":"Ttl Min"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/_s50_debug_db":{"get":{"summary":" S50 Debug Db","operationId":"_s50_debug_db_api__s50_debug_db_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/_s50_debug_db2":{"get":{"summary":" S50 Debug Db2","operationId":"_s50_debug_db2_api__s50_debug_db2_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/_s50_debug_db3":{"get":{"summary":" S50 Debug Db3","operationId":"_s50_debug_db3_api__s50_debug_db3_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/_s50_debug_inspect":{"get":{"summary":" S50 Debug Inspect","operationId":"_s50_debug_inspect_api__s50_debug_inspect_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/_s50_debug_inspect2":{"get":{"summary":" S50 Debug Inspect2","operationId":"_s50_debug_inspect2_api__s50_debug_inspect2_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/partners/events/announce":{"post":{"tags":["partners-events"],"summary":"S53 Announce Event","operationId":"s53_announce_event_api_partners_events_announce_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_AnnounceReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/events/announce_v2":{"post":{"tags":["partners-events"],"summary":"S54 Announce Event V2","operationId":"s54_announce_event_v2_api_partners_events_announce_v2_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_S54AnnReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/events/notify_subscribers":{"post":{"tags":["partners-events"],"summary":"S54 Notify Subscribers","operationId":"s54_notify_subscribers_api_partners_events_notify_subscribers_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_S54NotifyReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/me/subscribers_count":{"get":{"tags":["partners"],"summary":"S54 Subs Count","operationId":"s54_subs_count_api_partners_me_subscribers_count_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"owner_tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Owner Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/me/subscribers_list":{"get":{"tags":["partners"],"summary":"S54 Subs List","operationId":"s54_subs_list_api_partners_me_subscribers_list_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"owner_tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Owner Tg Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/me/subscribers.csv":{"get":{"tags":["partners"],"summary":"S54 Subs Csv","operationId":"s54_subs_csv_api_partners_me_subscribers_csv_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"owner_tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Owner Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/me/event_rsvps.csv":{"get":{"tags":["partners"],"summary":"S54 Event Rsvps Csv","operationId":"s54_event_rsvps_csv_api_partners_me_event_rsvps_csv_get","parameters":[{"name":"event_slug","in":"query","required":true,"schema":{"type":"string","title":"Event Slug"}},{"name":"owner_tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Owner Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subscribers/unsubscribe":{"post":{"tags":["public"],"summary":"S54 Unsubscribe","operationId":"s54_unsubscribe_api_subscribers_unsubscribe_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_S54UnReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/events/set_visibility":{"post":{"tags":["partners-events"],"summary":"S54 Set Visibility","operationId":"s54_set_visibility_api_partners_events_set_visibility_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_S54VisReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/user/swipe_left_reason":{"post":{"tags":["growth"],"summary":"S54 Swipe Left Reason","operationId":"s54_swipe_left_reason_api_user_swipe_left_reason_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_S54SwipeLeftReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/user/me/growth":{"get":{"tags":["growth"],"summary":"S54 Growth For User","operationId":"s54_growth_for_user_api_user_me_growth_get","parameters":[{"name":"user_tg_id","in":"query","required":true,"schema":{"type":"integer","title":"User Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/user/swipe/candidates":{"get":{"tags":["dating"],"summary":"S54 Swipe Candidates","description":"Кандидаты: активные профили из города юзера (если city не указан, берём из его профиля),\nисключая тех кого уже свайпали и самого себя.\nЗдесь user_tg_id мы трактуем как user_id в dating_profiles (legacy: tg_id == user_id).","operationId":"s54_swipe_candidates_api_user_swipe_candidates_get","parameters":[{"name":"user_tg_id","in":"query","required":true,"schema":{"type":"integer","title":"User Tg Id"}},{"name":"city","in":"query","required":false,"schema":{"type":"string","title":"City"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":30,"minimum":1,"default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/user/swipe":{"post":{"tags":["dating"],"summary":"S54 Swipe Action","operationId":"s54_swipe_action_api_user_swipe_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_S54SwipeReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/growth/stats":{"get":{"summary":"S54 Growth Stats","description":"Aggregate growth_signals_v1 stats for admin dashboard.","operationId":"s54_growth_stats_api_admin_growth_stats_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":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/growth/stats_v2":{"get":{"tags":["admin"],"summary":"S54 Growth Stats V2","description":"Aggregate growth_signals_v1 stats for admin dashboard.","operationId":"s54_growth_stats_v2_api_admin_growth_stats_v2_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":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/user/me/meet_conditions":{"post":{"tags":["dating"],"summary":"S54 Meet Conditions Set","operationId":"s54_meet_conditions_set_api_user_me_meet_conditions_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_S54MeetReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["dating"],"summary":"S54 Meet Conditions Get","operationId":"s54_meet_conditions_get_api_user_me_meet_conditions_get","parameters":[{"name":"user_tg_id","in":"query","required":true,"schema":{"type":"integer","title":"User Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/cellio_status":{"get":{"tags":["admin"],"summary":"S54 Cellio Status Unified","description":"Единая сводка всех ключевых метрик одной точкой.","operationId":"s54_cellio_status_unified_api_admin_cellio_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/partners/me/premium_tier":{"post":{"tags":["partners"],"summary":"S54 Set Premium Tier","description":"Партнёр настраивает свой premium-тариф.","operationId":"s54_set_premium_tier_api_partners_me_premium_tier_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_S54TierSetReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/by_slug/{slug}/tier":{"get":{"tags":["partners"],"summary":"S54 Get Partner Tier","description":"Публичная инфа о premium-тарифе партнёра.","operationId":"s54_get_partner_tier_api_partners_by_slug__slug__tier_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/user/subscribe_to_partner":{"post":{"tags":["partners"],"summary":"S54 Subscribe To Partner","description":"Подписка пользователя на партнёра (free или premium).","operationId":"s54_subscribe_to_partner_api_user_subscribe_to_partner_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_S54SubscribeReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/user/me/partner_subscriptions":{"get":{"tags":["partners"],"summary":"S54 My Partner Subs","description":"Список подписок пользователя на партнёров (free/premium).","operationId":"s54_my_partner_subs_api_user_me_partner_subscriptions_get","parameters":[{"name":"user_tg_id","in":"query","required":true,"schema":{"type":"integer","title":"User Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/venues/suggest":{"post":{"tags":["partners-venues"],"summary":"S55 Venues Suggest","operationId":"s55_venues_suggest_api_partners_venues_suggest_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_S55VenuesSuggestReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/marketplace/offer":{"post":{"tags":["marketplace"],"summary":"S56 Create Offer","operationId":"s56_create_offer_api_marketplace_offer_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_S56OfferReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/marketplace/need":{"post":{"tags":["marketplace"],"summary":"S56 Create Need","operationId":"s56_create_need_api_marketplace_need_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_S56NeedReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/marketplace/list":{"get":{"tags":["marketplace"],"summary":"S56 List","operationId":"s56_list_api_marketplace_list_get","parameters":[{"name":"type","in":"query","required":false,"schema":{"type":"string","default":"offer","title":"Type"}},{"name":"deal_type","in":"query","required":false,"schema":{"type":"string","default":"","title":"Deal Type"}},{"name":"city","in":"query","required":false,"schema":{"type":"string","default":"","title":"City"}},{"name":"category","in":"query","required":false,"schema":{"type":"string","default":"","title":"Category"}},{"name":"user_tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"User Tg Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/marketplace/my":{"get":{"tags":["marketplace"],"summary":"S56 My","operationId":"s56_my_api_marketplace_my_get","parameters":[{"name":"user_tg_id","in":"query","required":true,"schema":{"type":"integer","title":"User Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/marketplace/propose_deal":{"post":{"tags":["marketplace"],"summary":"S56 Propose Deal","operationId":"s56_propose_deal_api_marketplace_propose_deal_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_S56DealReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/marketplace/match":{"get":{"tags":["marketplace"],"summary":"S56 Match","description":"side=offer id=N -> find needs matching this offer\nside=need  id=N -> find offers matching this need\nAlgorithm: same deal_type + same city + (same category gets score 1.0, else 0.5)","operationId":"s56_match_api_marketplace_match_get","parameters":[{"name":"side","in":"query","required":false,"schema":{"type":"string","default":"offer","title":"Side"}},{"name":"id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/me/analytics":{"get":{"tags":["partners"],"summary":"S57 Analytics","operationId":"s57_analytics_api_partners_me_analytics_get","parameters":[{"name":"owner_tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Owner Tg Id"}},{"name":"slug","in":"query","required":false,"schema":{"type":"string","default":"","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/events/{event_slug}.ics":{"get":{"tags":["events"],"summary":"S57 Event Ics","operationId":"s57_event_ics_api_events__event_slug__ics_get","parameters":[{"name":"event_slug","in":"path","required":true,"schema":{"type":"string","title":"Event Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/reviews":{"post":{"tags":["reviews"],"summary":"S57 Create Review","operationId":"s57_create_review_api_partners_reviews_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_S57ReviewReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/{partner_slug}/reviews":{"get":{"tags":["reviews"],"summary":"S57 List Reviews","operationId":"s57_list_reviews_api_partners__partner_slug__reviews_get","parameters":[{"name":"partner_slug","in":"path","required":true,"schema":{"type":"string","title":"Partner Slug"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/reviews_status":{"get":{"tags":["admin"],"summary":"S57 Reviews Status","operationId":"s57_reviews_status_api_admin_reviews_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/partners/reviews_v2":{"post":{"tags":["reviews"],"summary":"S57 Create Review V2","operationId":"s57_create_review_v2_api_partners_reviews_v2_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_S57ReviewV2Req"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/reviews_v3":{"post":{"tags":["reviews"],"summary":"S57 Create Review V3","operationId":"s57_create_review_v3_api_partners_reviews_v3_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_S57ReviewV2Req"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/pending_pushes/pull":{"get":{"tags":["internal"],"summary":"S57 Pull Pending Pushes","description":"Bot polling'ит этот endpoint. Возвращает queued записи, ставит status=processing","operationId":"s57_pull_pending_pushes_api_internal_pending_pushes_pull_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/pending_pushes/mark_sent":{"post":{"tags":["internal"],"summary":"S57 Mark Sent","operationId":"s57_mark_sent_api_internal_pending_pushes_mark_sent_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/pending_pushes/stats":{"get":{"tags":["internal"],"summary":"S57 Pushes Stats","operationId":"s57_pushes_stats_api_internal_pending_pushes_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/diag/disk":{"get":{"summary":"Admin Diag Disk S57","operationId":"admin_diag_disk_s57_api_admin_diag_disk_get","parameters":[{"name":"x-admin-token","in":"header","required":false,"schema":{"type":"string","title":"X-Admin-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/reviews_v4":{"post":{"tags":["reviews"],"summary":"S58 Create Review V4","operationId":"s58_create_review_v4_api_partners_reviews_v4_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_S58ReviewV4Req"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/{slug}/reviews_v2":{"get":{"tags":["reviews"],"summary":"S58 List Reviews V2","operationId":"s58_list_reviews_v2_api_partners__slug__reviews_v2_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/reviews/list":{"get":{"tags":["admin"],"summary":"S58 Admin Reviews List","operationId":"s58_admin_reviews_list_api_admin_reviews_list_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"include_hidden","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Hidden"}},{"name":"partner_slug","in":"query","required":false,"schema":{"type":"string","default":"","title":"Partner Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/reviews/hide":{"post":{"tags":["admin"],"summary":"S58 Admin Reviews Hide","operationId":"s58_admin_reviews_hide_api_admin_reviews_hide_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/reviews/restore":{"post":{"tags":["admin"],"summary":"S58 Admin Reviews Restore","operationId":"s58_admin_reviews_restore_api_admin_reviews_restore_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/marketplace/users_bulk":{"get":{"tags":["marketplace"],"summary":"S58 Marketplace Users Bulk","description":"ids — comma-separated user_tg_id list. Возвращает компактные offers/needs.\nДля рендера блока «🤝 Чем полезен / 🔍 Что ищет» в карточке свайпа.","operationId":"s58_marketplace_users_bulk_api_marketplace_users_bulk_get","parameters":[{"name":"ids","in":"query","required":false,"schema":{"type":"string","default":"","title":"Ids"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/marketplace/overlap":{"get":{"tags":["marketplace"],"summary":"S58 Marketplace Overlap","description":"Пересечения marketplace между двумя юзерами. Для match-banner conversation-starters.\nВозвращает:\n  a_can_help_b: [{a's offer title} :: {b's matching need title}]  (category-match)\n  b_can_help_a: [{b's offer title} :: {a's matching need title}]\n  shared_categories: [категории где у обоих есть либо offer либо need]","operationId":"s58_marketplace_overlap_api_marketplace_overlap_get","parameters":[{"name":"a","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"A"}},{"name":"b","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"B"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/marketplace/users_bulk_v2":{"get":{"tags":["marketplace"],"summary":"S58 Marketplace Users Bulk V2","operationId":"s58_marketplace_users_bulk_v2_api_marketplace_users_bulk_v2_get","parameters":[{"name":"ids","in":"query","required":false,"schema":{"type":"string","default":"","title":"Ids"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/marketplace/overlap_v2":{"get":{"tags":["marketplace"],"summary":"S58 Marketplace Overlap V2","operationId":"s58_marketplace_overlap_v2_api_marketplace_overlap_v2_get","parameters":[{"name":"a","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"A"}},{"name":"b","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"B"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/marketplace/users_bulk_v3":{"get":{"tags":["marketplace"],"summary":"S58 Marketplace Users Bulk V3","operationId":"s58_marketplace_users_bulk_v3_api_marketplace_users_bulk_v3_get","parameters":[{"name":"ids","in":"query","required":false,"schema":{"type":"string","default":"","title":"Ids"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/marketplace/overlap_v3":{"get":{"tags":["marketplace"],"summary":"S58 Marketplace Overlap V3","operationId":"s58_marketplace_overlap_v3_api_marketplace_overlap_v3_get","parameters":[{"name":"a","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"A"}},{"name":"b","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"B"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/marketplace/list_v2":{"get":{"tags":["marketplace"],"summary":"S58 List V2","operationId":"s58_list_v2_api_marketplace_list_v2_get","parameters":[{"name":"type","in":"query","required":false,"schema":{"type":"string","default":"offer","title":"Type"}},{"name":"deal_type","in":"query","required":false,"schema":{"type":"string","default":"","title":"Deal Type"}},{"name":"city","in":"query","required":false,"schema":{"type":"string","default":"","title":"City"}},{"name":"category","in":"query","required":false,"schema":{"type":"string","default":"","title":"Category"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/posts":{"post":{"tags":["social"],"summary":"S59 Create Post","operationId":"s59_create_post_api_partners_posts_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_S59PostReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["social"],"summary":"S59 List Posts","operationId":"s59_list_posts_api_partners_posts_get","parameters":[{"name":"partner_slug","in":"query","required":true,"schema":{"type":"string","title":"Partner Slug"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/social/accounts":{"get":{"tags":["social"],"summary":"S59 List Accounts","operationId":"s59_list_accounts_api_partners_social_accounts_get","parameters":[{"name":"partner_slug","in":"query","required":true,"schema":{"type":"string","title":"Partner Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/social/connect_mock":{"post":{"tags":["social"],"summary":"S59 Connect Mock","description":"До настройки VK App — mock-подключение для тестов flow.","operationId":"s59_connect_mock_api_partners_social_connect_mock_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_S59MockConnect"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/social/disconnect":{"post":{"tags":["social"],"summary":"S59 Disconnect","operationId":"s59_disconnect_api_partners_social_disconnect_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/social_queue/pull":{"get":{"tags":["internal"],"summary":"S59 Social Queue Pull","operationId":"s59_social_queue_pull_api_internal_social_queue_pull_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/social_queue/mark_sent":{"post":{"tags":["internal"],"summary":"S59 Social Queue Mark Sent","operationId":"s59_social_queue_mark_sent_api_internal_social_queue_mark_sent_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/social_queue/stats":{"get":{"tags":["internal"],"summary":"S59 Social Queue Stats","operationId":"s59_social_queue_stats_api_internal_social_queue_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/partners/social/oauth_start/vk":{"get":{"tags":["social"],"summary":"S59Vk Oauth Start","description":"Возвращает URL для редиректа на VK OAuth.\nkind='user' — токен пользователя (постит от своего имени)\nkind='group' — после OAuth user'a, потом отдельный flow для получения group access_token","operationId":"s59vk_oauth_start_api_partners_social_oauth_start_vk_get","parameters":[{"name":"partner_slug","in":"query","required":false,"schema":{"type":"string","default":"","title":"Partner Slug"}},{"name":"kind","in":"query","required":false,"schema":{"type":"string","default":"user","title":"Kind"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/social_account/expire":{"post":{"tags":["internal"],"summary":"S60 Social Account Expire","operationId":"s60_social_account_expire_api_internal_social_account_expire_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_S60ExpireReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/social_queue/recover":{"post":{"tags":["internal"],"summary":"S60 Social Queue Recover","description":"1. processing > 10 min -> back to queued (cron crashed mid-job)\n2. failed with attempts<3 and last attempt > 5 min ago -> queued (retry)\nReturns counts of moved rows.","operationId":"s60_social_queue_recover_api_internal_social_queue_recover_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/partners/social/oauth_start/vk_v2":{"get":{"tags":["social"],"summary":"S60V Oauth Start","description":"VK ID 2.1 authorization URL c PKCE.\nkind='user' -> user-token; 'group' -> токен для админа сообществ","operationId":"s60v_oauth_start_api_partners_social_oauth_start_vk_v2_get","parameters":[{"name":"partner_slug","in":"query","required":false,"schema":{"type":"string","default":"","title":"Partner Slug"}},{"name":"kind","in":"query","required":false,"schema":{"type":"string","default":"user","title":"Kind"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/social/oauth_callback/vk_v2":{"get":{"tags":["social"],"summary":"S60V Callback V2","operationId":"s60v_callback_v2_api_partners_social_oauth_callback_vk_v2_get","parameters":[{"name":"code","in":"query","required":false,"schema":{"type":"string","default":"","title":"Code"}},{"name":"state","in":"query","required":false,"schema":{"type":"string","default":"","title":"State"}},{"name":"device_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Device Id"}},{"name":"type","in":"query","required":false,"schema":{"type":"string","default":"","title":"Type"}},{"name":"error","in":"query","required":false,"schema":{"type":"string","default":"","title":"Error"}},{"name":"error_description","in":"query","required":false,"schema":{"type":"string","default":"","title":"Error Description"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/social/oauth_callback/vk":{"get":{"tags":["social"],"summary":"S60V Callback Unified","description":"Unified callback: если device_id или type=code_v2 → VK ID 2.1 flow.","operationId":"s60v_callback_unified_api_partners_social_oauth_callback_vk_get","parameters":[{"name":"code","in":"query","required":false,"schema":{"type":"string","default":"","title":"Code"}},{"name":"state","in":"query","required":false,"schema":{"type":"string","default":"","title":"State"}},{"name":"device_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Device Id"}},{"name":"type","in":"query","required":false,"schema":{"type":"string","default":"","title":"Type"}},{"name":"error","in":"query","required":false,"schema":{"type":"string","default":"","title":"Error"}},{"name":"error_description","in":"query","required":false,"schema":{"type":"string","default":"","title":"Error Description"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subs/plans":{"post":{"tags":["subs"],"summary":"S61 Plan Create","operationId":"s61_plan_create_api_subs_plans_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_S61_PlanCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["subs"],"summary":"S61 Plans List","operationId":"s61_plans_list_api_subs_plans_get","parameters":[{"name":"owner_type","in":"query","required":false,"schema":{"type":"string","default":"","title":"Owner Type"}},{"name":"owner_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Owner Id"}},{"name":"public_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Public Only"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subs/plans/update":{"post":{"tags":["subs"],"summary":"S61 Plan Update","operationId":"s61_plan_update_api_subs_plans_update_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_S61_PlanUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subs/plans/{plan_id}":{"get":{"tags":["subs"],"summary":"S61 Plan Get","operationId":"s61_plan_get_api_subs_plans__plan_id__get","parameters":[{"name":"plan_id","in":"path","required":true,"schema":{"type":"integer","title":"Plan Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subs/my":{"get":{"tags":["subs"],"summary":"S61 My Subs","operationId":"s61_my_subs_api_subs_my_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subs/subscribe_mock":{"post":{"tags":["subs"],"summary":"S61 Subscribe Mock","operationId":"s61_subscribe_mock_api_subs_subscribe_mock_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_S61_SubMock"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venues/services":{"post":{"tags":["venues"],"summary":"S62 Svc Create","operationId":"s62_svc_create_api_venues_services_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_S62_SvcCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venues/{venue_id}/services":{"get":{"tags":["venues"],"summary":"S62 Svc List","operationId":"s62_svc_list_api_venues__venue_id__services_get","parameters":[{"name":"venue_id","in":"path","required":true,"schema":{"type":"integer","title":"Venue Id"}},{"name":"available_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Available Only"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venues/services/delete":{"post":{"tags":["venues"],"summary":"S62 Svc Delete","operationId":"s62_svc_delete_api_venues_services_delete_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Req"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bids/requests":{"post":{"tags":["bids"],"summary":"S63 Req Create","operationId":"s63_req_create_api_bids_requests_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_S63_ReqCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["bids"],"summary":"S63 Req List","operationId":"s63_req_list_api_bids_requests_get","parameters":[{"name":"city","in":"query","required":false,"schema":{"type":"string","default":"","title":"City"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"open","title":"Status"}},{"name":"organizer_slug","in":"query","required":false,"schema":{"type":"string","default":"","title":"Organizer Slug"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bids/requests/{req_id}":{"get":{"tags":["bids"],"summary":"S63 Req Get","operationId":"s63_req_get_api_bids_requests__req_id__get","parameters":[{"name":"req_id","in":"path","required":true,"schema":{"type":"integer","title":"Req Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bids/offers":{"post":{"tags":["bids"],"summary":"S63 Bid Create","operationId":"s63_bid_create_api_bids_offers_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_S63_BidCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bids/requests/{req_id}/offers":{"get":{"tags":["bids"],"summary":"S63 Bids For Req","operationId":"s63_bids_for_req_api_bids_requests__req_id__offers_get","parameters":[{"name":"req_id","in":"path","required":true,"schema":{"type":"integer","title":"Req Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bids/offers/accept":{"post":{"tags":["bids"],"summary":"S63 Bid Accept","operationId":"s63_bid_accept_api_bids_offers_accept_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Req"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subs/plans/payee":{"post":{"tags":["subs"],"summary":"S64 Payee Set","operationId":"s64_payee_set_api_subs_plans_payee_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_S64_PayeeUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subs/plans/{plan_id}/payee":{"get":{"tags":["subs"],"summary":"S64 Payee Get","operationId":"s64_payee_get_api_subs_plans__plan_id__payee_get","parameters":[{"name":"plan_id","in":"path","required":true,"schema":{"type":"integer","title":"Plan Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subs/mark_paid":{"post":{"tags":["subs"],"summary":"S64 Mark Paid","operationId":"s64_mark_paid_api_subs_mark_paid_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_S64_MarkPaid"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subs/confirm_paid":{"post":{"tags":["subs"],"summary":"S64 Confirm Paid","operationId":"s64_confirm_paid_api_subs_confirm_paid_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Req"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subs/pending_confirmations":{"get":{"tags":["subs"],"summary":"S64 Pending","operationId":"s64_pending_api_subs_pending_confirmations_get","parameters":[{"name":"owner_tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Owner Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/cron/subs_reminders":{"post":{"tags":["subs"],"summary":"S65 Cron Reminders","description":"Запускается cron'ом ежедневно. Находит подписки с current_period_end в ближайшие\ndays_before дней, шлёт push-напоминалку в pending_partner_pushes (relay подхватит).\nНе спамим — учитываем last_reminder_at (минимум 36ч между напоминалками).","operationId":"s65_cron_reminders_api_cron_subs_reminders_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Req"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subs/yk_create_payment":{"post":{"tags":["subs"],"summary":" Yk Create","operationId":"_yk_create_api_subs_yk_create_payment_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Req"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/yk/webhook":{"post":{"tags":["yk"],"summary":" Yk Hook","operationId":"_yk_hook_api_yk_webhook_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Req"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/cron/yk_rebill":{"post":{"tags":["subs"],"summary":" Yk Rebill","operationId":"_yk_rebill_api_cron_yk_rebill_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Req"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/cron/yk_poll":{"post":{"tags":["subs"],"summary":" Yk Poll","operationId":"_yk_poll_api_cron_yk_poll_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Req"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/p/{slug}/offers":{"get":{"summary":"S61V2 Partner Offers Public List","operationId":"s61v2_partner_offers_public_list_api_p__slug__offers_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/partner_offers/upsert":{"post":{"summary":"S61V2 Partner Offers Admin Upsert","operationId":"s61v2_partner_offers_admin_upsert_api_admin_partner_offers_upsert_post","parameters":[{"name":"x-admin-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/partner_offers/delete":{"post":{"summary":"S61V2 Partner Offers Admin Delete","operationId":"s61v2_partner_offers_admin_delete_api_admin_partner_offers_delete_post","parameters":[{"name":"x-admin-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partner_offers/view":{"post":{"summary":"S61V2 Partner Offers View Tick","operationId":"s61v2_partner_offers_view_tick_api_partner_offers_view_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partner_offers/list":{"get":{"summary":"S61V3 Partner Offers List","operationId":"s61v3_partner_offers_list_api_partner_offers_list_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partner_offers/admin/upsert":{"post":{"summary":"S61V3 Admin Upsert","operationId":"s61v3_admin_upsert_api_partner_offers_admin_upsert_post","parameters":[{"name":"x-admin-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partner_offers/admin/delete":{"post":{"summary":"S61V3 Admin Delete","operationId":"s61v3_admin_delete_api_partner_offers_admin_delete_post","parameters":[{"name":"x-admin-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partner_offers/view_tick":{"post":{"summary":"S61V3 View Tick","operationId":"s61v3_view_tick_api_partner_offers_view_tick_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partner_offers/admin/upsert_v4":{"post":{"summary":"S61V4 Admin Upsert","operationId":"s61v4_admin_upsert_api_partner_offers_admin_upsert_v4_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partner_offers/admin/delete_v4":{"post":{"summary":"S61V4 Admin Delete","operationId":"s61v4_admin_delete_api_partner_offers_admin_delete_v4_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partner_offers/admin/token_probe":{"get":{"summary":"S61V5 Token Probe","description":"Diagnostics: which token-related constants are in globals?","operationId":"s61v5_token_probe_api_partner_offers_admin_token_probe_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/partner_offers/admin/upsert_v6":{"post":{"summary":"S61V6 Admin Upsert","operationId":"s61v6_admin_upsert_api_partner_offers_admin_upsert_v6_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partner_offers/admin/delete_v6":{"post":{"summary":"S61V6 Admin Delete","operationId":"s61v6_admin_delete_api_partner_offers_admin_delete_v6_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auctions/list":{"get":{"summary":"S62 Auctions List","operationId":"s62_auctions_list_api_auctions_list_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"open","title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auctions/get":{"get":{"summary":"S62 Auctions Get","operationId":"s62_auctions_get_api_auctions_get_get","parameters":[{"name":"id","in":"query","required":true,"schema":{"type":"integer","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auctions/create":{"post":{"summary":"S62 Auctions Create","operationId":"s62_auctions_create_api_auctions_create_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auctions/bid":{"post":{"summary":"S62 Auctions Bid","operationId":"s62_auctions_bid_api_auctions_bid_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auctions/pick_winner":{"post":{"summary":"S62 Auctions Pick","description":"Владелец аукциона выбирает победителя (требует owner_id matches и не required токен).","operationId":"s62_auctions_pick_api_auctions_pick_winner_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/social/oauth_start/tw":{"get":{"summary":"S62 Oauth Start Tw","description":"Twitter/X OAuth 2.0 — generate redirect URL.\nБез TW_APP_ID/TW_APP_SECRET вернёт mock-success-page для UI.","operationId":"s62_oauth_start_tw_api_partners_social_oauth_start_tw_get","parameters":[{"name":"partner_slug","in":"query","required":false,"schema":{"type":"string","default":"","title":"Partner Slug"}},{"name":"kind","in":"query","required":false,"schema":{"type":"string","default":"user","title":"Kind"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/social/oauth_callback/tw":{"get":{"summary":"S62 Oauth Callback Tw","operationId":"s62_oauth_callback_tw_api_partners_social_oauth_callback_tw_get","parameters":[{"name":"code","in":"query","required":false,"schema":{"type":"string","default":"","title":"Code"}},{"name":"state","in":"query","required":false,"schema":{"type":"string","default":"","title":"State"}},{"name":"error","in":"query","required":false,"schema":{"type":"string","default":"","title":"Error"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/social/oauth_start/ig":{"get":{"summary":"S62 Oauth Start Ig","description":"Instagram via Meta Graph API — для Business аккаунтов.","operationId":"s62_oauth_start_ig_api_partners_social_oauth_start_ig_get","parameters":[{"name":"partner_slug","in":"query","required":false,"schema":{"type":"string","default":"","title":"Partner Slug"}},{"name":"kind","in":"query","required":false,"schema":{"type":"string","default":"user","title":"Kind"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/social/oauth_callback/ig":{"get":{"summary":"S62 Oauth Callback Ig","operationId":"s62_oauth_callback_ig_api_partners_social_oauth_callback_ig_get","parameters":[{"name":"code","in":"query","required":false,"schema":{"type":"string","default":"","title":"Code"}},{"name":"state","in":"query","required":false,"schema":{"type":"string","default":"","title":"State"}},{"name":"error","in":"query","required":false,"schema":{"type":"string","default":"","title":"Error"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/social/mock_connect":{"post":{"summary":"S62 Mock Connect","description":"MOCK-режим: создаёт fake account в partner_social_accounts чтобы UI мог протестировать flow.","operationId":"s62_mock_connect_api_partners_social_mock_connect_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/social/mock_connect_v2":{"post":{"summary":"S62V2 Mock Connect","operationId":"s62v2_mock_connect_api_partners_social_mock_connect_v2_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/qr/{slug}":{"get":{"summary":"S62 Partner Qr Gen V3","description":"QR с реф-ссылкой партнёра. kind: p=organizer, v=venue, b=blogger. size: 128-1024","operationId":"s62_partner_qr_gen_v3_api_partners_qr__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"kind","in":"query","required":false,"schema":{"type":"string","default":"p","title":"Kind"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","default":512,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/qr_v4/{slug}":{"get":{"summary":"S62 Partner Qr Gen V4","description":"QR с реф-ссылкой партнёра. kind: p=organizer, v=venue, b=blogger. size: 128-1024","operationId":"s62_partner_qr_gen_v4_api_partners_qr_v4__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"kind","in":"query","required":false,"schema":{"type":"string","default":"p","title":"Kind"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","default":512,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/coordinator/stats":{"get":{"summary":"S62 Coord Stats V1","description":"Stats for coordinator: подключённые партнёры, события, регистрации.\nperiod: all | m1 | m2 | m3 | week","operationId":"s62_coord_stats_v1_api_admin_coordinator_stats_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}},{"name":"period","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/coordinator/stats_v2":{"get":{"summary":"S62 Coord Stats V2","description":"Stats for coordinator. period: all | m1 | m2 | m3 | week","operationId":"s62_coord_stats_v2_api_admin_coordinator_stats_v2_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}},{"name":"period","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/coordinator/stats_v3":{"get":{"summary":"S62 Coord Stats V3","description":"Stats for coordinator. period: all | m1 | m2 | m3 | week","operationId":"s62_coord_stats_v3_api_admin_coordinator_stats_v3_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}},{"name":"period","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/coordinator/stats_v4":{"get":{"summary":"S62 Coord Stats V4","operationId":"s62_coord_stats_v4_api_admin_coordinator_stats_v4_get","parameters":[{"name":"tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Tg Id"}},{"name":"period","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/deploy/fs_probe_v1":{"get":{"summary":"S62 Fs Probe","operationId":"s62_fs_probe_api_admin_deploy_fs_probe_v1_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/deploy/app_grep_v1":{"get":{"summary":"S62 App Grep","operationId":"s62_app_grep_api_admin_deploy_app_grep_v1_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/deploy/app_grep_v2":{"get":{"summary":"S62 App Grep V2","operationId":"s62_app_grep_v2_api_admin_deploy_app_grep_v2_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","title":"Q"}},{"name":"ctx","in":"query","required":false,"schema":{"type":"integer","default":80,"title":"Ctx"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/deploy/sock_probe":{"get":{"summary":"S62 Sock","operationId":"s62_sock_api_admin_deploy_sock_probe_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/deploy/env_probe_v1":{"get":{"summary":"S62 Env Probe","operationId":"s62_env_probe_api_admin_deploy_env_probe_v1_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/broadcast/preview_v1":{"post":{"summary":"S62 Broadcast Preview","operationId":"s62_broadcast_preview_api_admin_broadcast_preview_v1_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/broadcast/send_v1":{"post":{"summary":"S62 Broadcast Send","operationId":"s62_broadcast_send_api_admin_broadcast_send_v1_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/deploy/list_static_v1":{"get":{"summary":"S62 List Static","operationId":"s62_list_static_api_admin_deploy_list_static_v1_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/health/all_v1":{"get":{"summary":"S62 Health All","operationId":"s62_health_all_api_admin_health_all_v1_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/health/all_v2":{"get":{"summary":"S62 Health All V2","operationId":"s62_health_all_v2_api_admin_health_all_v2_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/health/all_v3":{"get":{"summary":"S62 Health All V3","operationId":"s62_health_all_v3_api_admin_health_all_v3_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/health/all_v4":{"get":{"summary":"S62 Health All V4","operationId":"s62_health_all_v4_api_admin_health_all_v4_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/disk_check_v1":{"get":{"summary":" Admin Disk Check V1","description":"S62_DISK_CHECK_V1 — disk usage report для scheduled task.","operationId":"_admin_disk_check_v1_api_admin_disk_check_v1_get","parameters":[{"name":"x-admin-token","in":"header","required":false,"schema":{"type":"string","title":"X-Admin-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/alerts/list_v1":{"get":{"summary":"S62 Alerts List","operationId":"s62_alerts_list_api_admin_alerts_list_v1_get","parameters":[{"name":"only_unresolved","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Only Unresolved"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/alerts/resolve_v1":{"post":{"summary":"S62 Alerts Resolve","operationId":"s62_alerts_resolve_api_admin_alerts_resolve_v1_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/broadcast/preview_v2":{"post":{"summary":"S62 Bcast Preview V2","operationId":"s62_bcast_preview_v2_api_admin_broadcast_preview_v2_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/broadcast/send_v2":{"post":{"summary":"S62 Bcast Send V2","operationId":"s62_bcast_send_v2_api_admin_broadcast_send_v2_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/broadcast/send_v3":{"post":{"summary":"S62 Bcast Send V3","operationId":"s62_bcast_send_v3_api_admin_broadcast_send_v3_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partner_offers/self/upsert_v1":{"post":{"summary":"S62 Offers Self Upsert","description":"Партнёр сам управляет своими offers — auth по owner_tg_id+slug","operationId":"s62_offers_self_upsert_api_partner_offers_self_upsert_v1_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partner_offers/self/delete_v1":{"post":{"summary":"S62 Offers Self Delete","operationId":"s62_offers_self_delete_api_partner_offers_self_delete_v1_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/deploy/write_static_v1":{"post":{"summary":"S62 Write Static","operationId":"s62_write_static_api_admin_deploy_write_static_v1_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/me/update_v1":{"post":{"summary":"S62 Me Update","operationId":"s62_me_update_api_partners_me_update_v1_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/deploy/dom_collisions_v1":{"get":{"summary":"S62 Dom Collisions","operationId":"s62_dom_collisions_api_admin_deploy_dom_collisions_v1_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/health/all_v5":{"get":{"summary":"S62 Health All V5","operationId":"s62_health_all_v5_api_admin_health_all_v5_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/testimonials/list_v1":{"get":{"summary":"S62 Testim List","operationId":"s62_testim_list_api_testimonials_list_v1_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"only_published","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Only Published"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/testimonials/upsert_v1":{"post":{"summary":"S62 Testim Upsert","operationId":"s62_testim_upsert_api_admin_testimonials_upsert_v1_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/testimonials/delete_v1":{"post":{"summary":"S62 Testim Delete","operationId":"s62_testim_delete_api_admin_testimonials_delete_v1_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/backup/list_v1":{"get":{"summary":"S62 Backup List","operationId":"s62_backup_list_api_admin_backup_list_v1_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/backup/db_list_v2":{"get":{"summary":"S62 Backup Db V2","operationId":"s62_backup_db_v2_api_admin_backup_db_list_v2_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/partners/qr_v5/{slug}":{"get":{"summary":"S62 Partner Qr Gen V5","description":"QR с реф-ссылкой. kind: p=organizer→bot, v=venue→bot, b=blogger→bot, l=landing→/p2/{slug}","operationId":"s62_partner_qr_gen_v5_api_partners_qr_v5__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"kind","in":"query","required":false,"schema":{"type":"string","default":"p","title":"Kind"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","default":512,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/me/update_v2":{"post":{"summary":"S62 Me Update V2","operationId":"s62_me_update_v2_api_partners_me_update_v2_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/events/{slug}/ics":{"get":{"summary":"S62 Event Ics V1","description":"Возвращает .ics файл для добавления события в календарь.","operationId":"s62_event_ics_v1_api_events__slug__ics_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"partner_slug","in":"query","required":false,"schema":{"type":"string","default":"","title":"Partner Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/users/track_ref_v1":{"post":{"summary":"S62 Track Ref V1","description":"Сохраняет UTM/реф-источник для пользователя при первом визите.","operationId":"s62_track_ref_v1_api_users_track_ref_v1_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/utm/stats_v1":{"get":{"summary":"S62 Utm Stats V1","description":"Сводка по UTM-источникам трафика.","operationId":"s62_utm_stats_v1_api_admin_utm_stats_v1_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/users/track_ref_v2":{"post":{"summary":"S62 Track Ref V2","operationId":"s62_track_ref_v2_api_users_track_ref_v2_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/utm/stats_v2":{"get":{"summary":"S62 Utm Stats V2","operationId":"s62_utm_stats_v2_api_admin_utm_stats_v2_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/events/{event_id}/tickets/list_v1":{"get":{"summary":"S62 Tickets List","operationId":"s62_tickets_list_api_events__event_id__tickets_list_v1_get","parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"integer","title":"Event Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/p2/{partner_slug}":{"get":{"tags":["public"],"summary":"S62 Public Partner V3","operationId":"s62_public_partner_v3_p2__partner_slug__get","parameters":[{"name":"partner_slug","in":"path","required":true,"schema":{"type":"string","title":"Partner Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/embed/{partner_slug}":{"get":{"tags":["public"],"summary":"S62 Embed Widget V1","description":"Iframe-friendly виджет ближайших событий партнёра. Параметры: theme=light|dark, limit=1..10.","operationId":"s62_embed_widget_v1_embed__partner_slug__get","parameters":[{"name":"partner_slug","in":"path","required":true,"schema":{"type":"string","title":"Partner Slug"}},{"name":"theme","in":"query","required":false,"schema":{"type":"string","default":"light","title":"Theme"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":5,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/embed/{partner_slug}/snippet":{"get":{"tags":["public"],"summary":"S62 Embed Snippet V1","description":"Возвращает копипаст-сниппет для партнёра.","operationId":"s62_embed_snippet_v1_api_embed__partner_slug__snippet_get","parameters":[{"name":"partner_slug","in":"path","required":true,"schema":{"type":"string","title":"Partner Slug"}},{"name":"theme","in":"query","required":false,"schema":{"type":"string","default":"light","title":"Theme"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":5,"title":"Limit"}},{"name":"height","in":"query","required":false,"schema":{"type":"integer","default":380,"title":"Height"}}],"responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/events/featured_v1":{"get":{"tags":["public"],"summary":"S62 Featured Events Api V1","operationId":"s62_featured_events_api_v1_api_events_featured_v1_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":6,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/events/set_featured_v1":{"post":{"tags":["admin"],"summary":"S62 Set Featured V1","operationId":"s62_set_featured_v1_api_admin_events_set_featured_v1_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/events/rsvp_squad_v2":{"post":{"tags":["events"],"summary":"S62 Squad Rsvp V2","description":"Squad RSVP: один user резервирует до 6 мест с именами. Перезаписывает существующий RSVP того же user'а.","operationId":"s62_squad_rsvp_v2_api_events_rsvp_squad_v2_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/events/{event_id}/squad_capacity_v1":{"get":{"tags":["events"],"summary":"S62 Squad Capacity V1","description":"Сколько ещё мест свободно — для UI кнопки squad +N.","operationId":"s62_squad_capacity_v1_api_events__event_id__squad_capacity_v1_get","parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"integer","title":"Event Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/events/waitlist/join_v1":{"post":{"tags":["events"],"summary":"S62 Waitlist Join V1","operationId":"s62_waitlist_join_v1_api_events_waitlist_join_v1_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/events/waitlist/promote_v1":{"post":{"tags":["events"],"summary":"S62 Waitlist Promote V1","description":"Когда кто-то отменяет — продвигаем первого из waitlist в going + кладём push.","operationId":"s62_waitlist_promote_v1_api_events_waitlist_promote_v1_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/events/{event_id}/waitlist_v1":{"get":{"tags":["events"],"summary":"S62 Waitlist List V1","operationId":"s62_waitlist_list_v1_api_events__event_id__waitlist_v1_get","parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"integer","title":"Event Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/events/rsvp/cancel_v1":{"post":{"tags":["events"],"summary":"S62 Rsvp Cancel V1","operationId":"s62_rsvp_cancel_v1_api_events_rsvp_cancel_v1_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/map/points_v1":{"get":{"tags":["public"],"summary":"S62 Map Points V1","operationId":"s62_map_points_v1_api_map_points_v1_get","parameters":[{"name":"city","in":"query","required":false,"schema":{"type":"string","default":"","title":"City"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/digest/featured_v1":{"get":{"tags":["admin"],"summary":"S62 Digest Get V4","operationId":"s62_digest_get_v4_api_admin_digest_featured_v1_get","parameters":[{"name":"days_ahead","in":"query","required":false,"schema":{"type":"integer","default":7,"title":"Days Ahead"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/digest/push_to_owner_v1":{"post":{"tags":["admin"],"summary":"S62 Digest Push V4","operationId":"s62_digest_push_v4_api_admin_digest_push_to_owner_v1_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/reminders/run_v1":{"post":{"tags":["admin"],"summary":"S62 Reminders Run V1","operationId":"s62_reminders_run_v1_api_admin_reminders_run_v1_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/reminders/run_both_v1":{"post":{"tags":["admin"],"summary":"S62 Reminders Both V1","operationId":"s62_reminders_both_v1_api_admin_reminders_run_both_v1_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/events":{"get":{"tags":["public"],"summary":"S62 Events Listing V2","operationId":"s62_events_listing_v2_events_get","parameters":[{"name":"city","in":"query","required":false,"schema":{"type":"string","default":"","title":"City"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}},{"name":"type","in":"query","required":false,"schema":{"type":"string","default":"","title":"Type"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/events/list_v3":{"get":{"tags":["public"],"summary":"S62 Events List V3","operationId":"s62_events_list_v3_api_partners_events_list_v3_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"city","in":"query","required":false,"schema":{"type":"string","default":"","title":"City"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/events/rsvp/send_welcome_v1":{"post":{"tags":["events"],"summary":"S62 Rsvp Send Welcome V1","operationId":"s62_rsvp_send_welcome_v1_api_events_rsvp_send_welcome_v1_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/rsvp/welcome_sweep_v1":{"post":{"tags":["admin"],"summary":"S62 Welcome Sweep V1","operationId":"s62_welcome_sweep_v1_api_admin_rsvp_welcome_sweep_v1_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/embed/{partner_slug}/snippet_js":{"get":{"tags":["public"],"summary":"S62 Embed Snippet Js V1","operationId":"s62_embed_snippet_js_v1_api_embed__partner_slug__snippet_js_get","parameters":[{"name":"partner_slug","in":"path","required":true,"schema":{"type":"string","title":"Partner Slug"}},{"name":"theme","in":"query","required":false,"schema":{"type":"string","default":"light","title":"Theme"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":5,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/me/tickets/upsert_v1":{"post":{"summary":"S62 Tickets Upsert V2","description":"Партнёр добавляет/редактирует ticket type. event_id+owner_tg_id+name+capacity required.","operationId":"s62_tickets_upsert_v2_api_partners_me_tickets_upsert_v1_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/embed/{partner_slug}/events_v1":{"get":{"tags":["public"],"summary":"S62 Embed Events V1","operationId":"s62_embed_events_v1_api_embed__partner_slug__events_v1_get","parameters":[{"name":"partner_slug","in":"path","required":true,"schema":{"type":"string","title":"Partner Slug"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":5,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/embed.js":{"get":{"tags":["public"],"summary":"S62 Embed Js V2","operationId":"s62_embed_js_v2_embed_js_get","parameters":[{"name":"slug","in":"query","required":false,"schema":{"type":"string","default":"","title":"Slug"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":5,"title":"Limit"}},{"name":"theme","in":"query","required":false,"schema":{"type":"string","default":"light","title":"Theme"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/map":{"get":{"tags":["public"],"summary":"S62 Map Page V3","operationId":"s62_map_page_v3_map_get","parameters":[{"name":"city","in":"query","required":false,"schema":{"type":"string","default":"","title":"City"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/p/{partner_slug}":{"get":{"tags":["public"],"summary":"S62 P Redirect To P2","operationId":"s62_p_redirect_to_p2_p__partner_slug__get","parameters":[{"name":"partner_slug","in":"path","required":true,"schema":{"type":"string","title":"Partner Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sitemap.xml":{"get":{"tags":["public"],"summary":"S62 Sitemap V2","operationId":"s62_sitemap_v2_sitemap_xml_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/funnel/v1":{"get":{"tags":["admin"],"summary":"S62 Funnel V3","operationId":"s62_funnel_v3_api_admin_funnel_v1_get","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/admin/users/list_v1":{"get":{"tags":["admin"],"summary":"S62 Users List V1","operationId":"s62_users_list_v1_api_admin_users_list_v1_get","parameters":[{"name":"seed","in":"query","required":false,"schema":{"type":"string","default":"any","title":"Seed"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/users/toggle_seed_v1":{"post":{"tags":["admin"],"summary":"S62 Toggle Seed V1","operationId":"s62_toggle_seed_v1_api_admin_users_toggle_seed_v1_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/users/mark_all_seed_v1":{"post":{"tags":["admin"],"summary":"S62 Mark All Seed V1","description":"Mass-toggle: пометить ВСЕХ created_at < date как seed. Опасно — нужен confirm.","operationId":"s62_mark_all_seed_v1_api_admin_users_mark_all_seed_v1_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/partners/me/events/set_featured_v1":{"post":{"tags":["partners"],"summary":"S62 Partner Set Featured V1","description":"Партнёр сам помечает своё событие как featured/убирает featured.\nAuth: owner_tg_id должен совпадать с channel_partners_v1.owner_tg_id.","operationId":"s62_partner_set_featured_v1_api_partners_me_events_set_featured_v1_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/by_owner_v1":{"get":{"summary":" S64 Partner By Owner","description":"Find partner cabinets owned by this tg_id (one-tap cabinet login from Telegram WebApp).","operationId":"_s64_partner_by_owner_api_partners_by_owner_v1_get","parameters":[{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ref/record_v1":{"post":{"summary":" S64 Ref Record","operationId":"_s64_ref_record_api_ref_record_v1_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ref/counts_v1":{"get":{"summary":" S64 Ref Counts","operationId":"_s64_ref_counts_api_ref_counts_v1_get","parameters":[{"name":"ref","in":"query","required":false,"schema":{"type":"string","default":"","title":"Ref"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/clubs/list":{"get":{"summary":" S97 Clubs List","operationId":"_s97_clubs_list_api_clubs_list_get","parameters":[{"name":"city","in":"query","required":false,"schema":{"type":"string","default":"","title":"City"}},{"name":"tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/clubs/join":{"post":{"summary":" S97 Clubs Join","operationId":"_s97_clubs_join_api_clubs_join_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/clubs/leave":{"post":{"summary":" S97 Clubs Leave","operationId":"_s97_clubs_leave_api_clubs_leave_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/clubs/members":{"get":{"summary":" S97 Clubs Members","operationId":"_s97_clubs_members_api_clubs_members_get","parameters":[{"name":"club_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Club Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/clubs/create":{"post":{"summary":" S97 Clubs Create","operationId":"_s97_clubs_create_api_clubs_create_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/clubs/owned":{"get":{"summary":" S97 Clubs Owned","operationId":"_s97_clubs_owned_api_clubs_owned_get","parameters":[{"name":"tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/clubs/detail":{"get":{"summary":" S97 Clubs Detail","operationId":"_s97_clubs_detail_api_clubs_detail_get","parameters":[{"name":"id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Id"}},{"name":"tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/clubs/related":{"get":{"summary":" S97 Clubs Related","operationId":"_s97_clubs_related_api_clubs_related_get","parameters":[{"name":"id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/clubs/events":{"get":{"summary":" S97 Clubs Events","operationId":"_s97_clubs_events_api_clubs_events_get","parameters":[{"name":"club_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Club Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/clubs/add_event":{"post":{"summary":" S97 Clubs Add Event","operationId":"_s97_clubs_add_event_api_clubs_add_event_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/clubs/update":{"post":{"summary":" S97 Clubs Update","operationId":"_s97_clubs_update_api_clubs_update_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/profile/check":{"get":{"summary":" S97 Profile Check","operationId":"_s97_profile_check_api_profile_check_get","parameters":[{"name":"tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/profile/save_v1":{"post":{"summary":" S97 Profile Save","operationId":"_s97_profile_save_api_profile_save_v1_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/join":{"get":{"summary":" S97 Join Page","operationId":"_s97_join_page_join_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/growth/feedback_pref":{"get":{"summary":" S97 Growth Fb Pref Get","operationId":"_s97_growth_fb_pref_get_api_growth_feedback_pref_get","parameters":[{"name":"tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":" S97 Growth Fb Pref Set","operationId":"_s97_growth_fb_pref_set_api_growth_feedback_pref_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/event/{event_slug}/ics":{"get":{"summary":" S64 Event Ics","operationId":"_s64_event_ics_api_event__event_slug__ics_get","parameters":[{"name":"event_slug","in":"path","required":true,"schema":{"type":"string","title":"Event Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/lockkey/join":{"post":{"summary":" S64 Lk Join","operationId":"_s64_lk_join_api_lockkey_join_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/lockkey/status":{"get":{"summary":" S64 Lk Status","operationId":"_s64_lk_status_api_lockkey_status_get","parameters":[{"name":"event_slug","in":"query","required":false,"schema":{"type":"string","default":"","title":"Event Slug"}},{"name":"tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/lockkey/confirm":{"post":{"summary":" S64 Lk Confirm","operationId":"_s64_lk_confirm_api_lockkey_confirm_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/pitch/create":{"post":{"summary":" S64 Pitch Create","operationId":"_s64_pitch_create_api_pitch_create_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/pitch/feed":{"get":{"summary":" S64 Pitch Feed","operationId":"_s64_pitch_feed_api_pitch_feed_get","parameters":[{"name":"city","in":"query","required":false,"schema":{"type":"string","default":"","title":"City"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/pitch/interest":{"post":{"summary":" S64 Pitch Interest","operationId":"_s64_pitch_interest_api_pitch_interest_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sf/create":{"post":{"summary":" S65 Sf Create","operationId":"_s65_sf_create_api_sf_create_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sf/join":{"post":{"summary":" S65 Sf Join","operationId":"_s65_sf_join_api_sf_join_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sf/start":{"post":{"summary":" S65 Sf Start","operationId":"_s65_sf_start_api_sf_start_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sf/next":{"post":{"summary":" S65 Sf Next","operationId":"_s65_sf_next_api_sf_next_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sf/state":{"get":{"summary":" S65 Sf State","operationId":"_s65_sf_state_api_sf_state_get","parameters":[{"name":"slug","in":"query","required":false,"schema":{"type":"string","default":"","title":"Slug"}},{"name":"tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sf/pick":{"post":{"summary":" S65 Sf Pick","operationId":"_s65_sf_pick_api_sf_pick_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sf/matches":{"get":{"summary":" S65 Sf Matches","operationId":"_s65_sf_matches_api_sf_matches_get","parameters":[{"name":"slug","in":"query","required":false,"schema":{"type":"string","default":"","title":"Slug"}},{"name":"tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bd/create":{"post":{"summary":" S65 Bd Create","operationId":"_s65_bd_create_api_bd_create_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bd/join":{"post":{"summary":" S65 Bd Join","operationId":"_s65_bd_join_api_bd_join_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bd/seat":{"post":{"summary":" S65 Bd Seat","operationId":"_s65_bd_seat_api_bd_seat_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bd/state":{"get":{"summary":" S65 Bd State","operationId":"_s65_bd_state_api_bd_state_get","parameters":[{"name":"slug","in":"query","required":false,"schema":{"type":"string","default":"","title":"Slug"}},{"name":"tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bd/tables":{"get":{"summary":" S65 Bd Tables","operationId":"_s65_bd_tables_api_bd_tables_get","parameters":[{"name":"slug","in":"query","required":false,"schema":{"type":"string","default":"","title":"Slug"}},{"name":"organizer_tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Organizer Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mx/create":{"post":{"summary":" S65 Mx Create","operationId":"_s65_mx_create_api_mx_create_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mx/join":{"post":{"summary":" S65 Mx Join","operationId":"_s65_mx_join_api_mx_join_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mx/card":{"get":{"summary":" S65 Mx Card","operationId":"_s65_mx_card_api_mx_card_get","parameters":[{"name":"slug","in":"query","required":false,"schema":{"type":"string","default":"","title":"Slug"}},{"name":"tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mx/fill":{"post":{"summary":" S65 Mx Fill","operationId":"_s65_mx_fill_api_mx_fill_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mx/leaderboard":{"get":{"summary":" S65 Mx Leaderboard","operationId":"_s65_mx_leaderboard_api_mx_leaderboard_get","parameters":[{"name":"slug","in":"query","required":false,"schema":{"type":"string","default":"","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/crm/guests":{"get":{"summary":" S65 Crm Guests","operationId":"_s65_crm_guests_api_crm_guests_get","parameters":[{"name":"owner_tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Owner Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/crm/guest":{"get":{"summary":" S65 Crm Guest","operationId":"_s65_crm_guest_api_crm_guest_get","parameters":[{"name":"owner_tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Owner Tg"}},{"name":"guest_tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Guest Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/flash/create":{"post":{"summary":" S65 Flash Create","operationId":"_s65_flash_create_api_flash_create_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/flash/active":{"get":{"summary":" S65 Flash Active","operationId":"_s65_flash_active_api_flash_active_get","parameters":[{"name":"tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/flash/claim":{"post":{"summary":" S65 Flash Claim","operationId":"_s65_flash_claim_api_flash_claim_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/flash/mine":{"get":{"summary":" S65 Flash Mine","operationId":"_s65_flash_mine_api_flash_mine_get","parameters":[{"name":"owner_tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Owner Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/flash/stop":{"post":{"summary":" S65 Flash Stop","operationId":"_s65_flash_stop_api_flash_stop_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/deposit/config":{"post":{"summary":" S65 Dep Config","operationId":"_s65_dep_config_api_deposit_config_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/deposit/info":{"get":{"summary":" S65 Dep Info","operationId":"_s65_dep_info_api_deposit_info_get","parameters":[{"name":"event_slug","in":"query","required":false,"schema":{"type":"string","default":"","title":"Event Slug"}},{"name":"tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/deposit/roster":{"get":{"summary":" S65 Dep Roster","operationId":"_s65_dep_roster_api_deposit_roster_get","parameters":[{"name":"owner_tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Owner Tg"}},{"name":"event_slug","in":"query","required":false,"schema":{"type":"string","default":"","title":"Event Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/deposit/mark":{"post":{"summary":" S65 Dep Mark","operationId":"_s65_dep_mark_api_deposit_mark_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/deposit/pay_create":{"post":{"summary":" S97 Deposit Pay Create","operationId":"_s97_deposit_pay_create_api_deposit_pay_create_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/deposit/myevents":{"get":{"summary":" S65 Dep Myevents","operationId":"_s65_dep_myevents_api_deposit_myevents_get","parameters":[{"name":"owner_tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Owner Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/va/overview":{"get":{"summary":" S65 Va Overview","operationId":"_s65_va_overview_api_va_overview_get","parameters":[{"name":"owner_tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Owner Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/perk/rule":{"post":{"summary":" S65 Perk Rule","operationId":"_s65_perk_rule_api_perk_rule_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/perk/rules":{"get":{"summary":" S65 Perk Rules","operationId":"_s65_perk_rules_api_perk_rules_get","parameters":[{"name":"owner_tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Owner Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/perk/rule_toggle":{"post":{"summary":" S65 Perk Rule Toggle","operationId":"_s65_perk_rule_toggle_api_perk_rule_toggle_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/perk/mine":{"get":{"summary":" S65 Perk Mine","operationId":"_s65_perk_mine_api_perk_mine_get","parameters":[{"name":"tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/perk/redeem":{"post":{"summary":" S65 Perk Redeem","operationId":"_s65_perk_redeem_api_perk_redeem_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ref/summary_v2":{"get":{"tags":["referral"],"summary":"S65 Ref Summary V2","description":"Сводка по реферальной активности владельца партнёра.\nВозвращает: earned_total (coins+rub), pending_payout_rub, paid_out_rub, breakdown by kind, referees_count.","operationId":"s65_ref_summary_v2_api_ref_summary_v2_get","parameters":[{"name":"owner_tg","in":"query","required":true,"schema":{"type":"integer","title":"Owner Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ref/ledger_v2":{"get":{"tags":["referral"],"summary":"S65 Ref Ledger V2","description":"Список последних начислений.","operationId":"s65_ref_ledger_v2_api_ref_ledger_v2_get","parameters":[{"name":"owner_tg","in":"query","required":true,"schema":{"type":"integer","title":"Owner Tg"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ref/referees":{"get":{"tags":["referral"],"summary":"S65 Ref Referees","description":"Список приведённых юзеров с активностью.\nИспользует users.referred_by (или referred_source), фильтрует по 'ref_<partner_slug>' который владеет owner_tg.","operationId":"s65_ref_referees_api_ref_referees_get","parameters":[{"name":"owner_tg","in":"query","required":true,"schema":{"type":"integer","title":"Owner Tg"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ref/payout_request":{"post":{"tags":["referral"],"summary":"S65 Ref Payout Request","description":"Заявка на выплату. body: {owner_tg, sbp_phone, note?, amount_rub?}.\nМинимум 1000₽. Блокирует доступные accrued записи (status → 'requested').","operationId":"s65_ref_payout_request_api_ref_payout_request_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ref/payout_history":{"get":{"tags":["referral"],"summary":"S65 Ref Payout History","operationId":"s65_ref_payout_history_api_ref_payout_history_get","parameters":[{"name":"owner_tg","in":"query","required":true,"schema":{"type":"integer","title":"Owner Tg"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ref/_accrue_signup":{"post":{"tags":["referral"],"summary":"S65 Ref Accrue Signup","description":"Внутренний: начислить 50 коинов за signup гостя по ref-ссылке.\nbody: {referee_tg_id, partner_slug, referee_name?}. Идемпотентен по (referee, partner, kind).","operationId":"s65_ref_accrue_signup_api_ref__accrue_signup_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ref/_accrue_checkin":{"post":{"tags":["referral"],"summary":"S65 Ref Accrue Checkin","description":"Внутренний: 200 коинов за реальный checkin (вызывается при checkin).","operationId":"s65_ref_accrue_checkin_api_ref__accrue_checkin_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/myticket":{"get":{"tags":["ticket"],"summary":"S65 Myticket Info","description":"Get event+rsvp info by qr_token. Used by /static/my_ticket.html.","operationId":"s65_myticket_info_api_myticket_get","parameters":[{"name":"t","in":"query","required":true,"schema":{"type":"string","title":"T"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/deposit/guest_mark":{"post":{"summary":" S65 Dep Guest Mark","description":"Гость заявляет что перевёл депозит (статус paid). Организатор увидит в roster и может откорректировать.","operationId":"_s65_dep_guest_mark_api_deposit_guest_mark_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sub/info":{"get":{"tags":["subscription"],"summary":"S65 Sub Info","description":"Public: get subscription config for a partner + user's status if tg given.","operationId":"s65_sub_info_api_sub_info_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sub/save_cfg":{"post":{"tags":["subscription"],"summary":"S65 Sub Save Cfg","description":"Organizer-only: save/update subscription config. body: {owner_tg, slug, monthly_price_rub?, description?, sbp_phone?, sbp_recipient?, sbp_instructions?, yookassa_enabled?, enabled?}","operationId":"s65_sub_save_cfg_api_sub_save_cfg_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sub/sbp_claim":{"post":{"tags":["subscription"],"summary":"S65 Sub Sbp Claim","description":"User claims they paid via SBP. Creates pending subscription_payment record. Organizer reviews.","operationId":"s65_sub_sbp_claim_api_sub_sbp_claim_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sub/yookassa_checkout":{"post":{"tags":["subscription"],"summary":"S65 Sub Yookassa Checkout","description":"Create YooKassa payment. Returns confirmation_url for redirect.\nNeeds env: YOOKASSA_SHOP_ID, YOOKASSA_SECRET.","operationId":"s65_sub_yookassa_checkout_api_sub_yookassa_checkout_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/payments/yookassa_webhook":{"post":{"tags":["subscription"],"summary":"S65 Yk Webhook","description":"YooKassa notification handler. S72: event=payment.succeeded → mark paid + push owner.","operationId":"s65_yk_webhook_api_payments_yookassa_webhook_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sub/my_subscriptions":{"get":{"tags":["subscription"],"summary":"S65 Sub My Subs","description":"User's active subscriptions.","operationId":"s65_sub_my_subs_api_sub_my_subscriptions_get","parameters":[{"name":"user_tg","in":"query","required":true,"schema":{"type":"integer","title":"User Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sub/subscribers":{"get":{"tags":["subscription"],"summary":"S65 Sub Subscribers","description":"Organizer-only: list subscribers + revenue summary.","operationId":"s65_sub_subscribers_api_sub_subscribers_get","parameters":[{"name":"owner_tg","in":"query","required":true,"schema":{"type":"integer","title":"Owner Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sub/{slug}":{"get":{"tags":["subscription"],"summary":"S65 Sub Route","operationId":"s65_sub_route_sub__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/sub/expiry_sweep_v1":{"post":{"tags":["subscription"],"summary":"S65 Sub Expiry Sweep","description":"Cron-style: notify users whose subscription expires in 1..3 days. Returns counts.","operationId":"s65_sub_expiry_sweep_api_admin_sub_expiry_sweep_v1_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/streak/checkin":{"post":{"tags":["streak"],"summary":"S70 Streak Checkin","description":"Lazy streak update. body: {tg_id}. Returns {streak_days, freeze_count, streak_max, awarded_freeze, streak_change}.","operationId":"s70_streak_checkin_api_streak_checkin_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/streak/status":{"get":{"tags":["streak"],"summary":"S70 Streak Status","description":"Read-only streak info.","operationId":"s70_streak_status_api_streak_status_get","parameters":[{"name":"tg","in":"query","required":true,"schema":{"type":"integer","title":"Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/streak/leaderboard":{"get":{"tags":["streak"],"summary":"S70 Streak Leaderboard","description":"City leaderboard by current streak (top retention indicator).","operationId":"s70_streak_leaderboard_api_streak_leaderboard_get","parameters":[{"name":"city","in":"query","required":false,"schema":{"type":"string","default":"","title":"City"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/events/feedback":{"post":{"tags":["feedback"],"summary":"S70 Event Feedback","description":"User submits 1-tap feedback. body: {event_id|event_slug, user_tg, rating?(1-5), would_repeat?(bool), comment?}.","operationId":"s70_event_feedback_api_events_feedback_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/events/feedback_summary":{"get":{"tags":["feedback"],"summary":"S70 Event Feedback Summary","description":"Organizer reads aggregated feedback. Returns: ratings_count, avg_rating, would_repeat_pct.","operationId":"s70_event_feedback_summary_api_events_feedback_summary_get","parameters":[{"name":"event_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Event Id"}},{"name":"event_slug","in":"query","required":false,"schema":{"type":"string","default":"","title":"Event Slug"}},{"name":"partner_slug","in":"query","required":false,"schema":{"type":"string","default":"","title":"Partner Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/post_event_ping_v1":{"post":{"tags":["admin"],"summary":"S70 Post Event Ping V1","description":"Cron-style: find RSVPs where event ended 20-40 min ago, send post-event TG push.","operationId":"s70_post_event_ping_v1_api_admin_post_event_ping_v1_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/cadence_nudge_v1":{"post":{"tags":["admin"],"summary":"S70 Cadence Nudge V1","description":"Cron-style: nudge dormant organizers (no event in 7+ days, no future event in next 14d).","operationId":"s70_cadence_nudge_v1_api_admin_cadence_nudge_v1_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/events/recipes_for_picker":{"get":{"tags":["recipes"],"summary":"S70 Recipes For Picker","description":"Simplified recipe list for picker: id, name, kcal, protein_g, verdict.","operationId":"s70_recipes_for_picker_api_events_recipes_for_picker_get","parameters":[{"name":"healthy_only","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Healthy Only"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/events/link_recipe":{"post":{"tags":["recipes"],"summary":"S70 Link Recipe","description":"Organizer links a recipe to their cooking event. body: {event_slug, recipe_id, owner_tg}.","operationId":"s70_link_recipe_api_events_link_recipe_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/events/unlink_recipe":{"post":{"tags":["recipes"],"summary":"S70 Unlink Recipe","operationId":"s70_unlink_recipe_api_events_unlink_recipe_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/events/linked_recipe":{"get":{"tags":["recipes"],"summary":"S70 Get Linked Recipe","description":"Public: get recipe details linked to event (for display on event page).","operationId":"s70_get_linked_recipe_api_events_linked_recipe_get","parameters":[{"name":"event_slug","in":"query","required":true,"schema":{"type":"string","title":"Event Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/elders/register":{"post":{"tags":["sosedi"],"summary":"S70 Elders Register","description":"Старший по дому регистрирует свой двор. body: {owner_tg, owner_name?, city, street, house, geo_lat?, geo_lon?, channel_username?}.","operationId":"s70_elders_register_api_elders_register_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/elders/opt_in_meet":{"post":{"tags":["sosedi"],"summary":"S70 Neighbour Opt In","description":"Юзер делает opt-in «хочу познакомиться с соседями» на конкретном дворе.","operationId":"s70_neighbour_opt_in_api_elders_opt_in_meet_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/elders/neighbours":{"get":{"tags":["sosedi"],"summary":"S70 Neighbours List","description":"Список соседей opt-in. Enriched: has_dating, dating_photo, stealth-aware name/photo (S70_SOSEDI_DATING_MARK).","operationId":"s70_neighbours_list_api_elders_neighbours_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/events/yard":{"get":{"tags":["sosedi"],"summary":"S70 Yard Events","description":"События ТОЛЬКО building-партнёров в радиусе. Простая bbox-фильтрация (для города достаточно).","operationId":"s70_yard_events_api_events_yard_get","parameters":[{"name":"lat","in":"query","required":false,"schema":{"type":"number","default":0.0,"title":"Lat"}},{"name":"lon","in":"query","required":false,"schema":{"type":"number","default":0.0,"title":"Lon"}},{"name":"radius_m","in":"query","required":false,"schema":{"type":"integer","default":500,"title":"Radius M"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/elders/leaderboard":{"get":{"tags":["sosedi"],"summary":"S70 Yard Leaderboard","description":"Топ дворов по активности (events/30d + neighbours opt-in count).","operationId":"s70_yard_leaderboard_api_elders_leaderboard_get","parameters":[{"name":"city","in":"query","required":false,"schema":{"type":"string","default":"","title":"City"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/profile/stealth_settings":{"get":{"tags":["stealth"],"summary":"S70 Stealth Get","description":"Returns current stealth settings for user.","operationId":"s70_stealth_get_api_profile_stealth_settings_get","parameters":[{"name":"tg","in":"query","required":true,"schema":{"type":"integer","title":"Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["stealth"],"summary":"S70 Stealth Save","operationId":"s70_stealth_save_api_profile_stealth_settings_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/profile/stealth_block":{"post":{"tags":["stealth"],"summary":"S70 Stealth Block","description":"Add tg_id(s) to blocklist (CSV append). Operation: 'add' or 'remove'.","operationId":"s70_stealth_block_api_profile_stealth_block_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/profile/stealth_view":{"get":{"tags":["stealth"],"summary":"S70 Stealth View","description":"How `viewer_tg` should see `owner_tg`'s profile, applying stealth rules.","operationId":"s70_stealth_view_api_profile_stealth_view_get","parameters":[{"name":"owner_tg","in":"query","required":true,"schema":{"type":"integer","title":"Owner Tg"}},{"name":"viewer_tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Viewer Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/profile/photo_stealthed":{"get":{"tags":["stealth"],"summary":"S70 Photo Stealthed","description":"Stream user photo with stealth overlay applied (PIL).\nOverlay options: 'eyes' (black bar), 'blur' (whole image blur), 'mask' (emoji overlay).","operationId":"s70_photo_stealthed_api_profile_photo_stealthed_get","parameters":[{"name":"tg","in":"query","required":true,"schema":{"type":"integer","title":"Tg"}},{"name":"overlay","in":"query","required":false,"schema":{"type":"string","default":"eyes","title":"Overlay"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/badges/catalog":{"get":{"tags":["badges"],"summary":"S70 Badge Catalog","operationId":"s70_badge_catalog_api_badges_catalog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/badges/award":{"post":{"tags":["badges"],"summary":"S70 Badge Award","description":"Award badge to user. body: {user_tg, badge_code, city?, note?}. Idempotent.","operationId":"s70_badge_award_api_badges_award_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/badges/user":{"get":{"tags":["badges"],"summary":"S70 Badge User","description":"List badges for user.","operationId":"s70_badge_user_api_badges_user_get","parameters":[{"name":"tg","in":"query","required":true,"schema":{"type":"integer","title":"Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/leaderboard/city_v2":{"get":{"tags":["badges"],"summary":"S70 Leaderboard City","description":"Top users in city by composite score: badges*10 + streak_days*2 + rsvps_30d.","operationId":"s70_leaderboard_city_api_leaderboard_city_v2_get","parameters":[{"name":"city","in":"query","required":false,"schema":{"type":"string","default":"","title":"City"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/elders/dating_neighbours":{"get":{"tags":["sosedi"],"summary":"S70 Dating Neighbours","description":"Соседи дома с активным dating-профилем — warm intent для знакомства.","operationId":"s70_dating_neighbours_api_elders_dating_neighbours_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dating/neighbour_hint":{"get":{"tags":["sosedi"],"summary":"S70 Dating Neighbour Hint","description":"Для swipe-feed: если viewer и target — соседи (same building partner) → возвращает badge.","operationId":"s70_dating_neighbour_hint_api_dating_neighbour_hint_get","parameters":[{"name":"viewer_tg","in":"query","required":true,"schema":{"type":"integer","title":"Viewer Tg"}},{"name":"target_tg","in":"query","required":true,"schema":{"type":"integer","title":"Target Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/badges_sweep_v1":{"post":{"tags":["admin"],"summary":"S70 Badges Sweep","description":"Cron-style: scan all real users, auto-award badges based on conditions.","operationId":"s70_badges_sweep_api_admin_badges_sweep_v1_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/cab/events":{"get":{"summary":" S65 Cab Events","operationId":"_s65_cab_events_api_cab_events_get","parameters":[{"name":"owner_tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Owner Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/perk/birthday":{"post":{"summary":" S65 Perk Set Bday","operationId":"_s65_perk_set_bday_api_perk_birthday_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":" S65 Perk Get Bday","operationId":"_s65_perk_get_bday_api_perk_birthday_get","parameters":[{"name":"tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/near/venues":{"get":{"summary":" S65 Near Venues","operationId":"_s65_near_venues_api_near_venues_get","parameters":[{"name":"lat","in":"query","required":false,"schema":{"type":"number","title":"Lat"}},{"name":"lon","in":"query","required":false,"schema":{"type":"number","title":"Lon"}},{"name":"tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg"}},{"name":"city","in":"query","required":false,"schema":{"type":"string","default":"","title":"City"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":15,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/me/subconfig":{"get":{"summary":" S65 Subcfg Get","operationId":"_s65_subcfg_get_api_partners_me_subconfig_get","parameters":[{"name":"owner_tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Owner Tg Id"}},{"name":"slug","in":"query","required":false,"schema":{"type":"string","default":"","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":" S65 Subcfg Set","operationId":"_s65_subcfg_set_api_partners_me_subconfig_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/me/payout":{"post":{"summary":" S65 Payout Req","operationId":"_s65_payout_req_api_partners_me_payout_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/me/payouts":{"get":{"summary":" S65 Payout List","operationId":"_s65_payout_list_api_partners_me_payouts_get","parameters":[{"name":"owner_tg_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Owner Tg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/events/social-proof":{"get":{"summary":" S66 Social Proof","operationId":"_s66_social_proof_api_events_social_proof_get","parameters":[{"name":"ids","in":"query","required":false,"schema":{"type":"string","default":"","title":"Ids"}},{"name":"city","in":"query","required":false,"schema":{"type":"string","default":"","title":"City"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/events/nearby-social":{"get":{"summary":" S66 Nearby Social","operationId":"_s66_nearby_social_api_events_nearby_social_get","parameters":[{"name":"city","in":"query","required":false,"schema":{"type":"string","default":"","title":"City"}},{"name":"tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":3,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/photos/{file_id}":{"get":{"summary":" S66 Tg Photo Proxy","operationId":"_s66_tg_photo_proxy_api_photos__file_id__get","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/karma/categories":{"get":{"summary":" S66 Km Cats","operationId":"_s66_km_cats_api_karma_categories_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/karma/help/create":{"post":{"summary":" S66 Km Create","operationId":"_s66_km_create_api_karma_help_create_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/karma/help/confirm":{"post":{"summary":" S66 Km Confirm","operationId":"_s66_km_confirm_api_karma_help_confirm_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/karma/leaderboard":{"get":{"summary":" S66 Km Board","operationId":"_s66_km_board_api_karma_leaderboard_get","parameters":[{"name":"kind","in":"query","required":false,"schema":{"type":"string","default":"user","title":"Kind"}},{"name":"city","in":"query","required":false,"schema":{"type":"string","default":"","title":"City"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/karma/profile":{"get":{"summary":" S66 Km Profile","operationId":"_s66_km_profile_api_karma_profile_get","parameters":[{"name":"kind","in":"query","required":false,"schema":{"type":"string","default":"user","title":"Kind"}},{"name":"id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/karma/pending":{"get":{"summary":" S66 Km Pending","operationId":"_s66_km_pending_api_karma_pending_get","parameters":[{"name":"tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/growth/goal":{"post":{"summary":" S66 Gr Goal","operationId":"_s66_gr_goal_api_growth_goal_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/growth/goals":{"get":{"summary":" S66 Gr Goals","operationId":"_s66_gr_goals_api_growth_goals_get","parameters":[{"name":"tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/growth/goal/deactivate":{"post":{"summary":" S66 Gr Goal Off","operationId":"_s66_gr_goal_off_api_growth_goal_deactivate_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/growth/crutch":{"post":{"summary":" S66 Gr Crutch","operationId":"_s66_gr_crutch_api_growth_crutch_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/growth/crutch/mine":{"get":{"summary":" S66 Gr Crutch Mine","operationId":"_s66_gr_crutch_mine_api_growth_crutch_mine_get","parameters":[{"name":"tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/growth/match":{"get":{"summary":" S66 Gr Match","operationId":"_s66_gr_match_api_growth_match_get","parameters":[{"name":"tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg"}},{"name":"goal_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Goal Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/growth/buddy/invite":{"post":{"summary":" S66 Gr Invite","operationId":"_s66_gr_invite_api_growth_buddy_invite_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/growth/buddy/respond":{"post":{"summary":" S66 Gr Respond","operationId":"_s66_gr_respond_api_growth_buddy_respond_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/growth/buddy/mine":{"get":{"summary":" S66 Gr Buddies","operationId":"_s66_gr_buddies_api_growth_buddy_mine_get","parameters":[{"name":"tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/neighbor/offer":{"post":{"summary":" S66 Neighbor Offer","operationId":"_s66_neighbor_offer_api_neighbor_offer_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/neighbor/offer/mine":{"get":{"summary":" S66 Neighbor Offer Mine","operationId":"_s66_neighbor_offer_mine_api_neighbor_offer_mine_get","parameters":[{"name":"owner_tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Owner Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/neighbor/offer/stop":{"post":{"summary":" S66 Neighbor Offer Stop","operationId":"_s66_neighbor_offer_stop_api_neighbor_offer_stop_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/neighbor/offers":{"get":{"summary":" S66 Neighbor Offers","operationId":"_s66_neighbor_offers_api_neighbor_offers_get","parameters":[{"name":"city","in":"query","required":false,"schema":{"type":"string","default":"","title":"City"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/neighbor/claim":{"post":{"summary":" S66 Neighbor Claim","operationId":"_s66_neighbor_claim_api_neighbor_claim_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/neighbor/claims":{"get":{"summary":" S66 Neighbor Claims","operationId":"_s66_neighbor_claims_api_neighbor_claims_get","parameters":[{"name":"owner_tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Owner Tg"}},{"name":"venue_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Venue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/growth/checkin":{"post":{"summary":" S66 Gr Checkin","operationId":"_s66_gr_checkin_api_growth_checkin_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/growth/checkin/feed":{"get":{"summary":" S66 Gr Checkin Feed","operationId":"_s66_gr_checkin_feed_api_growth_checkin_feed_get","parameters":[{"name":"tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg"}},{"name":"buddy_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Buddy Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sub2/{slug}":{"get":{"summary":"S70 Sub2 Redirect","operationId":"s70_sub2_redirect_sub2__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/mafia/lobbies/list":{"get":{"tags":["mafia"],"summary":"S70 Mafia Lobbies List","description":"List open mafia lobbies (status in lobby/waiting). Public.","operationId":"s70_mafia_lobbies_list_api_venue_mafia_lobbies_list_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sub/is_active":{"get":{"tags":["subscription"],"summary":"S70 Sub Is Active","description":"Check if user has active subscription for partner. Returns {active:bool, period_end?}.","operationId":"s70_sub_is_active_api_sub_is_active_get","parameters":[{"name":"user_tg","in":"query","required":true,"schema":{"type":"integer","title":"User Tg"}},{"name":"partner_slug","in":"query","required":true,"schema":{"type":"string","title":"Partner Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/events/set_members_only":{"post":{"tags":["events"],"summary":"S70 Set Members Only","description":"Organizer toggles members_only flag for their event.","operationId":"s70_set_members_only_api_events_set_members_only_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/events/members_only_check":{"get":{"tags":["events"],"summary":"S70 Event Members Check","description":"Public: returns event.members_only + viewer's sub status for one call.\nUsed by /event_v3 JS to decide what to show.","operationId":"s70_event_members_check_api_events_members_only_check_get","parameters":[{"name":"event_slug","in":"query","required":true,"schema":{"type":"string","title":"Event Slug"}},{"name":"viewer_tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Viewer Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/missions/today":{"get":{"tags":["missions"],"summary":"S73 Missions Today","description":"Daily missions для юзера на сегодня. Lazy-create если ещё нет.","operationId":"s73_missions_today_api_missions_today_get","parameters":[{"name":"tg","in":"query","required":true,"schema":{"type":"integer","title":"Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/missions/progress":{"post":{"tags":["missions"],"summary":"S73 Missions Progress","description":"Auto-progress по событию. body: {tg, mission_kind, delta=1}.","operationId":"s73_missions_progress_api_missions_progress_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/missions/leaderboard":{"get":{"tags":["missions"],"summary":"S73 Missions Leaderboard","description":"Top-10 юзеров по XP за last N days.","operationId":"s73_missions_leaderboard_api_missions_leaderboard_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":7,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/sub/charge_expiring":{"post":{"tags":["subscription"],"summary":"S74 Charge Expiring","description":"Cron-эндпоинт: charge все подписки которые истекают в next 1-2 дня + auto_renew_active+payment_method_id.\nСоздаёт recurring payment в YK через payment_method_id (без редиректа).","operationId":"s74_charge_expiring_api_admin_sub_charge_expiring_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sub/cancel_auto_renew":{"post":{"tags":["subscription"],"summary":"S74 Cancel Auto Renew","description":"Юзер отменяет авто-продление. body: {slug, user_tg?, guest_token?}.","operationId":"s74_cancel_auto_renew_api_sub_cancel_auto_renew_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sub/auto_renew_status":{"get":{"tags":["subscription"],"summary":"S74 Auto Renew Status","description":"Проверка: есть ли активная подписка с auto_renew_active для (slug, user). Возвращает {active, next_charge_at?, card_last4?}.","operationId":"s74_auto_renew_status_api_sub_auto_renew_status_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"user_tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"User Tg"}},{"name":"guest_token","in":"query","required":false,"schema":{"type":"string","default":"","title":"Guest Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/neighbor/claim/redeem":{"post":{"summary":" S66 Neighbor Redeem","operationId":"_s66_neighbor_redeem_api_neighbor_claim_redeem_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sub/pause":{"post":{"tags":["subscription"],"summary":"S76 Sub Pause","description":"Юзер ставит подписку на паузу 1/2/3 мес. body: {slug, user_tg|guest_token, months}.","operationId":"s76_sub_pause_api_sub_pause_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sub/resume":{"post":{"tags":["subscription"],"summary":"S76 Sub Resume","description":"Юзер вручную возобновляет подписку до окончания паузы.","operationId":"s76_sub_resume_api_sub_resume_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/sub/auto_resume_expiring_pauses":{"post":{"tags":["subscription"],"summary":"S76 Auto Resume Cron","description":"Cron: всех у кого paused_until <= today + 1 → возобновить + push «возобновлено» / push T-3 'возобновится через 3 дня'.","operationId":"s76_auto_resume_cron_api_admin_sub_auto_resume_expiring_pauses_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sub/pause_status":{"get":{"tags":["subscription"],"summary":"S76 Pause Status","description":"Проверить — на паузе ли подписка.","operationId":"s76_pause_status_api_sub_pause_status_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"user_tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"User Tg"}},{"name":"guest_token","in":"query","required":false,"schema":{"type":"string","default":"","title":"Guest Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/sub/welcome_dispatch":{"post":{"tags":["subscription"],"summary":"S77 Welcome Dispatch","description":"Cron: каждый час — для каждой paid-подписки решаем нужно ли отправить t0/d1/d3/d7 push.","operationId":"s77_welcome_dispatch_api_admin_sub_welcome_dispatch_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/me/annual_price":{"post":{"tags":["partners"],"summary":"S78 Partner Annual Price","description":"POST {owner_tg_id, slug, annual_price_rub|null} → UPDATE partner_sub_cfg_v1.annual_price_rub.","operationId":"s78_partner_annual_price_api_partners_me_annual_price_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["partners"],"summary":"S78 Partner Annual Price Get","operationId":"s78_partner_annual_price_get_api_partners_me_annual_price_get","parameters":[{"name":"owner_tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Owner Tg Id"}},{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/me/roi":{"get":{"tags":["partners"],"summary":"S79 Partner Roi","description":"Возвращает ROI summary партнёра: сколько платил, сколько RSVP получил, экономия vs 200₽-конкурент.","operationId":"s79_partner_roi_api_partners_me_roi_get","parameters":[{"name":"owner_tg_id","in":"query","required":true,"schema":{"type":"integer","title":"Owner Tg Id"}},{"name":"slug","in":"query","required":false,"schema":{"type":"string","default":"","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/me/post":{"post":{"tags":["partners-social"],"summary":"S81 Partner Create Post","description":"Создаёт partner_posts + ставит в очередь для выбранных сетей.\nbody: {owner_tg, slug, title?, body_text, image_url?, link_url?, event_id?, networks: ['vk','tg',...]}.\nЕсли у партнёра нет аккаунта для сети — она пропускается со skipped.","operationId":"s81_partner_create_post_api_partners_me_post_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/me/posts":{"get":{"tags":["partners-social"],"summary":"S81 Partner List Posts","description":"Лента постов партнёра + статусы по каждой сети.","operationId":"s81_partner_list_posts_api_partners_me_posts_get","parameters":[{"name":"owner_tg","in":"query","required":true,"schema":{"type":"integer","title":"Owner Tg"}},{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/me/social_accounts":{"get":{"tags":["partners-social"],"summary":"S81 Partner Social Accounts","operationId":"s81_partner_social_accounts_api_partners_me_social_accounts_get","parameters":[{"name":"owner_tg","in":"query","required":true,"schema":{"type":"integer","title":"Owner Tg"}},{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/me/social_account":{"post":{"tags":["partners-social"],"summary":"S81 Partner Social Account Save","description":"Добавить/обновить акк. body: {owner_tg, slug, network, account_id, account_name?, access_token}.","operationId":"s81_partner_social_account_save_api_partners_me_social_account_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/me/social_account/{acc_id}":{"delete":{"tags":["partners-social"],"summary":"S81 Partner Social Account Delete","operationId":"s81_partner_social_account_delete_api_partners_me_social_account__acc_id__delete","parameters":[{"name":"acc_id","in":"path","required":true,"schema":{"type":"integer","title":"Acc Id"}},{"name":"owner_tg","in":"query","required":true,"schema":{"type":"integer","title":"Owner Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/me/referrals":{"get":{"tags":["partners"],"summary":"S82 Partner Referrals","description":"Список всех юзеров пришедших по ссылке партнёра + их статус.","operationId":"s82_partner_referrals_api_partners_me_referrals_get","parameters":[{"name":"owner_tg","in":"query","required":true,"schema":{"type":"integer","title":"Owner Tg"}},{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tarot/today":{"get":{"tags":["tarot"],"summary":"S83 Tarot Today","description":"Сколько раскладов уже сделано сегодня.","operationId":"s83_tarot_today_api_tarot_today_get","parameters":[{"name":"tg","in":"query","required":true,"schema":{"type":"integer","title":"Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tarot/draw":{"post":{"tags":["tarot"],"summary":"S83 Tarot Draw","description":"Сделать новый расклад. body: {tg, kind, question?}.","operationId":"s83_tarot_draw_api_tarot_draw_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tarot/spread/{sid}":{"get":{"tags":["tarot"],"summary":"S83 Tarot Get Spread","operationId":"s83_tarot_get_spread_api_tarot_spread__sid__get","parameters":[{"name":"sid","in":"path","required":true,"schema":{"type":"integer","title":"Sid"}},{"name":"tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tarot/history":{"get":{"tags":["tarot"],"summary":"S83 Tarot History","description":"История раскладов юзера.","operationId":"s83_tarot_history_api_tarot_history_get","parameters":[{"name":"tg","in":"query","required":true,"schema":{"type":"integer","title":"Tg"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/me/sub_balance":{"get":{"tags":["partners-sub-payout"],"summary":"S91 Sub Balance","description":"Баланс партнёра по subscription-платежам.","operationId":"s91_sub_balance_api_partners_me_sub_balance_get","parameters":[{"name":"owner_tg","in":"query","required":true,"schema":{"type":"integer","title":"Owner Tg"}},{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/me/sub_payout_request":{"post":{"tags":["partners-sub-payout"],"summary":"S91 Sub Payout Request","description":"Запрос на вывод. body: {owner_tg, slug, amount_rub, sbp_phone, note?}.","operationId":"s91_sub_payout_request_api_partners_me_sub_payout_request_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partners/me/sub_payout_history":{"get":{"tags":["partners-sub-payout"],"summary":"S91 Sub Payout History","operationId":"s91_sub_payout_history_api_partners_me_sub_payout_history_get","parameters":[{"name":"owner_tg","in":"query","required":true,"schema":{"type":"integer","title":"Owner Tg"}},{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/payouts/list":{"get":{"tags":["admin"],"summary":"S92 Payouts List","description":"Список payout-запросов. status_filter: pending/approved/paid/rejected (empty = все).","operationId":"s92_payouts_list_api_admin_payouts_list_get","parameters":[{"name":"token","in":"query","required":false,"schema":{"type":"string","default":"","title":"Token"}},{"name":"status_filter","in":"query","required":false,"schema":{"type":"string","default":"","title":"Status Filter"}},{"name":"kind","in":"query","required":false,"schema":{"type":"string","default":"","title":"Kind"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/payouts/update_status":{"post":{"tags":["admin"],"summary":"S92 Payouts Update Status","description":"Изменить статус payout-запроса. body: {token, request_id, status, admin_note?}.\nstatus: approved|paid|rejected. Если paid → set paid_at=NOW(). Push партнёру.","operationId":"s92_payouts_update_status_api_admin_payouts_update_status_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/chgk/fetch_batch":{"post":{"tags":["admin"],"summary":"S96 Chgk Fetch","description":"Pull N случайных вопросов из db.chgk.info XML.","operationId":"s96_chgk_fetch_api_admin_chgk_fetch_batch_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chgk/random":{"get":{"tags":["games"],"summary":"S96 Chgk Random","description":"Возвращает случайные N вопросов из пула.","operationId":"s96_chgk_random_api_chgk_random_get","parameters":[{"name":"count","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Count"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sub/card_status":{"get":{"tags":["subscription"],"summary":" S66 Card Status","description":"Есть ли у пользователя привязанная карта (сохранённый payment_method_id). {has_card, card_last4}.","operationId":"_s66_card_status_api_sub_card_status_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"user_tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"User Tg"}},{"name":"guest_token","in":"query","required":false,"schema":{"type":"string","default":"","title":"Guest Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sub/unbind_card":{"post":{"tags":["subscription"],"summary":" S66 Unbind Card","description":"Отвязать карту: удалить сохранённый токен (payment_method_id) из нашей системы + остановить автопродление.\nТребование YooKassa: пользователь может отвязать карту сам в любой момент, токен повтора удаляется у нас.","operationId":"_s66_unbind_card_api_sub_unbind_card_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/growth/board":{"get":{"summary":" S66 Gr Board","operationId":"_s66_gr_board_api_growth_board_get","parameters":[{"name":"tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg"}},{"name":"city","in":"query","required":false,"schema":{"type":"string","default":"","title":"City"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/venue/qr_register":{"post":{"summary":" S98 Venue Qr Register","operationId":"_s98_venue_qr_register_api_venue_qr_register_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/events/{slug}/view":{"post":{"summary":" S99 Event View","operationId":"_s99_event_view_api_events__slug__view_post","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/org/event/{slug}/stats":{"get":{"summary":" S99 Org Event Stats","operationId":"_s99_org_event_stats_api_org_event__slug__stats_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/org/event/{slug}/notify":{"post":{"summary":" S99 Org Event Notify","operationId":"_s99_org_event_notify_api_org_event__slug__notify_post","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/profile/min_save_v1":{"post":{"summary":" S99 Profile Min Save","description":"MIN_REG_S99 — минимальная регистрация: имя + город (для не-dating действий).","operationId":"_s99_profile_min_save_api_profile_min_save_v1_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/org/event/{slug}/attendees":{"get":{"summary":" S99 Org Event Attendees","description":"ORG_ATTENDEES_S99 — список записавшихся: имя, статус, оплата (owner-only).","operationId":"_s99_org_event_attendees_api_org_event__slug__attendees_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"tg","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tg"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AuctionBidIn":{"properties":{"amount":{"type":"integer","minimum":1.0,"title":"Amount"}},"type":"object","required":["amount"],"title":"AuctionBidIn"},"AuctionCreateIn":{"properties":{"title":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Description"},"date_budget":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date Budget"},"venue_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Venue Id"},"min_bid":{"type":"integer","maximum":1000.0,"minimum":5.0,"title":"Min Bid","default":10},"duration_hours":{"type":"integer","maximum":168.0,"minimum":1.0,"title":"Duration Hours","default":24}},"type":"object","title":"AuctionCreateIn"},"AvailabilitySetRequest":{"properties":{"slots":{"items":{},"type":"array","title":"Slots","description":"Список слотов: [{day: 0-6, time: 'morning'/'afternoon'/'evening'/'night'}, ...]"}},"type":"object","required":["slots"],"title":"AvailabilitySetRequest"},"BlockIn":{"properties":{"reason":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Reason"}},"type":"object","title":"BlockIn"},"Body__admin_upload_static_api_admin_deploy_upload_static_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"},"dst":{"type":"string","title":"Dst"}},"type":"object","required":["file","dst"],"title":"Body__admin_upload_static_api_admin_deploy_upload_static_post"},"Body_mark_notifications_read_api_notifications_read_post":{"properties":{"ids":{"items":{},"type":"array","title":"Ids"}},"type":"object","title":"Body_mark_notifications_read_api_notifications_read_post"},"Body_send_voice_message_api_chat_send_voice_post":{"properties":{"audio":{"type":"string","format":"binary","title":"Audio"}},"type":"object","required":["audio"],"title":"Body_send_voice_message_api_chat_send_voice_post"},"Body_upload_photo_api_photos_upload_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_photo_api_photos_upload_post"},"Body_upload_photo_v140_api_photos_upload_v140_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_photo_v140_api_photos_upload_v140_post"},"Body_v995_upload_multi_api_photos_upload_multi_post":{"properties":{"files":{"items":{"type":"string","format":"binary"},"type":"array","title":"Files"}},"type":"object","required":["files"],"title":"Body_v995_upload_multi_api_photos_upload_multi_post"},"BunkerCreateIn":{"properties":{"venue_id":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Venue Id"},"max_players":{"type":"integer","maximum":16.0,"minimum":4.0,"title":"Max Players","default":12},"bunker_size":{"anyOf":[{"type":"integer","maximum":16.0,"minimum":1.0},{"type":"null"}],"title":"Bunker Size"}},"type":"object","title":"BunkerCreateIn"},"BunkerJoinIn":{"properties":{"code":{"type":"string","maxLength":8,"minLength":6,"title":"Code"}},"type":"object","required":["code"],"title":"BunkerJoinIn"},"BunkerRevealIn":{"properties":{"characteristic":{"type":"string","maxLength":64,"title":"Characteristic"}},"type":"object","required":["characteristic"],"title":"BunkerRevealIn"},"BunkerVoteIn":{"properties":{"target_user_id":{"type":"integer","minimum":1.0,"title":"Target User Id"}},"type":"object","required":["target_user_id"],"title":"BunkerVoteIn"},"CheckinIn":{"properties":{"source":{"type":"string","pattern":"^(manual|qr|nfc|deeplink|auto)$","title":"Source","default":"manual"},"table_num":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Table Num"},"zone":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Zone"},"lat":{"anyOf":[{"type":"number","maximum":90.0,"minimum":-90.0},{"type":"null"}],"title":"Lat"},"lon":{"anyOf":[{"type":"number","maximum":180.0,"minimum":-180.0},{"type":"null"}],"title":"Lon"}},"type":"object","title":"CheckinIn"},"CompatibilityAnswersRequest":{"properties":{"answers":{"additionalProperties":true,"type":"object","title":"Answers","description":"Словарь ответов: {q1: answer, q2: answer, ...}"}},"type":"object","required":["answers"],"title":"CompatibilityAnswersRequest"},"CookoffSubmitIn":{"properties":{"name":{"type":"string","title":"Name"},"weight_g":{"type":"number","title":"Weight G"},"kcal":{"type":"number","title":"Kcal"},"protein_g":{"type":"number","title":"Protein G"},"fiber_g":{"type":"number","title":"Fiber G"},"description":{"type":"string","title":"Description","default":""},"ingredients":{"items":{},"type":"array","title":"Ingredients","default":[]},"cooking_steps":{"items":{},"type":"array","title":"Cooking Steps","default":[]},"edits_recipe_num":{"type":"string","title":"Edits Recipe Num","default":""}},"type":"object","required":["name","weight_g","kcal","protein_g","fiber_g"],"title":"CookoffSubmitIn"},"CookoffSubmitV2":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description","default":""},"ingredients":{"items":{"$ref":"#/components/schemas/IngredientItem"},"type":"array","title":"Ingredients"},"cooking_method":{"type":"string","title":"Cooking Method","default":"сырое"},"cooking_steps":{"items":{},"type":"array","title":"Cooking Steps","default":[]},"portions":{"type":"integer","title":"Portions","default":1}},"type":"object","required":["name","ingredients"],"title":"CookoffSubmitV2"},"CoupleTestAnswerIn":{"properties":{"session_id":{"type":"integer","minimum":1.0,"title":"Session Id"},"answers":{"additionalProperties":true,"type":"object","title":"Answers"}},"type":"object","required":["session_id","answers"],"title":"CoupleTestAnswerIn"},"CoupleTestStartIn":{"properties":{"match_id":{"type":"integer","minimum":1.0,"title":"Match Id"},"test_key":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Test Key"}},"type":"object","required":["match_id"],"title":"CoupleTestStartIn"},"CrocodileCreateIn":{"properties":{"venue_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Venue Id"},"difficulty":{"type":"string","pattern":"^(easy|medium|hard|mixed)$","title":"Difficulty","default":"mixed"},"round_time":{"type":"integer","maximum":120.0,"minimum":30.0,"title":"Round Time","default":60}},"type":"object","title":"CrocodileCreateIn"},"DateInviteIn":{"properties":{"match_id":{"type":"integer","minimum":1.0,"title":"Match Id"},"budget_level":{"type":"string","maxLength":64,"title":"Budget Level"},"venue_id":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Venue Id"},"venue_item_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array","maxItems":20},{"type":"null"}],"title":"Venue Item Ids"},"message":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Message"}},"type":"object","required":["match_id","budget_level"],"title":"DateInviteIn"},"DrinkOrderIn":{"properties":{"venue_id":{"type":"integer","minimum":1.0,"title":"Venue Id"},"drink_id":{"type":"integer","minimum":1.0,"title":"Drink Id"},"to_user_id":{"type":"integer","minimum":1.0,"title":"To User Id"},"message":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Message"},"is_anonymous":{"type":"boolean","title":"Is Anonymous","default":true}},"type":"object","required":["venue_id","drink_id","to_user_id"],"title":"DrinkOrderIn"},"FeedbackIn":{"properties":{"category":{"type":"string","title":"Category"},"screen":{"type":"string","title":"Screen","default":""},"message":{"type":"string","title":"Message"},"app_version":{"type":"string","title":"App Version","default":""}},"type":"object","required":["category","message"],"title":"FeedbackIn"},"FeedbackModerateIn":{"properties":{"feedback_id":{"type":"integer","title":"Feedback Id"},"status":{"type":"string","title":"Status"},"resolution_note":{"type":"string","title":"Resolution Note","default":""}},"type":"object","required":["feedback_id","status"],"title":"FeedbackModerateIn"},"FoodTagsIn":{"properties":{"food_tags":{"additionalProperties":true,"type":"object","title":"Food Tags"}},"type":"object","required":["food_tags"],"title":"FoodTagsIn"},"GameLikeIn":{"properties":{"target_user_id":{"type":"integer","minimum":1.0,"title":"Target User Id"},"game_mode":{"type":"string","maxLength":64,"title":"Game Mode"},"game_id":{"type":"integer","minimum":1.0,"title":"Game Id"}},"type":"object","required":["target_user_id","game_mode","game_id"],"title":"GameLikeIn"},"GameStartIn":{"properties":{"match_id":{"type":"integer","minimum":1.0,"title":"Match Id"},"game_type":{"type":"string","maxLength":64,"title":"Game Type"},"allowed_roles":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Allowed Roles"}},"type":"object","required":["match_id","game_type"],"title":"GameStartIn"},"GameVoteIn":{"properties":{"game_id":{"type":"integer","minimum":1.0,"title":"Game Id"},"vote":{"type":"string","maxLength":255,"title":"Vote"}},"type":"object","required":["game_id","vote"],"title":"GameVoteIn"},"GiftIn":{"properties":{"match_id":{"type":"integer","minimum":1.0,"title":"Match Id"},"gift_key":{"type":"string","maxLength":64,"title":"Gift Key"}},"type":"object","required":["match_id","gift_key"],"title":"GiftIn"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"IcebreakerAnswerIn":{"properties":{"game_id":{"type":"integer","minimum":1.0,"title":"Game Id"},"answer":{"type":"string","maxLength":1000,"minLength":1,"title":"Answer"}},"type":"object","required":["game_id","answer"],"title":"IcebreakerAnswerIn"},"IcebreakerStartIn":{"properties":{"venue_id":{"type":"integer","minimum":1.0,"title":"Venue Id"},"to_user_id":{"type":"integer","minimum":1.0,"title":"To User Id"},"game_type":{"type":"string","maxLength":64,"title":"Game Type"}},"type":"object","required":["venue_id","to_user_id","game_type"],"title":"IcebreakerStartIn"},"IngredientCustom":{"properties":{"name":{"type":"string","title":"Name"},"kcal":{"type":"number","title":"Kcal","default":0},"protein_g":{"type":"number","title":"Protein G","default":0},"fat_g":{"type":"number","title":"Fat G","default":0},"carbs_g":{"type":"number","title":"Carbs G","default":0},"fiber_g":{"type":"number","title":"Fiber G","default":0},"category":{"type":"string","title":"Category","default":"other"}},"type":"object","required":["name"],"title":"IngredientCustom"},"IngredientItem":{"properties":{"name":{"type":"string","title":"Name"},"qty_g":{"type":"number","title":"Qty G"}},"type":"object","required":["name","qty_g"],"title":"IngredientItem"},"IntentionsIn":{"properties":{"intentions":{"items":{"type":"string"},"type":"array","maxItems":10,"title":"Intentions"}},"type":"object","required":["intentions"],"title":"IntentionsIn"},"InviteIn":{"properties":{"venue_id":{"type":"integer","minimum":1.0,"title":"Venue Id"},"to_user_id":{"type":"integer","minimum":1.0,"title":"To User Id"},"message":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Message"}},"type":"object","required":["venue_id","to_user_id"],"title":"InviteIn"},"MeetFeedbackIn":{"properties":{"match_id":{"type":"integer","minimum":1.0,"title":"Match Id"},"rating":{"type":"string","pattern":"^(hot|warm|cold|ghost)$","title":"Rating"}},"type":"object","required":["match_id","rating"],"title":"MeetFeedbackIn"},"MenuItemIn":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"item_type":{"type":"string","maxLength":64,"title":"Item Type","default":"drink"},"emoji":{"type":"string","maxLength":4,"title":"Emoji","default":"🍹"},"description":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Description"},"price_rub":{"anyOf":[{"type":"integer","maximum":1000000.0,"minimum":0.0},{"type":"null"}],"title":"Price Rub"},"price_coins":{"type":"integer","maximum":1000000.0,"minimum":0.0,"title":"Price Coins","default":0},"is_giftable":{"type":"boolean","title":"Is Giftable","default":true}},"type":"object","required":["name"],"title":"MenuItemIn"},"MenuOrderIn":{"properties":{"venue_id":{"type":"integer","minimum":1.0,"title":"Venue Id"},"item_id":{"type":"integer","minimum":1.0,"title":"Item Id"},"to_user_id":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"To User Id"},"message":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Message"},"is_anonymous":{"type":"boolean","title":"Is Anonymous","default":false}},"type":"object","required":["venue_id","item_id"],"title":"MenuOrderIn"},"MerchOrderIn":{"properties":{"item_id":{"type":"integer","minimum":1.0,"title":"Item Id"},"quantity":{"type":"integer","maximum":10.0,"minimum":1.0,"title":"Quantity","default":1},"delivery_address":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Delivery Address"}},"type":"object","required":["item_id"],"title":"MerchOrderIn"},"MessageIn":{"properties":{"match_id":{"type":"integer","minimum":1.0,"title":"Match Id"},"content":{"type":"string","maxLength":5000,"minLength":1,"title":"Content"},"message_type":{"type":"string","maxLength":16,"title":"Message Type","default":"text"},"gift_type":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Gift Type"}},"type":"object","required":["match_id","content"],"title":"MessageIn"},"MessageReactionIn":{"properties":{"emoji":{"type":"string","maxLength":4,"title":"Emoji"}},"type":"object","required":["emoji"],"title":"MessageReactionIn"},"ModerateIn":{"properties":{"submission_id":{"type":"integer","title":"Submission Id"},"action":{"type":"string","title":"Action"},"note":{"type":"string","title":"Note","default":""}},"type":"object","required":["submission_id","action"],"title":"ModerateIn"},"NFCCheckinIn":{"properties":{"tag_uid":{"type":"string","maxLength":100,"title":"Tag Uid"}},"type":"object","required":["tag_uid"],"title":"NFCCheckinIn"},"NFCTagRegisterIn":{"properties":{"tag_uid":{"type":"string","maxLength":100,"title":"Tag Uid"},"table_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Table Number"},"zone":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Zone"}},"type":"object","required":["tag_uid"],"title":"NFCTagRegisterIn"},"NeverCreateIn":{"properties":{"venue_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Venue Id"},"total_rounds":{"type":"integer","maximum":30.0,"minimum":5.0,"title":"Total Rounds","default":15}},"type":"object","title":"NeverCreateIn"},"NoMatchMsgIn":{"properties":{"to_user_id":{"type":"integer","minimum":1.0,"title":"To User Id"},"text":{"type":"string","maxLength":1000,"minLength":1,"title":"Text"}},"type":"object","required":["to_user_id","text"],"title":"NoMatchMsgIn"},"NoMatchRespondIn":{"properties":{"message_id":{"type":"integer","minimum":1.0,"title":"Message Id"},"action":{"type":"string","pattern":"^(accept|reject)$","title":"Action"}},"type":"object","required":["message_id","action"],"title":"NoMatchRespondIn"},"PartyBotIn":{"properties":{"game_id":{"type":"integer","minimum":1.0,"title":"Game Id"},"mode":{"type":"string","maxLength":64,"title":"Mode"}},"type":"object","required":["game_id","mode"],"title":"PartyBotIn"},"PartyFillBotsIn":{"properties":{"game_id":{"type":"integer","minimum":1.0,"title":"Game Id"},"mode":{"type":"string","maxLength":64,"title":"Mode"},"target_count":{"type":"integer","maximum":20.0,"minimum":2.0,"title":"Target Count"}},"type":"object","required":["game_id","mode","target_count"],"title":"PartyFillBotsIn"},"PhotoComplimentIn":{"properties":{"venue_id":{"type":"integer","minimum":1.0,"title":"Venue Id"},"to_user_id":{"type":"integer","minimum":1.0,"title":"To User Id"},"photo_data":{"type":"string","maxLength":1000000,"title":"Photo Data"},"message":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Message"}},"type":"object","required":["venue_id","to_user_id","photo_data"],"title":"PhotoComplimentIn"},"PhotoReorderIn":{"properties":{"order":{"items":{"type":"integer"},"type":"array","maxItems":6,"minItems":1,"title":"Order"}},"type":"object","required":["order"],"title":"PhotoReorderIn"},"PhotoSearchIn":{"properties":{"venue_id":{"type":"integer","minimum":1.0,"title":"Venue Id"},"photo_data":{"type":"string","maxLength":1000000,"title":"Photo Data"}},"type":"object","required":["venue_id","photo_data"],"title":"PhotoSearchIn"},"ProfileUpdateIn":{"properties":{"display_name":{"anyOf":[{"type":"string","maxLength":100,"minLength":2},{"type":"null"}],"title":"Display Name"},"bio":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Bio"},"age":{"anyOf":[{"type":"integer","maximum":99.0,"minimum":18.0},{"type":"null"}],"title":"Age"},"gender":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Gender"},"looking_for":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Looking For"},"location_city":{"anyOf":[{"type":"string","maxLength":100,"minLength":2},{"type":"null"}],"title":"Location City"},"interests":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":10},{"type":"null"}],"title":"Interests"},"activities":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":5},{"type":"null"}],"title":"Activities"},"what_you_seek":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"What You Seek"},"what_you_give":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"What You Give"},"relationship_goal":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Relationship Goal"},"first_date_wishes":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":5},{"type":"null"}],"title":"First Date Wishes"},"date_budget":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Date Budget"}},"type":"object","title":"ProfileUpdateIn"},"ReportIn":{"properties":{"reported_user_id":{"type":"integer","minimum":1.0,"title":"Reported User Id"},"match_id":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Match Id"},"reason":{"type":"string","maxLength":255,"title":"Reason"},"comment":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Comment"}},"type":"object","required":["reported_user_id","reason"],"title":"ReportIn"},"ReviewIn":{"properties":{"rating":{"type":"integer","maximum":5.0,"minimum":1.0,"title":"Rating"},"tags":{"items":{"type":"string"},"type":"array","maxItems":5,"title":"Tags"},"text":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Text"}},"type":"object","required":["rating"],"title":"ReviewIn"},"SDCreateIn":{"properties":{"mode":{"type":"string","pattern":"^(online|venue)$","title":"Mode","default":"online"},"venue_id":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Venue Id"},"title":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Title"},"preset":{"type":"string","maxLength":64,"title":"Preset","default":"standard"},"max_participants":{"type":"integer","maximum":50.0,"minimum":4.0,"title":"Max Participants","default":20},"gender_filter":{"type":"boolean","title":"Gender Filter","default":true},"age_min":{"anyOf":[{"type":"integer","maximum":99.0,"minimum":18.0},{"type":"null"}],"title":"Age Min"},"age_max":{"anyOf":[{"type":"integer","maximum":99.0,"minimum":18.0},{"type":"null"}],"title":"Age Max"},"tables_count":{"type":"integer","maximum":30.0,"minimum":2.0,"title":"Tables Count","default":10}},"type":"object","title":"SDCreateIn"},"SDJoinIn":{"properties":{"code":{"type":"string","maxLength":12,"minLength":4,"title":"Code"}},"type":"object","required":["code"],"title":"SDJoinIn"},"SDMessageIn":{"properties":{"content":{"type":"string","maxLength":1000,"minLength":1,"title":"Content"}},"type":"object","required":["content"],"title":"SDMessageIn"},"SDRateIn":{"properties":{"to_user_id":{"type":"integer","minimum":1.0,"title":"To User Id"},"liked":{"type":"boolean","title":"Liked"},"rating":{"anyOf":[{"type":"integer","maximum":5.0,"minimum":1.0},{"type":"null"}],"title":"Rating"},"note":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Note"}},"type":"object","required":["to_user_id","liked"],"title":"SDRateIn"},"SettingsIn":{"properties":{"filter_age_min":{"anyOf":[{"type":"integer","maximum":99.0,"minimum":18.0},{"type":"null"}],"title":"Filter Age Min"},"filter_age_max":{"anyOf":[{"type":"integer","maximum":99.0,"minimum":18.0},{"type":"null"}],"title":"Filter Age Max"},"filter_distance_km":{"anyOf":[{"type":"integer","maximum":500.0,"minimum":1.0},{"type":"null"}],"title":"Filter Distance Km"},"notifications_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Notifications Enabled"},"is_hidden":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Hidden"},"show_online":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Show Online"},"show_last_seen":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Show Last Seen"},"show_distance":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Show Distance"}},"type":"object","title":"SettingsIn"},"ShopBuyIn":{"properties":{"item_key":{"type":"string","maxLength":64,"title":"Item Key"}},"type":"object","required":["item_key"],"title":"ShopBuyIn"},"SpyfallCreateIn":{"properties":{"venue_id":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Venue Id"},"max_players":{"type":"integer","maximum":10.0,"minimum":4.0,"title":"Max Players","default":8},"round_time":{"type":"integer","maximum":600.0,"minimum":180.0,"title":"Round Time","default":480}},"type":"object","title":"SpyfallCreateIn"},"SpyfallGuessIn":{"properties":{"location":{"type":"string","maxLength":255,"minLength":1,"title":"Location"}},"type":"object","required":["location"],"title":"SpyfallGuessIn"},"SpyfallVoteIn":{"properties":{"target_user_id":{"type":"integer","minimum":1.0,"title":"Target User Id"}},"type":"object","required":["target_user_id"],"title":"SpyfallVoteIn"},"SwipeIn":{"properties":{"target_user_id":{"type":"integer","minimum":1.0,"title":"Target User Id"},"action":{"type":"string","pattern":"^(like|dislike|superlike)$","title":"Action"}},"type":"object","required":["target_user_id","action"],"title":"SwipeIn"},"TodChoiceIn":{"properties":{"choice":{"type":"string","pattern":"^(truth|dare)$","title":"Choice"}},"type":"object","required":["choice"],"title":"TodChoiceIn"},"TodCompleteIn":{"properties":{"completed":{"type":"boolean","title":"Completed","default":true},"skipped":{"type":"boolean","title":"Skipped","default":false}},"type":"object","title":"TodCompleteIn"},"TodCreateIn":{"properties":{"venue_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Venue Id"},"max_players":{"type":"integer","maximum":20.0,"minimum":2.0,"title":"Max Players","default":10},"total_rounds":{"type":"integer","maximum":50.0,"minimum":5.0,"title":"Total Rounds","default":20},"spice_level":{"type":"string","pattern":"^(light|medium|spicy|mixed)$","title":"Spice Level","default":"medium"}},"type":"object","title":"TodCreateIn"},"TournamentCreateIn":{"properties":{"venue_id":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Venue Id"},"name":{"type":"string","maxLength":100,"title":"Name","default":"Турнир"},"games":{"items":{"type":"string"},"type":"array","maxItems":10,"title":"Games","default":["crocodile","spyfall","never"]},"max_players":{"type":"integer","maximum":20.0,"minimum":3.0,"title":"Max Players","default":12}},"type":"object","title":"TournamentCreateIn"},"TrackEventIn":{"properties":{"event_type":{"type":"string","maxLength":50,"title":"Event Type"},"data":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Data"}},"type":"object","required":["event_type"],"title":"TrackEventIn"},"UpdateLocationIn":{"properties":{"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"},"lon":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lon"}},"type":"object","required":["lat","lon"],"title":"UpdateLocationIn"},"V990PushConfig":{"properties":{"enabled":{"type":"boolean","title":"Enabled","default":true},"types":{"items":{"type":"string"},"type":"array","title":"Types","default":["match","message","visit"]}},"type":"object","title":"V990PushConfig"},"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"},"VenueAuctionBidIn":{"properties":{"amount":{"type":"integer","maximum":1000000.0,"minimum":1.0,"title":"Amount"}},"type":"object","required":["amount"],"title":"VenueAuctionBidIn"},"VenueAuctionCreateIn":{"properties":{"venue_id":{"type":"integer","minimum":1.0,"title":"Venue Id"},"item_id":{"type":"integer","minimum":1.0,"title":"Item Id"},"start_price":{"type":"integer","maximum":1000000.0,"minimum":1.0,"title":"Start Price","default":1},"duration_hours":{"type":"integer","maximum":72.0,"minimum":1.0,"title":"Duration Hours","default":24},"title":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Description"}},"type":"object","required":["venue_id","item_id"],"title":"VenueAuctionCreateIn"},"VenueCreateIn":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"category":{"type":"string","maxLength":64,"title":"Category","default":"other"},"city":{"type":"string","maxLength":100,"title":"City","default":""},"address":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Address"},"description":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Description"},"work_hours":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Work Hours"},"latitude":{"anyOf":[{"type":"number","maximum":90.0,"minimum":-90.0},{"type":"null"}],"title":"Latitude"},"longitude":{"anyOf":[{"type":"number","maximum":180.0,"minimum":-180.0},{"type":"null"}],"title":"Longitude"}},"type":"object","required":["name"],"title":"VenueCreateIn"},"VenueEditIn":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Name"},"category":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Category"},"city":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"City"},"address":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Address"},"description":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Description"},"work_hours":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Work Hours"},"latitude":{"anyOf":[{"type":"number","maximum":90.0,"minimum":-90.0},{"type":"null"}],"title":"Latitude"},"longitude":{"anyOf":[{"type":"number","maximum":180.0,"minimum":-180.0},{"type":"null"}],"title":"Longitude"},"phone":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Phone"},"website":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Website"}},"type":"object","title":"VenueEditIn"},"VenueGreetingIn":{"properties":{"venue_id":{"type":"integer","minimum":1.0,"title":"Venue Id"},"to_user_id":{"type":"integer","minimum":1.0,"title":"To User Id"},"text":{"type":"string","maxLength":1000,"minLength":1,"title":"Text"}},"type":"object","required":["venue_id","to_user_id","text"],"title":"VenueGreetingIn"},"VenueMafiaAddBotIn":{"properties":{"game_id":{"type":"integer","minimum":1.0,"title":"Game Id"},"bot_name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Bot Name"},"assigned_role":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Assigned Role"}},"type":"object","required":["game_id"],"title":"VenueMafiaAddBotIn"},"VenueMafiaAssignRoleIn":{"properties":{"game_id":{"type":"integer","minimum":1.0,"title":"Game Id"},"player_id":{"type":"integer","minimum":1.0,"title":"Player Id"},"role":{"type":"string","maxLength":64,"title":"Role"}},"type":"object","required":["game_id","player_id","role"],"title":"VenueMafiaAssignRoleIn"},"VenueMafiaCreateIn":{"properties":{"venue_id":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Venue Id"},"max_players":{"type":"integer","maximum":20.0,"minimum":4.0,"title":"Max Players","default":15},"min_players":{"type":"integer","maximum":20.0,"minimum":4.0,"title":"Min Players","default":4},"mode":{"type":"string","pattern":"^(venue|online)$","title":"Mode","default":"venue"},"allowed_roles":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Allowed Roles"}},"type":"object","title":"VenueMafiaCreateIn"},"VenueMafiaDayVoteIn":{"properties":{"target_user_id":{"type":"integer","minimum":1.0,"title":"Target User Id"}},"type":"object","required":["target_user_id"],"title":"VenueMafiaDayVoteIn"},"VenueMafiaJoinIn":{"properties":{"code":{"type":"string","maxLength":6,"minLength":6,"title":"Code"}},"type":"object","required":["code"],"title":"VenueMafiaJoinIn"},"VenueMafiaNightActionIn":{"properties":{"target_user_id":{"type":"integer","minimum":1.0,"title":"Target User Id"}},"type":"object","required":["target_user_id"],"title":"VenueMafiaNightActionIn"},"VenueMafiaSetRolesIn":{"properties":{"game_id":{"type":"integer","minimum":1.0,"title":"Game Id"},"allowed_roles":{"items":{"type":"string"},"type":"array","maxItems":10,"title":"Allowed Roles"}},"type":"object","required":["game_id","allowed_roles"],"title":"VenueMafiaSetRolesIn"},"VenueMafiaSetThemeIn":{"properties":{"game_id":{"type":"integer","minimum":1.0,"title":"Game Id"},"theme":{"type":"string","maxLength":64,"title":"Theme"}},"type":"object","required":["game_id","theme"],"title":"VenueMafiaSetThemeIn"},"VenueMafiaSetTimerIn":{"properties":{"game_id":{"type":"integer","minimum":1.0,"title":"Game Id"},"preset":{"type":"string","maxLength":64,"title":"Preset"}},"type":"object","required":["game_id","preset"],"title":"VenueMafiaSetTimerIn"},"VenueMafiaSetVariationIn":{"properties":{"game_id":{"type":"integer","minimum":1.0,"title":"Game Id"},"variation":{"type":"string","pattern":"^(classic|immersive)$","title":"Variation"},"scenario":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Scenario"}},"type":"object","required":["game_id","variation"],"title":"VenueMafiaSetVariationIn"},"VenuePartyIn":{"properties":{"venue_id":{"type":"integer","minimum":1.0,"title":"Venue Id"},"game_mode":{"type":"string","pattern":"^(mafia|bunker|spyfall|crocodile|never|tod)$","title":"Game Mode"}},"type":"object","required":["venue_id","game_mode"],"title":"VenuePartyIn"},"VenueRateIn":{"properties":{"score":{"type":"integer","maximum":5.0,"minimum":1.0,"title":"Score"},"comment":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Comment"}},"type":"object","required":["score"],"title":"VenueRateIn"},"VenueWinkIn":{"properties":{"venue_id":{"type":"integer","minimum":1.0,"title":"Venue Id"},"to_user_id":{"type":"integer","minimum":1.0,"title":"To User Id"}},"type":"object","required":["venue_id","to_user_id"],"title":"VenueWinkIn"},"_AnnounceReq":{"properties":{"event_slug":{"type":"string","title":"Event Slug"},"owner_tg_id":{"type":"integer","title":"Owner Tg Id"}},"type":"object","required":["event_slug","owner_tg_id"],"title":"_AnnounceReq"},"_S46PartnerRegisterReq":{"properties":{"slug":{"type":"string","title":"Slug"},"display_name":{"type":"string","title":"Display Name"},"channel_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Channel Username"},"owner_tg_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Owner Tg Id"},"brand_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Color"},"brand_logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Logo Url"}},"type":"object","required":["slug","display_name"],"title":"_S46PartnerRegisterReq"},"_S46TrackReferralReq":{"properties":{"user_tg_id":{"type":"integer","title":"User Tg Id"},"partner_slug":{"type":"string","title":"Partner Slug"},"start_param":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Param"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}},"type":"object","required":["user_tg_id","partner_slug"],"title":"_S46TrackReferralReq"},"_S54AnnReq":{"properties":{"event_slug":{"type":"string","title":"Event Slug"},"owner_tg_id":{"type":"integer","title":"Owner Tg Id"}},"type":"object","required":["event_slug","owner_tg_id"],"title":"_S54AnnReq"},"_S54MeetReq":{"properties":{"user_tg_id":{"type":"integer","title":"User Tg Id"},"conditions":{"items":{},"type":"array","title":"Conditions","default":[]},"min_amount":{"type":"integer","title":"Min Amount","default":0},"note":{"type":"string","title":"Note"}},"type":"object","required":["user_tg_id"],"title":"_S54MeetReq"},"_S54NotifyReq":{"properties":{"event_slug":{"type":"string","title":"Event Slug"},"owner_tg_id":{"type":"integer","title":"Owner Tg Id"}},"type":"object","required":["event_slug","owner_tg_id"],"title":"_S54NotifyReq"},"_S54SubscribeReq":{"properties":{"user_tg_id":{"type":"integer","title":"User Tg Id"},"partner_slug":{"type":"string","title":"Partner Slug"},"tier":{"type":"string","title":"Tier","default":"free"}},"type":"object","required":["user_tg_id","partner_slug"],"title":"_S54SubscribeReq"},"_S54SwipeLeftReq":{"properties":{"target_user_id":{"type":"integer","title":"Target User Id"},"source_user_id":{"type":"integer","title":"Source User Id"},"reason_code":{"type":"string","title":"Reason Code"},"free_text":{"type":"string","title":"Free Text"}},"type":"object","required":["target_user_id","source_user_id","reason_code"],"title":"_S54SwipeLeftReq"},"_S54SwipeReq":{"properties":{"from_tg_id":{"type":"integer","title":"From Tg Id"},"to_user_id":{"type":"integer","title":"To User Id"},"action":{"type":"string","title":"Action"},"reason_code":{"type":"string","title":"Reason Code"}},"type":"object","required":["from_tg_id","to_user_id","action"],"title":"_S54SwipeReq"},"_S54TierSetReq":{"properties":{"owner_tg_id":{"type":"integer","title":"Owner Tg Id"},"premium_enabled":{"type":"boolean","title":"Premium Enabled","default":false},"premium_price_rub":{"type":"integer","title":"Premium Price Rub","default":0},"premium_description":{"type":"string","title":"Premium Description"}},"type":"object","required":["owner_tg_id"],"title":"_S54TierSetReq"},"_S54UnReq":{"properties":{"partner_slug":{"type":"string","title":"Partner Slug"},"user_tg_id":{"type":"integer","title":"User Tg Id"}},"type":"object","required":["partner_slug","user_tg_id"],"title":"_S54UnReq"},"_S54VisReq":{"properties":{"event_slug":{"type":"string","title":"Event Slug"},"owner_tg_id":{"type":"integer","title":"Owner Tg Id"},"visibility":{"type":"string","title":"Visibility"}},"type":"object","required":["event_slug","owner_tg_id","visibility"],"title":"_S54VisReq"},"_S55VenuesSuggestReq":{"properties":{"event_type":{"type":"string","title":"Event Type"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","default":"Ижевск"},"owner_tg_id":{"type":"integer","title":"Owner Tg Id"},"capacity_min":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Capacity Min","default":0},"limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit","default":5}},"type":"object","required":["event_type","owner_tg_id"],"title":"_S55VenuesSuggestReq"},"_S56DealReq":{"properties":{"proposer_tg_id":{"type":"integer","title":"Proposer Tg Id"},"offer_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Offer Id"},"need_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Need Id"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"agreed_price_rub":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Agreed Price Rub"}},"type":"object","required":["proposer_tg_id"],"title":"_S56DealReq"},"_S56NeedReq":{"properties":{"user_tg_id":{"type":"integer","title":"User Tg Id"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"deal_type":{"type":"string","title":"Deal Type"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","default":"Ижевск"},"budget_min":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Budget Min"},"budget_max":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Budget Max"},"deadline":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Deadline"}},"type":"object","required":["user_tg_id","title","deal_type"],"title":"_S56NeedReq"},"_S56OfferReq":{"properties":{"user_tg_id":{"type":"integer","title":"User Tg Id"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"deal_type":{"type":"string","title":"Deal Type"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","default":"Ижевск"},"price_rub":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Price Rub","default":0},"price_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Price Note"},"available_from":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Available From"},"available_to":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Available To"}},"type":"object","required":["user_tg_id","title","deal_type"],"title":"_S56OfferReq"},"_S57ReviewReq":{"properties":{"partner_slug":{"type":"string","title":"Partner Slug"},"reviewer_tg_id":{"type":"integer","title":"Reviewer Tg Id"},"rating":{"type":"integer","title":"Rating"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"},"event_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Event Id"}},"type":"object","required":["partner_slug","reviewer_tg_id","rating"],"title":"_S57ReviewReq"},"_S57ReviewV2Req":{"properties":{"partner_slug":{"type":"string","title":"Partner Slug"},"reviewer_tg_id":{"type":"integer","title":"Reviewer Tg Id"},"rating":{"type":"integer","title":"Rating"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"},"event_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Event Id"}},"type":"object","required":["partner_slug","reviewer_tg_id","rating"],"title":"_S57ReviewV2Req"},"_S58ReviewV4Req":{"properties":{"partner_slug":{"type":"string","title":"Partner Slug"},"reviewer_tg_id":{"type":"integer","title":"Reviewer Tg Id"},"rating":{"type":"integer","title":"Rating"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"},"event_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Event Id"}},"type":"object","required":["partner_slug","reviewer_tg_id","rating"],"title":"_S58ReviewV4Req"},"_S59MockConnect":{"properties":{"partner_slug":{"type":"string","title":"Partner Slug"},"network":{"type":"string","title":"Network"},"account_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Id"},"account_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Name"}},"type":"object","required":["partner_slug","network"],"title":"_S59MockConnect"},"_S59PostReq":{"properties":{"partner_slug":{"type":"string","title":"Partner Slug"},"body_text":{"type":"string","title":"Body Text"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"link_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Link Url"},"event_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Event Id"},"networks":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Networks"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","default":"dashboard"},"created_by_tg_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By Tg Id"}},"type":"object","required":["partner_slug","body_text"],"title":"_S59PostReq"},"_S60ExpireReq":{"properties":{"account_id":{"type":"integer","title":"Account Id"},"reason":{"type":"string","title":"Reason","default":""}},"type":"object","required":["account_id"],"title":"_S60ExpireReq"},"_S61_PlanCreate":{"properties":{"owner_type":{"type":"string","title":"Owner Type"},"owner_id":{"type":"string","title":"Owner Id"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description","default":""},"benefits":{"type":"string","title":"Benefits","default":""},"price_rub":{"type":"integer","title":"Price Rub"},"period_days":{"type":"integer","title":"Period Days","default":30},"payee_type":{"type":"string","title":"Payee Type","default":"owner"},"payee_shop_id":{"type":"string","title":"Payee Shop Id","default":""},"is_public":{"type":"boolean","title":"Is Public","default":true},"cover_url":{"type":"string","title":"Cover Url","default":""}},"type":"object","required":["owner_type","owner_id","title","price_rub"],"title":"_S61_PlanCreate"},"_S61_PlanUpdate":{"properties":{"plan_id":{"type":"integer","title":"Plan Id"},"owner_tg_id":{"type":"integer","title":"Owner Tg Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"benefits":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Benefits"},"price_rub":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Price Rub"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"is_public":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Public"}},"type":"object","required":["plan_id","owner_tg_id"],"title":"_S61_PlanUpdate"},"_S61_SubMock":{"properties":{"plan_id":{"type":"integer","title":"Plan Id"},"subscriber_tg_id":{"type":"integer","title":"Subscriber Tg Id"}},"type":"object","required":["plan_id","subscriber_tg_id"],"title":"_S61_SubMock"},"_S62_SvcCreate":{"properties":{"venue_id":{"type":"integer","title":"Venue Id"},"kind":{"type":"string","title":"Kind"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description","default":""},"price_rub":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Price Rub"},"price_unit":{"type":"string","title":"Price Unit","default":"fixed"},"available":{"type":"boolean","title":"Available","default":true},"requires_booking":{"type":"boolean","title":"Requires Booking","default":true},"contact_tg":{"type":"string","title":"Contact Tg","default":""},"cover_url":{"type":"string","title":"Cover Url","default":""},"sort_order":{"type":"integer","title":"Sort Order","default":0}},"type":"object","required":["venue_id","kind","title"],"title":"_S62_SvcCreate"},"_S63_BidCreate":{"properties":{"request_id":{"type":"integer","title":"Request Id"},"venue_id":{"type":"integer","title":"Venue Id"},"venue_owner_tg_id":{"type":"integer","title":"Venue Owner Tg Id","default":0},"price_rub":{"type":"integer","title":"Price Rub"},"min_avg_check_rub":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min Avg Check Rub"},"includes":{"type":"string","title":"Includes","default":""},"notes":{"type":"string","title":"Notes","default":""},"contact_tg":{"type":"string","title":"Contact Tg","default":""}},"type":"object","required":["request_id","venue_id","price_rub"],"title":"_S63_BidCreate"},"_S63_ReqCreate":{"properties":{"organizer_slug":{"type":"string","title":"Organizer Slug","default":""},"organizer_tg_id":{"type":"integer","title":"Organizer Tg Id","default":0},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description","default":""},"event_type":{"type":"string","title":"Event Type","default":""},"city":{"type":"string","title":"City","default":""},"event_date":{"type":"string","title":"Event Date","default":""},"event_time":{"type":"string","title":"Event Time","default":""},"guests_count":{"type":"integer","title":"Guests Count","default":8},"budget_max_rub":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Budget Max Rub"},"avg_check_promised_rub":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Avg Check Promised Rub"},"deadline_at":{"type":"string","title":"Deadline At","default":""}},"type":"object","required":["title"],"title":"_S63_ReqCreate"},"_S64_MarkPaid":{"properties":{"plan_id":{"type":"integer","title":"Plan Id"},"subscriber_tg_id":{"type":"integer","title":"Subscriber Tg Id"},"payer_note":{"type":"string","title":"Payer Note","default":""}},"type":"object","required":["plan_id","subscriber_tg_id"],"title":"_S64_MarkPaid"},"_S64_PayeeUpdate":{"properties":{"plan_id":{"type":"integer","title":"Plan Id"},"owner_tg_id":{"type":"integer","title":"Owner Tg Id"},"payee_method":{"type":"string","title":"Payee Method"},"payee_card_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payee Card Number"},"payee_card_holder":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payee Card Holder"},"payee_card_bank":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payee Card Bank"},"payee_sbp_phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payee Sbp Phone"},"payee_sbp_bank":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payee Sbp Bank"},"payee_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payee Notes"}},"type":"object","required":["plan_id","owner_tg_id","payee_method"],"title":"_S64_PayeeUpdate"},"_V827SuggestIn":{"properties":{"name":{"type":"string","title":"Name"},"category":{"type":"string","title":"Category"},"address":{"type":"string","title":"Address"},"city":{"type":"string","title":"City","default":"Ижевск"},"lat":{"type":"number","title":"Lat"},"lon":{"type":"number","title":"Lon"},"work_hours":{"type":"string","title":"Work Hours","default":"10:00-22:00"},"description":{"type":"string","title":"Description","default":""}},"type":"object","required":["name","category","address","lat","lon"],"title":"_V827SuggestIn"},"_V987JoinBotIn":{"properties":{"count":{"type":"integer","maximum":20.0,"minimum":1.0,"title":"Count","default":6}},"type":"object","title":"_V987JoinBotIn"},"_V987MafiaDayVote":{"properties":{"target_user_id":{"type":"integer","minimum":1.0,"title":"Target User Id"}},"type":"object","required":["target_user_id"],"title":"_V987MafiaDayVote"},"_V987MafiaJoinBot":{"properties":{"count":{"type":"integer","maximum":20.0,"minimum":1.0,"title":"Count","default":6}},"type":"object","title":"_V987MafiaJoinBot"},"_V987MafiaNightAction":{"properties":{"target_user_id":{"type":"integer","minimum":1.0,"title":"Target User Id"}},"type":"object","required":["target_user_id"],"title":"_V987MafiaNightAction"},"_V991RedeemIn":{"properties":{"code":{"type":"string","maxLength":64,"minLength":1,"title":"Code"}},"type":"object","required":["code"],"title":"_V991RedeemIn"},"_V993PushIn":{"properties":{"tg_id":{"type":"integer","title":"Tg Id"},"text":{"type":"string","title":"Text"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type","default":"info"}},"type":"object","required":["tg_id","text"],"title":"_V993PushIn"},"api__VenueGiftIn__1":{"properties":{"venue_id":{"type":"integer","minimum":1.0,"title":"Venue Id"},"to_user_id":{"type":"integer","minimum":1.0,"title":"To User Id"},"gift_key":{"type":"string","maxLength":64,"title":"Gift Key"},"is_anonymous":{"type":"boolean","title":"Is Anonymous","default":false}},"type":"object","required":["venue_id","to_user_id","gift_key"],"title":"VenueGiftIn"},"api__VenueGiftIn__2":{"properties":{"match_id":{"type":"integer","minimum":1.0,"title":"Match Id"},"venue_id":{"type":"integer","minimum":1.0,"title":"Venue Id"},"item_id":{"type":"integer","minimum":1.0,"title":"Item Id"},"message":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Message"}},"type":"object","required":["match_id","venue_id","item_id"],"title":"VenueGiftIn"}}}}