/** * This file was auto-generated by openapi-typescript. * Do not make direct changes to the file. */ export interface paths { "/api/auth/register": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Register * @description Register a new user using an invite code. */ post: operations["register_api_auth_register_post"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/auth/login": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Login * @description Authenticate a user and return their info with an auth cookie. */ post: operations["login_api_auth_login_post"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/auth/logout": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Logout * @description Log out the current user by clearing their auth cookie. */ post: operations["logout_api_auth_logout_post"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/auth/me": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get Me * @description Get the current authenticated user's info. */ get: operations["get_me_api_auth_me_get"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/audit/price-history": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get Price History * @description Get the 20 most recent price history records. */ get: operations["get_price_history_api_audit_price_history_get"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/audit/price-history/fetch": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Fetch Price Now * @description Manually trigger a price fetch from Bitfinex. */ post: operations["fetch_price_now_api_audit_price_history_fetch_post"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/profile": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get Profile * @description Get the current user's profile (contact details and godfather). */ get: operations["get_profile_api_profile_get"]; /** * Update Profile * @description Update the current user's profile (contact details). */ put: operations["update_profile_api_profile_put"]; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/availability": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get Availability * @description Get availability slots for a date range. */ get: operations["get_availability_api_admin_availability_get"]; /** * Set Availability * @description Set availability for a specific date. Replaces any existing availability. */ put: operations["set_availability_api_admin_availability_put"]; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/availability/copy": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Copy Availability * @description Copy availability from one day to multiple target days. */ post: operations["copy_availability_api_admin_availability_copy_post"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/pricing": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get Pricing Config * @description Get current pricing configuration. */ get: operations["get_pricing_config_api_admin_pricing_get"]; /** * Update Pricing Config * @description Update pricing configuration. */ put: operations["update_pricing_config_api_admin_pricing_put"]; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/meta/constants": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get Constants * @description Get shared constants for frontend/backend synchronization. */ get: operations["get_constants_api_meta_constants_get"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/test/reset": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Reset Database * @description Truncate all tables and re-seed base data. * Only available when E2E_MODE environment variable is set. */ post: operations["reset_database_api_test_reset_post"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/invites/{identifier}/check": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Check Invite * @description Check if an invite is valid and can be used for signup. */ get: operations["check_invite_api_invites__identifier__check_get"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/invites": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get My Invites * @description Get all invites owned by the current user. */ get: operations["get_my_invites_api_invites_get"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/users": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * List Users For Admin * @description List all users for admin dropdowns (invite creation, etc.). */ get: operations["list_users_for_admin_api_admin_users_get"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/invites": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * List All Invites * @description List all invites with optional filtering and pagination. */ get: operations["list_all_invites_api_admin_invites_get"]; put?: never; /** * Create Invite * @description Create a new invite for a specified godfather user. */ post: operations["create_invite_api_admin_invites_post"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/invites/{invite_id}/revoke": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Revoke Invite * @description Revoke an invite. Only READY invites can be revoked. */ post: operations["revoke_invite_api_admin_invites__invite_id__revoke_post"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/exchange/price": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get Exchange Price * @description Get the current BTC/EUR price for trading. * * Returns the latest price from the database. If no price exists or the price * is stale, attempts to fetch a fresh price from Bitfinex. * * The response includes: * - market_price: The raw price from the exchange * - is_stale: Whether the price is older than 5 minutes * - config: Trading configuration (min/max EUR per direction, premiums, increment) */ get: operations["get_exchange_price_api_exchange_price_get"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/exchange/slots": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get Available Slots * @description Get available booking slots for a specific date. * * Returns all slots that: * - Fall within admin-defined availability windows * - Are not already booked by another user */ get: operations["get_available_slots_api_exchange_slots_get"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/exchange": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Create Exchange * @description Create a new exchange trade booking. * * Validates: * - Slot is on a valid date and time boundary * - Slot is within admin availability * - Slot is not already booked * - Price is not stale * - EUR amount is within configured limits */ post: operations["create_exchange_api_exchange_post"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/trades": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get My Trades * @description Get the current user's exchanges, sorted by date (newest first). */ get: operations["get_my_trades_api_trades_get"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/trades/{public_id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get My Trade * @description Get a specific trade by public ID. User can only access their own trades. */ get: operations["get_my_trade_api_trades__public_id__get"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/trades/{public_id}/cancel": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Cancel My Trade * @description Cancel one of the current user's exchanges. */ post: operations["cancel_my_trade_api_trades__public_id__cancel_post"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/trades/upcoming": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get Upcoming Trades * @description Get all upcoming booked trades, sorted by slot time ascending. */ get: operations["get_upcoming_trades_api_admin_trades_upcoming_get"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/trades/past": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get Past Trades * @description Get past trades with optional filters. * * Filters: * - status: Filter by exchange status * - start_date, end_date: Filter by slot_start date range * - user_search: Search by user email (partial match) */ get: operations["get_past_trades_api_admin_trades_past_get"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/trades/{public_id}/complete": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Complete Trade * @description Mark a trade as completed. Only possible after slot time has passed. */ post: operations["complete_trade_api_admin_trades__public_id__complete_post"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/trades/{public_id}/no-show": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Mark No Show * @description Mark a trade as no-show. Only possible after slot time has passed. */ post: operations["mark_no_show_api_admin_trades__public_id__no_show_post"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/trades/{public_id}/cancel": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Admin Cancel Trade * @description Cancel any trade (admin only). */ post: operations["admin_cancel_trade_api_admin_trades__public_id__cancel_post"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/users/search": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Search Users * @description Search users by email for autocomplete. * * Returns users whose email contains the search query (case-insensitive). * Limited to 10 results for autocomplete purposes. */ get: operations["search_users_api_admin_users_search_get"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; } export type webhooks = Record; export interface components { schemas: { /** * AdminExchangeResponse * @description Response model for admin exchange view (includes user contact). */ AdminExchangeResponse: { /** Id */ id: number; /** Public Id */ public_id: string; /** User Id */ user_id: number; /** User Email */ user_email: string; user_contact: components["schemas"]["ExchangeUserContact"]; /** * Slot Start * Format: date-time */ slot_start: string; /** * Slot End * Format: date-time */ slot_end: string; /** Direction */ direction: string; /** Bitcoin Transfer Method */ bitcoin_transfer_method: string; /** Eur Amount */ eur_amount: number; /** Sats Amount */ sats_amount: number; /** Market Price Eur */ market_price_eur: number; /** Agreed Price Eur */ agreed_price_eur: number; /** Premium Percentage */ premium_percentage: number; /** Status */ status: string; /** * Created At * Format: date-time */ created_at: string; /** Cancelled At */ cancelled_at: string | null; /** Completed At */ completed_at: string | null; }; /** * AdminUserResponse * @description Minimal user info for admin dropdowns. */ AdminUserResponse: { /** Id */ id: number; /** Email */ email: string; }; /** * AvailabilityDay * @description Availability for a single day. */ AvailabilityDay: { /** * Date * Format: date */ date: string; /** Slots */ slots: components["schemas"]["TimeSlot"][]; }; /** * AvailabilityResponse * @description Response model for availability query. */ AvailabilityResponse: { /** Days */ days: components["schemas"]["AvailabilityDay"][]; }; /** * AvailableSlotsResponse * @description Response containing available slots for a date. */ AvailableSlotsResponse: { /** * Date * Format: date */ date: string; /** Slots */ slots: components["schemas"]["BookableSlot"][]; }; /** * BitcoinTransferMethod * @description Bitcoin transfer method for exchange trades. * @enum {string} */ BitcoinTransferMethod: "onchain" | "lightning"; /** * BookableSlot * @description A single bookable time slot. */ BookableSlot: { /** * Start Time * Format: date-time */ start_time: string; /** * End Time * Format: date-time */ end_time: string; }; /** * ConstantsResponse * @description Response model for shared constants. * * Note: Using actual enum types ensures OpenAPI schema includes enum values, * allowing frontend type generation to produce matching TypeScript enums. */ ConstantsResponse: { /** Permissions */ permissions: components["schemas"]["Permission"][]; /** Roles */ roles: string[]; /** Invite Statuses */ invite_statuses: components["schemas"]["InviteStatus"][]; /** Bitcoin Transfer Methods */ bitcoin_transfer_methods: components["schemas"]["BitcoinTransferMethod"][]; }; /** * CopyAvailabilityRequest * @description Request to copy availability from one day to others. */ CopyAvailabilityRequest: { /** * Source Date * Format: date */ source_date: string; /** Target Dates */ target_dates: string[]; }; /** * ExchangeConfigResponse * @description Exchange configuration for the frontend. */ ExchangeConfigResponse: { /** Eur Min Buy */ eur_min_buy: number; /** Eur Max Buy */ eur_max_buy: number; /** Eur Min Sell */ eur_min_sell: number; /** Eur Max Sell */ eur_max_sell: number; /** Eur Increment */ eur_increment: number; /** Premium Buy */ premium_buy: number; /** Premium Sell */ premium_sell: number; /** Small Trade Threshold Eur */ small_trade_threshold_eur: number; /** Small Trade Extra Premium */ small_trade_extra_premium: number; }; /** * ExchangePriceResponse * @description Combined price and configuration response. */ ExchangePriceResponse: { price: components["schemas"]["PriceResponse"] | null; config: components["schemas"]["ExchangeConfigResponse"]; /** Error */ error?: string | null; }; /** * ExchangeRequest * @description Request to create an exchange trade. */ ExchangeRequest: { /** * Slot Start * Format: date-time */ slot_start: string; /** Direction */ direction: string; /** Bitcoin Transfer Method */ bitcoin_transfer_method: string; /** Eur Amount */ eur_amount: number; }; /** * ExchangeResponse * @description Response model for an exchange trade. */ ExchangeResponse: { /** Id */ id: number; /** Public Id */ public_id: string; /** User Id */ user_id: number; /** User Email */ user_email: string; /** * Slot Start * Format: date-time */ slot_start: string; /** * Slot End * Format: date-time */ slot_end: string; /** Direction */ direction: string; /** Bitcoin Transfer Method */ bitcoin_transfer_method: string; /** Eur Amount */ eur_amount: number; /** Sats Amount */ sats_amount: number; /** Market Price Eur */ market_price_eur: number; /** Agreed Price Eur */ agreed_price_eur: number; /** Premium Percentage */ premium_percentage: number; /** Status */ status: string; /** * Created At * Format: date-time */ created_at: string; /** Cancelled At */ cancelled_at: string | null; /** Completed At */ completed_at: string | null; }; /** * ExchangeUserContact * @description User contact info for admin view. */ ExchangeUserContact: { /** Email */ email: string; /** Contact Email */ contact_email: string | null; /** Telegram */ telegram: string | null; /** Signal */ signal: string | null; /** Nostr Npub */ nostr_npub: string | null; }; /** HTTPValidationError */ HTTPValidationError: { /** Detail */ detail?: components["schemas"]["ValidationError"][]; }; /** * InviteCheckResponse * @description Response for invite check endpoint. */ InviteCheckResponse: { /** Valid */ valid: boolean; /** Status */ status?: string | null; /** Error */ error?: string | null; }; /** * InviteCreate * @description Request model for creating an invite. */ InviteCreate: { /** Godfather Id */ godfather_id: number; }; /** * InviteResponse * @description Response model for invite data (admin view). */ InviteResponse: { /** Id */ id: number; /** Identifier */ identifier: string; /** Godfather Id */ godfather_id: number; /** Godfather Email */ godfather_email: string; /** Status */ status: string; /** Used By Id */ used_by_id: number | null; /** Used By Email */ used_by_email: string | null; /** * Created At * Format: date-time */ created_at: string; /** Spent At */ spent_at: string | null; /** Revoked At */ revoked_at: string | null; }; /** * InviteStatus * @description Status of an invite. * @enum {string} */ InviteStatus: "ready" | "spent" | "revoked"; /** PaginatedResponse[InviteResponse] */ PaginatedResponse_InviteResponse_: { /** Records */ records: components["schemas"]["InviteResponse"][]; /** Total */ total: number; /** Page */ page: number; /** Per Page */ per_page: number; /** Total Pages */ total_pages: number; }; /** * Permission * @description All available permissions in the system. * @enum {string} */ Permission: "view_audit" | "fetch_price" | "manage_own_profile" | "manage_invites" | "view_own_invites" | "create_exchange" | "view_own_exchanges" | "cancel_own_exchange" | "manage_availability" | "manage_pricing" | "view_all_exchanges" | "cancel_any_exchange" | "complete_exchange"; /** * PriceHistoryResponse * @description Response model for a price history record. */ PriceHistoryResponse: { /** Id */ id: number; /** Source */ source: string; /** Pair */ pair: string; /** Price */ price: number; /** * Timestamp * Format: date-time */ timestamp: string; /** * Created At * Format: date-time */ created_at: string; }; /** * PriceResponse * @description Current BTC/EUR price for trading. * * Note: The actual agreed price depends on trade direction (buy/sell) * and is calculated by the frontend using market_price and premium values. * Premium calculation: base premium for direction + extra premium if * trade <= threshold. */ PriceResponse: { /** Market Price */ market_price: number; /** * Timestamp * Format: date-time */ timestamp: string; /** Is Stale */ is_stale: boolean; }; /** * PricingConfigResponse * @description Response model for pricing configuration. */ PricingConfigResponse: { /** Premium Buy */ premium_buy: number; /** Premium Sell */ premium_sell: number; /** Small Trade Threshold Eur */ small_trade_threshold_eur: number; /** Small Trade Extra Premium */ small_trade_extra_premium: number; /** Eur Min Buy */ eur_min_buy: number; /** Eur Max Buy */ eur_max_buy: number; /** Eur Min Sell */ eur_min_sell: number; /** Eur Max Sell */ eur_max_sell: number; }; /** * PricingConfigUpdate * @description Request model for updating pricing configuration. */ PricingConfigUpdate: { /** Premium Buy */ premium_buy: number; /** Premium Sell */ premium_sell: number; /** Small Trade Threshold Eur */ small_trade_threshold_eur: number; /** Small Trade Extra Premium */ small_trade_extra_premium: number; /** Eur Min Buy */ eur_min_buy: number; /** Eur Max Buy */ eur_max_buy: number; /** Eur Min Sell */ eur_min_sell: number; /** Eur Max Sell */ eur_max_sell: number; }; /** * ProfileResponse * @description Response model for profile data. */ ProfileResponse: { /** Contact Email */ contact_email: string | null; /** Telegram */ telegram: string | null; /** Signal */ signal: string | null; /** Nostr Npub */ nostr_npub: string | null; /** Godfather Email */ godfather_email?: string | null; }; /** * ProfileUpdate * @description Request model for updating profile. */ ProfileUpdate: { /** Contact Email */ contact_email?: string | null; /** Telegram */ telegram?: string | null; /** Signal */ signal?: string | null; /** Nostr Npub */ nostr_npub?: string | null; }; /** * RegisterWithInvite * @description Request model for registration with invite. */ RegisterWithInvite: { /** * Email * Format: email */ email: string; /** Password */ password: string; /** Invite Identifier */ invite_identifier: string; }; /** * SetAvailabilityRequest * @description Request to set availability for a specific date. */ SetAvailabilityRequest: { /** * Date * Format: date */ date: string; /** Slots */ slots: components["schemas"]["TimeSlot"][]; }; /** * TimeSlot * @description A single time slot (start and end time). */ TimeSlot: { /** * Start Time * Format: time */ start_time: string; /** * End Time * Format: time */ end_time: string; }; /** * UserCredentials * @description Base model for user email/password. */ UserCredentials: { /** * Email * Format: email */ email: string; /** Password */ password: string; }; /** * UserInviteResponse * @description Response model for a user's invite (simpler than admin view). */ UserInviteResponse: { /** Id */ id: number; /** Identifier */ identifier: string; /** Status */ status: string; /** Used By Email */ used_by_email: string | null; /** * Created At * Format: date-time */ created_at: string; /** Spent At */ spent_at: string | null; }; /** * UserResponse * @description Response model for authenticated user info. */ UserResponse: { /** Id */ id: number; /** Email */ email: string; /** Roles */ roles: string[]; /** Permissions */ permissions: string[]; }; /** * UserSearchResult * @description Result item for user search. */ UserSearchResult: { /** Id */ id: number; /** Email */ email: string; }; /** ValidationError */ ValidationError: { /** Location */ loc: (string | number)[]; /** Message */ msg: string; /** Error Type */ type: string; }; }; responses: never; parameters: never; requestBodies: never; headers: never; pathItems: never; } export type $defs = Record; export interface operations { register_api_auth_register_post: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": components["schemas"]["RegisterWithInvite"]; }; }; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["UserResponse"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; login_api_auth_login_post: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": components["schemas"]["UserCredentials"]; }; }; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["UserResponse"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; logout_api_auth_logout_post: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": { [key: string]: boolean; }; }; }; }; }; get_me_api_auth_me_get: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["UserResponse"]; }; }; }; }; get_price_history_api_audit_price_history_get: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["PriceHistoryResponse"][]; }; }; }; }; fetch_price_now_api_audit_price_history_fetch_post: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["PriceHistoryResponse"]; }; }; }; }; get_profile_api_profile_get: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ProfileResponse"]; }; }; }; }; update_profile_api_profile_put: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": components["schemas"]["ProfileUpdate"]; }; }; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ProfileResponse"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; get_availability_api_admin_availability_get: { parameters: { query: { /** @description Start date (inclusive) */ from: string; /** @description End date (inclusive) */ to: string; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["AvailabilityResponse"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; set_availability_api_admin_availability_put: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": components["schemas"]["SetAvailabilityRequest"]; }; }; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["AvailabilityDay"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; copy_availability_api_admin_availability_copy_post: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": components["schemas"]["CopyAvailabilityRequest"]; }; }; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["AvailabilityResponse"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; get_pricing_config_api_admin_pricing_get: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["PricingConfigResponse"]; }; }; }; }; update_pricing_config_api_admin_pricing_put: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": components["schemas"]["PricingConfigUpdate"]; }; }; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["PricingConfigResponse"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; get_constants_api_meta_constants_get: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ConstantsResponse"]; }; }; }; }; reset_database_api_test_reset_post: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": unknown; }; }; }; }; check_invite_api_invites__identifier__check_get: { parameters: { query?: never; header?: never; path: { identifier: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["InviteCheckResponse"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; get_my_invites_api_invites_get: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["UserInviteResponse"][]; }; }; }; }; list_users_for_admin_api_admin_users_get: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["AdminUserResponse"][]; }; }; }; }; list_all_invites_api_admin_invites_get: { parameters: { query?: { page?: number; per_page?: number; /** @description Filter by status: ready, spent, revoked */ status?: string | null; /** @description Filter by godfather user ID */ godfather_id?: number | null; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["PaginatedResponse_InviteResponse_"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; create_invite_api_admin_invites_post: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": components["schemas"]["InviteCreate"]; }; }; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["InviteResponse"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; revoke_invite_api_admin_invites__invite_id__revoke_post: { parameters: { query?: never; header?: never; path: { invite_id: number; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["InviteResponse"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; get_exchange_price_api_exchange_price_get: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ExchangePriceResponse"]; }; }; }; }; get_available_slots_api_exchange_slots_get: { parameters: { query: { date: string; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["AvailableSlotsResponse"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; create_exchange_api_exchange_post: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": components["schemas"]["ExchangeRequest"]; }; }; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ExchangeResponse"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; get_my_trades_api_trades_get: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ExchangeResponse"][]; }; }; }; }; get_my_trade_api_trades__public_id__get: { parameters: { query?: never; header?: never; path: { public_id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ExchangeResponse"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; cancel_my_trade_api_trades__public_id__cancel_post: { parameters: { query?: never; header?: never; path: { public_id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ExchangeResponse"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; get_upcoming_trades_api_admin_trades_upcoming_get: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["AdminExchangeResponse"][]; }; }; }; }; get_past_trades_api_admin_trades_past_get: { parameters: { query?: { status?: string | null; start_date?: string | null; end_date?: string | null; user_search?: string | null; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["AdminExchangeResponse"][]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; complete_trade_api_admin_trades__public_id__complete_post: { parameters: { query?: never; header?: never; path: { public_id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["AdminExchangeResponse"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; mark_no_show_api_admin_trades__public_id__no_show_post: { parameters: { query?: never; header?: never; path: { public_id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["AdminExchangeResponse"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; admin_cancel_trade_api_admin_trades__public_id__cancel_post: { parameters: { query?: never; header?: never; path: { public_id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["AdminExchangeResponse"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; search_users_api_admin_users_search_get: { parameters: { query: { /** @description Search query for user email */ q: string; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["UserSearchResult"][]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; }