/** * 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/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/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/booking/slots": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get Available Slots * @description Get available booking slots for a specific date. */ get: operations["get_available_slots_api_booking_slots_get"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/booking": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Create Booking * @description Book an appointment slot. */ post: operations["create_booking_api_booking_post"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/appointments": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get My Appointments * @description Get the current user's appointments, sorted by date (upcoming first). */ get: operations["get_my_appointments_api_appointments_get"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/appointments/{appointment_id}/cancel": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Cancel My Appointment * @description Cancel one of the current user's appointments. */ post: operations["cancel_my_appointment_api_appointments__appointment_id__cancel_post"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/appointments": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get All Appointments * @description Get all appointments (admin only), sorted by date descending with pagination. */ get: operations["get_all_appointments_api_admin_appointments_get"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/appointments/{appointment_id}/cancel": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Admin Cancel Appointment * @description Cancel any appointment (admin only). */ post: operations["admin_cancel_appointment_api_admin_appointments__appointment_id__cancel_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 * - agreed_price: The price with admin premium applied * - is_stale: Whether the price is older than 5 minutes * - config: Trading configuration (min/max EUR, 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": { 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/{exchange_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__exchange_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/{exchange_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__exchange_id__complete_post"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/trades/{exchange_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__exchange_id__no_show_post"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/trades/{exchange_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__exchange_id__cancel_post"]; 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; /** 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; /** 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; }; /** * AppointmentResponse * @description Response model for an appointment. */ AppointmentResponse: { /** Id */ id: number; /** 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; /** Note */ note: string | null; /** Status */ status: string; /** * Created At * Format: date-time */ created_at: string; /** Cancelled At */ cancelled_at: string | null; }; /** * 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 for available slots on a given date. */ AvailableSlotsResponse: { /** * Date * Format: date */ date: string; /** Slots */ slots: components["schemas"]["BookableSlot"][]; }; /** * BookableSlot * @description A bookable 15-minute slot. */ BookableSlot: { /** * Start Time * Format: date-time */ start_time: string; /** * End Time * Format: date-time */ end_time: string; }; /** * BookingRequest * @description Request to book an appointment. */ BookingRequest: { /** * Slot Start * Format: date-time */ slot_start: string; /** Note */ note?: string | null; }; /** * 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"][]; }; /** * 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 */ eur_min: number; /** Eur Max */ eur_max: number; /** Eur Increment */ eur_increment: number; /** Premium Percentage */ premium_percentage: 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; /** Eur Amount */ eur_amount: number; }; /** * ExchangeResponse * @description Response model for an exchange trade. */ ExchangeResponse: { /** Id */ id: number; /** 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; /** 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[AppointmentResponse] */ PaginatedResponse_AppointmentResponse_: { /** Records */ records: components["schemas"]["AppointmentResponse"][]; /** Total */ total: number; /** Page */ page: number; /** Per Page */ per_page: number; /** Total Pages */ total_pages: number; }; /** 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" | "book_appointment" | "view_own_appointments" | "cancel_own_appointment" | "manage_availability" | "view_all_appointments" | "cancel_any_appointment"; /** * 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 with premium applied. */ PriceResponse: { /** Market Price */ market_price: number; /** Agreed Price */ agreed_price: number; /** Premium Percentage */ premium_percentage: number; /** * Timestamp * Format: date-time */ timestamp: string; /** Is Stale */ is_stale: boolean; }; /** * 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[]; }; /** 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_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"]; }; }; }; }; 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_available_slots_api_booking_slots_get: { parameters: { query: { /** @description Date to get slots for */ 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_booking_api_booking_post: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": components["schemas"]["BookingRequest"]; }; }; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["AppointmentResponse"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; get_my_appointments_api_appointments_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"]["AppointmentResponse"][]; }; }; }; }; cancel_my_appointment_api_appointments__appointment_id__cancel_post: { parameters: { query?: never; header?: never; path: { appointment_id: number; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["AppointmentResponse"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; get_all_appointments_api_admin_appointments_get: { parameters: { query?: { page?: number; per_page?: number; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["PaginatedResponse_AppointmentResponse_"]; }; }; /** @description Validation Error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HTTPValidationError"]; }; }; }; }; admin_cancel_appointment_api_admin_appointments__appointment_id__cancel_post: { parameters: { query?: never; header?: never; path: { appointment_id: number; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful Response */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["AppointmentResponse"]; }; }; /** @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"]; }; }; }; }; 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"][]; }; }; }; }; cancel_my_trade_api_trades__exchange_id__cancel_post: { parameters: { query?: never; header?: never; path: { exchange_id: number; }; 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__exchange_id__complete_post: { parameters: { query?: never; header?: never; path: { exchange_id: number; }; 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__exchange_id__no_show_post: { parameters: { query?: never; header?: never; path: { exchange_id: number; }; 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__exchange_id__cancel_post: { parameters: { query?: never; header?: never; path: { exchange_id: number; }; 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"]; }; }; }; }; }