arbret/frontend/app/generated/api.ts
counterweight 7f547d667d
Fix e2e tests for pricing page
- Update selectors to use input indices instead of labels (labels not associated)
- Fix validation error status expectation (400 instead of 422)
- Update exchange.spec.ts to check new config fields (eur_min_buy, etc.)
2025-12-26 20:59:10 +01:00

2124 lines
61 KiB
TypeScript

/**
* 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<string, never>;
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<string, never>;
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"];
};
};
};
};
}