Models

All data models are Pydantic v2 BaseModel subclasses with full type annotations.

Enums

class etoropy.models.enums.CandleInterval(value)[source]

Bases: StrEnum

ONE_MINUTE = 'OneMinute'
FIVE_MINUTES = 'FiveMinutes'
TEN_MINUTES = 'TenMinutes'
FIFTEEN_MINUTES = 'FifteenMinutes'
THIRTY_MINUTES = 'ThirtyMinutes'
ONE_HOUR = 'OneHour'
FOUR_HOURS = 'FourHours'
ONE_DAY = 'OneDay'
ONE_WEEK = 'OneWeek'
class etoropy.models.enums.CandleDirection(value)[source]

Bases: StrEnum

ASC = 'asc'
DESC = 'desc'
class etoropy.models.enums.OrderStatusId(value)[source]

Bases: IntEnum

PENDING = 1
FILLING = 2
EXECUTED = 3
FAILED = 4
CANCELLED = 5
class etoropy.models.enums.OrderType(value)[source]

Bases: IntEnum

MARKET = 1
LIMIT = 2
STOP = 3
class etoropy.models.enums.SettlementType(value)[source]

Bases: IntEnum

CFD = 0
REAL_ASSET = 1
SWAP = 2
CRYPTO = 3
FUTURE = 4
class etoropy.models.enums.MirrorStatus(value)[source]

Bases: IntEnum

ACTIVE = 0
PAUSED = 1
PENDING_CLOSURE = 2
IN_ALIGNMENT = 3

Common

class etoropy.models.common.PaginatedRequest(**data)[source]

Bases: BaseModel

Parameters:
  • data (Any)

  • page (int | None)

  • page_size (int | None)

page: int | None
page_size: int | None
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.common.PaginatedResponse(**data)[source]

Bases: BaseModel

Parameters:
page: int
page_size: int
total_items: int
model_config: ClassVar[ConfigDict] = {'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.common.TokenResponse(**data)[source]

Bases: BaseModel

Parameters:
token: str
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

Market Data

class etoropy.models.market_data.InstrumentSearchParams(**data)[source]

Bases: BaseModel

Parameters:
  • data (Any)

  • fields (str | None)

  • search_text (str | None)

  • internal_symbol_full (str | None)

  • page_size (int | None)

  • page_number (int | None)

  • sort (str | None)

fields: str | None
search_text: str | None
internal_symbol_full: str | None
page_size: int | None
page_number: int | None
sort: str | None
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.market_data.InstrumentSearchItem(**data)[source]

Bases: BaseModel

A single item from the /market-data/search endpoint.

The search API reliably returns instrument_id and internal_symbol_full. Most other fields (displayname, exchange_id, symbol, etc.) are not populated by the API and will keep their default values. Use InstrumentDisplayData (via get_instruments()) for full display metadata.

Parameters:
  • data (Any)

  • instrumentId (int)

  • symbol (str)

  • displayname (str)

  • instrumentTypeID (int)

  • exchangeID (int)

  • isOpen (bool)

  • isCurrentlyTradable (bool)

  • isBuyEnabled (bool)

  • isDelisted (bool)

  • isExchangeOpen (bool)

  • currentRate (float)

  • dailyPriceChange (float)

  • absDailyPriceChange (float)

  • weeklyPriceChange (float)

  • monthlyPriceChange (float)

  • threeMonthPriceChange (float)

  • sixMonthPriceChange (float)

  • oneYearPriceChange (float)

  • internalAssetClassId (int)

  • internalAssetClassName (str)

  • logo35x35 (str)

  • logo50x50 (str)

  • internalSymbolFull (str)

  • logo150x150 (str)

  • extra_data (Any)

model_config: ClassVar[ConfigDict] = {'extra': 'allow'}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

instrument_id: int
symbol: str
displayname: str
instrument_type_id: int
exchange_id: int
is_open: bool
is_currently_tradable: bool
is_buy_enabled: bool
is_delisted: bool
is_exchange_open: bool
current_rate: float
daily_price_change: float
abs_daily_price_change: float
weekly_price_change: float
monthly_price_change: float
three_month_price_change: float
six_month_price_change: float
one_year_price_change: float
internal_asset_class_id: int
internal_asset_class_name: str
logo_35x35: str
logo_50x50: str
internal_symbol_full: str
logo_150x150: str
class etoropy.models.market_data.InstrumentSearchResponse(**data)[source]

Bases: BaseModel

Parameters:
items: list[InstrumentSearchItem]
page: int
page_size: int
total_items: int
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.market_data.InstrumentImage(**data)[source]

Bases: BaseModel

Parameters:
  • data (Any)

  • instrumentID (int)

  • width (int | None)

  • height (int | None)

  • uri (str | None)

  • backgroundColor (str | None)

  • textColor (str | None)

instrument_id: int
width: int | None
height: int | None
uri: str | None
background_color: str | None
text_color: str | None
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.market_data.InstrumentDisplayData(**data)[source]

Bases: BaseModel

Parameters:
  • data (Any)

  • instrumentID (int)

  • instrumentDisplayName (str)

  • instrumentTypeID (int)

  • exchangeID (int)

  • symbolFull (str)

  • instrumentTypeSubCategoryID (int | None)

  • priceSource (str)

  • hasExpirationDate (bool)

  • isInternalInstrument (bool)

  • images (list[InstrumentImage])

  • extra_data (Any)

model_config: ClassVar[ConfigDict] = {'extra': 'allow'}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

instrument_id: int
instrument_display_name: str
instrument_type_id: int
exchange_id: int
symbol_full: str
instrument_type_sub_category_id: int | None
price_source: str
has_expiration_date: bool
is_internal_instrument: bool
images: list[InstrumentImage]
class etoropy.models.market_data.InstrumentsResponse(**data)[source]

Bases: BaseModel

Parameters:
instrument_display_datas: list[InstrumentDisplayData]
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.market_data.GetInstrumentsParams(**data)[source]

Bases: BaseModel

Parameters:
  • data (Any)

  • instrument_ids (list[int] | None)

  • exchange_ids (list[int] | None)

  • stocks_industry_ids (list[int] | None)

  • instrument_type_ids (list[int] | None)

instrument_ids: list[int] | None
exchange_ids: list[int] | None
stocks_industry_ids: list[int] | None
instrument_type_ids: list[int] | None
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.market_data.InstrumentRate(**data)[source]

Bases: BaseModel

Parameters:
model_config: ClassVar[ConfigDict] = {'extra': 'allow'}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

instrument_id: int
ask: float
bid: float
last_execution: float
conversion_rate_ask: float
conversion_rate_bid: float
date: str
unit_margin: float
unit_margin_ask: float
unit_margin_bid: float
price_rate_id: int
bid_discounted: float
ask_discounted: float
unit_margin_bid_discounted: float
unit_margin_ask_discounted: float
class etoropy.models.market_data.LiveRatesResponse(**data)[source]

Bases: BaseModel

Parameters:
rates: list[InstrumentRate]
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.market_data.Candle(**data)[source]

Bases: BaseModel

Parameters:
instrument_id: int
from_date: str
open: float
high: float
low: float
close: float
volume: float | None
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.market_data.CandleGroup(**data)[source]

Bases: BaseModel

Parameters:
instrument_id: int
candles: list[Candle]
range_open: float
range_close: float
range_high: float
range_low: float
volume: float | None
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.market_data.CandlesResponse(**data)[source]

Bases: BaseModel

Parameters:
interval: str
candles: list[CandleGroup]
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.market_data.Exchange(**data)[source]

Bases: BaseModel

Parameters:
  • data (Any)

  • exchangeID (int)

  • exchangeDescription (str)

  • extra_data (Any)

model_config: ClassVar[ConfigDict] = {'extra': 'allow'}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

exchange_id: int
exchange_description: str
class etoropy.models.market_data.ExchangesResponse(**data)[source]

Bases: BaseModel

Parameters:
exchange_info: list[Exchange]
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.market_data.InstrumentType(**data)[source]

Bases: BaseModel

Parameters:
  • data (Any)

  • instrumentTypeID (int)

  • instrumentTypeDescription (str)

  • extra_data (Any)

model_config: ClassVar[ConfigDict] = {'extra': 'allow'}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

instrument_type_id: int
instrument_type_description: str
class etoropy.models.market_data.InstrumentTypesResponse(**data)[source]

Bases: BaseModel

Parameters:
instrument_types: list[InstrumentType]
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.market_data.StocksIndustry(**data)[source]

Bases: BaseModel

Parameters:
  • data (Any)

  • industryID (int)

  • industryName (str)

  • extra_data (Any)

model_config: ClassVar[ConfigDict] = {'extra': 'allow'}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

stocks_industry_id: int
name: str
class etoropy.models.market_data.StocksIndustriesResponse(**data)[source]

Bases: BaseModel

Parameters:
stocks_industries: list[StocksIndustry]
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.market_data.ClosingPriceInterval(**data)[source]

Bases: BaseModel

Parameters:
price: float
date: str
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.market_data.ClosingPriceIntervals(**data)[source]

Bases: BaseModel

Parameters:
daily: ClosingPriceInterval
weekly: ClosingPriceInterval
monthly: ClosingPriceInterval
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.market_data.ClosingPrice(**data)[source]

Bases: BaseModel

Parameters:
model_config: ClassVar[ConfigDict] = {'extra': 'allow'}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

instrument_id: int
official_closing_price: float
is_market_open: bool
closing_prices: ClosingPriceIntervals
class etoropy.models.market_data.ClosingPricesResponse(**data)[source]

Bases: BaseModel

Parameters:
closing_prices: list[ClosingPrice]
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

Trading

class etoropy.models.trading.MarketOrderByAmountRequest(**data)[source]

Bases: BaseModel

Parameters:
  • data (Any)

  • InstrumentID (int)

  • IsBuy (bool)

  • Leverage (int)

  • Amount (float)

  • StopLossRate (float | None)

  • TakeProfitRate (float | None)

  • IsTslEnabled (bool | None)

  • IsNoStopLoss (bool | None)

  • IsNoTakeProfit (bool | None)

instrument_id: int
is_buy: bool
leverage: int
amount: float
stop_loss_rate: float | None
take_profit_rate: float | None
is_tsl_enabled: bool | None
is_no_stop_loss: bool | None
is_no_take_profit: bool | None
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.trading.MarketOrderByUnitsRequest(**data)[source]

Bases: BaseModel

Parameters:
  • data (Any)

  • InstrumentID (int)

  • IsBuy (bool)

  • Leverage (int)

  • AmountInUnits (float)

  • StopLossRate (float | None)

  • TakeProfitRate (float | None)

  • IsTslEnabled (bool | None)

  • IsNoStopLoss (bool | None)

  • IsNoTakeProfit (bool | None)

instrument_id: int
is_buy: bool
leverage: int
amount_in_units: float
stop_loss_rate: float | None
take_profit_rate: float | None
is_tsl_enabled: bool | None
is_no_stop_loss: bool | None
is_no_take_profit: bool | None
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.trading.LimitOrderRequest(**data)[source]

Bases: BaseModel

Parameters:
  • data (Any)

  • InstrumentID (int)

  • IsBuy (bool)

  • Leverage (int)

  • Amount (float | None)

  • AmountInUnits (float | None)

  • Rate (float)

  • StopLossRate (float)

  • TakeProfitRate (float)

  • IsTslEnabled (bool | None)

  • IsNoStopLoss (bool | None)

  • IsNoTakeProfit (bool | None)

instrument_id: int
is_buy: bool
leverage: int
amount: float | None
amount_in_units: float | None
rate: float
stop_loss_rate: float
take_profit_rate: float
is_tsl_enabled: bool | None
is_no_stop_loss: bool | None
is_no_take_profit: bool | None
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.trading.ClosePositionRequest(**data)[source]

Bases: BaseModel

Parameters:
  • data (Any)

  • InstrumentId (int)

  • UnitsToDeduct (float | None)

instrument_id: int
units_to_deduct: float | None
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.trading.OrderForOpen(**data)[source]

Bases: BaseModel

Parameters:
instrument_id: int
amount: float
is_buy: bool
leverage: int
stop_loss_rate: float
take_profit_rate: float
is_tsl_enabled: bool
mirror_id: int
total_external_costs: float
order_id: int
order_type: int
status_id: int
cid: int
open_date_time: str
last_update: str
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.trading.OrderForOpenResponse(**data)[source]

Bases: BaseModel

Parameters:
order_for_open: OrderForOpen
token: str
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.trading.OrderForCloseResponse(**data)[source]

Bases: BaseModel

Parameters:
token: str
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.trading.OrderPositionInfo(**data)[source]

Bases: BaseModel

Parameters:
model_config: ClassVar[ConfigDict] = {'extra': 'allow'}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

position_id: int
order_type: int
occurred: str
rate: float
units: float
conversion_rate: float
amount: float
is_open: bool
class etoropy.models.trading.OrderForOpenInfoResponse(**data)[source]

Bases: BaseModel

Parameters:
model_config: ClassVar[ConfigDict] = {'extra': 'allow'}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

token: str
order_id: int
cid: int
reference_id: str
status_id: int
order_type: int
open_action_type: int
error_code: int | None
error_message: str | None
instrument_id: int
amount: float
units: float
request_occurred: str
positions: list[OrderPositionInfo]
class etoropy.models.trading.Position(**data)[source]

Bases: BaseModel

Parameters:
  • data (Any)

  • positionID (int)

  • CID (int)

  • openDateTime (str)

  • openRate (float)

  • instrumentID (int)

  • isBuy (bool)

  • leverage (int)

  • takeProfitRate (float)

  • stopLossRate (float)

  • mirrorID (int)

  • parentPositionID (int)

  • amount (float)

  • orderID (int)

  • orderType (int)

  • units (float)

  • totalFees (float)

  • initialAmountInDollars (float)

  • isTslEnabled (bool)

  • stopLossVersion (int)

  • isSettled (bool)

  • redeemStatusID (int)

  • initialUnits (float)

  • isPartiallyAltered (bool)

  • unitsBaseValueDollars (float)

  • isDiscounted (bool)

  • openPositionActionType (int)

  • settlementTypeID (int)

  • isDetached (bool)

  • openConversionRate (float)

  • pnlVersion (int)

  • totalExternalFees (float)

  • totalExternalTaxes (float)

  • isNoTakeProfit (bool)

  • isNoStopLoss (bool)

  • lotCount (float)

  • extra_data (Any)

model_config: ClassVar[ConfigDict] = {'extra': 'allow'}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

position_id: int
cid: int
open_date_time: str
open_rate: float
instrument_id: int
is_buy: bool
leverage: int
take_profit_rate: float
stop_loss_rate: float
mirror_id: int
parent_position_id: int
amount: float
order_id: int
order_type: int
units: float
total_fees: float
initial_amount_in_dollars: float
is_tsl_enabled: bool
stop_loss_version: int
is_settled: bool
redeem_status_id: int
initial_units: float
is_partially_altered: bool
units_base_value_dollars: float
is_discounted: bool
open_position_action_type: int
settlement_type_id: int
is_detached: bool
open_conversion_rate: float
pnl_version: int
total_external_fees: float
total_external_taxes: float
is_no_take_profit: bool
is_no_stop_loss: bool
lot_count: float
class etoropy.models.trading.PendingOrder(**data)[source]

Bases: BaseModel

Parameters:
model_config: ClassVar[ConfigDict] = {'extra': 'allow'}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

order_id: int
cid: int
open_date_time: str
instrument_id: int
is_buy: bool
take_profit_rate: float
stop_loss_rate: float
rate: float
amount: float
leverage: int
units: float
is_tsl_enabled: bool
execution_type: int
class etoropy.models.trading.Mirror(**data)[source]

Bases: BaseModel

Parameters:
model_config: ClassVar[ConfigDict] = {'extra': 'allow'}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

mirror_id: int
cid: int
parent_cid: int
stop_loss_percentage: float
is_paused: bool
copy_existing_positions: bool
available_amount: float
stop_loss_amount: float
initial_investment: float
deposit_summary: float
withdrawal_summary: float
positions: list[Position]
parent_username: str
closed_positions_net_profit: float
started_copy_date: str
pending_for_closure: bool
mirror_status_id: int
orders_for_open: list[PendingOrder]
orders_for_close: list[Any]
orders_for_close_multiple: list[Any]
class etoropy.models.trading.ClientPortfolio(**data)[source]

Bases: BaseModel

Parameters:
positions: list[Position]
credit: float
mirrors: list[Mirror]
orders: list[PendingOrder]
orders_for_open: list[PendingOrder]
orders_for_close: list[Any]
orders_for_close_multiple: list[Any]
bonus_credit: float
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.trading.PortfolioResponse(**data)[source]

Bases: BaseModel

Parameters:
client_portfolio: ClientPortfolio
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.trading.PnlResponse(**data)[source]

Bases: BaseModel

Parameters:
client_portfolio: ClientPortfolio
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.trading.TradeHistoryParams(**data)[source]

Bases: BaseModel

Parameters:
  • data (Any)

  • min_date (str)

  • page (int | None)

  • page_size (int | None)

min_date: str
page: int | None
page_size: int | None
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.trading.TradeHistoryEntry(**data)[source]

Bases: BaseModel

Parameters:
net_profit: float
close_rate: float
close_timestamp: str
position_id: int
instrument_id: int
is_buy: bool
leverage: int
open_rate: float
open_timestamp: str
stop_loss_rate: float
take_profit_rate: float
trailing_stop_loss: bool
order_id: int
social_trade_id: int
parent_position_id: int
investment: float
initial_investment: float
fees: float
units: float
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

Feeds & Social

class etoropy.models.feeds.CreatePostRequest(**data)[source]

Bases: BaseModel

Parameters:
  • data (Any)

  • content (str)

  • instrumentId (int | None)

content: str
instrument_id: int | None
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.feeds.FeedPost(**data)[source]

Bases: BaseModel

Parameters:
  • data (Any)

  • postId (str)

  • userId (int)

  • username (str)

  • content (str)

  • createdAt (str)

  • instrumentId (int | None)

  • likesCount (int)

  • commentsCount (int)

  • extra_data (Any)

model_config: ClassVar[ConfigDict] = {'extra': 'allow'}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

post_id: str
user_id: int
username: str
content: str
created_at: str
instrument_id: int | None
likes_count: int
comments_count: int
class etoropy.models.feeds.FeedResponse(**data)[source]

Bases: BaseModel

Parameters:
posts: list[FeedPost]
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.feeds.GetFeedParams(**data)[source]

Bases: BaseModel

Parameters:
  • data (Any)

  • page (int | None)

  • page_size (int | None)

page: int | None
page_size: int | None
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.feeds.CreateCommentRequest(**data)[source]

Bases: BaseModel

Parameters:
post_id: str
content: str
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.feeds.Comment(**data)[source]

Bases: BaseModel

Parameters:
model_config: ClassVar[ConfigDict] = {'extra': 'allow'}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

comment_id: str
post_id: str
user_id: int
username: str
content: str
created_at: str
class etoropy.models.feeds.UserSearchParams(**data)[source]

Bases: BaseModel

Parameters:
  • data (Any)

  • search_text (str | None)

  • page (int | None)

  • page_size (int | None)

search_text: str | None
page: int | None
page_size: int | None
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.feeds.UserProfile(**data)[source]

Bases: BaseModel

Parameters:
  • data (Any)

  • userId (int)

  • username (str)

  • displayName (str)

  • extra_data (Any)

model_config: ClassVar[ConfigDict] = {'extra': 'allow'}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

user_id: int
username: str
display_name: str
class etoropy.models.feeds.UserPerformance(**data)[source]

Bases: BaseModel

Parameters:
model_config: ClassVar[ConfigDict] = {'extra': 'allow'}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

user_id: int
class etoropy.models.feeds.UserPortfolio(**data)[source]

Bases: BaseModel

Parameters:
model_config: ClassVar[ConfigDict] = {'extra': 'allow'}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

user_id: int
positions: list[Any]
class etoropy.models.feeds.CopierInfo(**data)[source]

Bases: BaseModel

Parameters:
  • data (Any)

  • userId (int)

  • copiersCount (int)

  • extra_data (Any)

model_config: ClassVar[ConfigDict] = {'extra': 'allow'}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

user_id: int
copiers_count: int
class etoropy.models.feeds.CuratedList(**data)[source]

Bases: BaseModel

Parameters:
model_config: ClassVar[ConfigDict] = {'extra': 'allow'}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

list_id: int
name: str
items: list[Any]
class etoropy.models.feeds.MarketRecommendation(**data)[source]

Bases: BaseModel

Parameters:
  • data (Any)

  • instrumentId (int)

  • extra_data (Any)

model_config: ClassVar[ConfigDict] = {'extra': 'allow'}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

instrument_id: int

WebSocket Messages

class etoropy.models.websocket.WsAuthenticateOperation(**data)[source]

Bases: BaseModel

Parameters:
id: str
operation: str
data: dict[str, str]
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.websocket.WsSubscribeOperation(**data)[source]

Bases: BaseModel

Parameters:
id: str
operation: str
data: dict[str, Any]
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.websocket.WsUnsubscribeOperation(**data)[source]

Bases: BaseModel

Parameters:
id: str
operation: str
data: dict[str, list[str]]
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.websocket.WsMessage(**data)[source]

Bases: BaseModel

Parameters:
topic: str
content: str
id: str
type: str
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.websocket.WsEnvelope(**data)[source]

Bases: BaseModel

Parameters:
messages: list[WsMessage]
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.websocket.WsInstrumentRate(**data)[source]

Bases: BaseModel

Parameters:
ask: float
bid: float
last_execution: float
date: str
price_rate_id: int
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class etoropy.models.websocket.WsPrivateEvent(**data)[source]

Bases: BaseModel

Parameters:
  • data (Any)

  • OrderID (int)

  • OrderType (int)

  • StatusID (int)

  • InstrumentID (int)

  • CID (int)

  • RequestedUnits (float)

  • ExecutedUnits (float)

  • NetProfit (float)

  • CloseReason (str)

  • OpenDateTime (str)

  • RequestOccurred (str)

  • ErrorCode (int | None)

  • ErrorMessage (str | None)

  • PositionID (int | None)

  • Rate (float | None)

  • Amount (float | None)

  • IsBuy (bool | None)

  • Leverage (int | None)

  • extra_data (Any)

model_config: ClassVar[ConfigDict] = {'extra': 'allow'}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

order_id: int
order_type: int
status_id: int
instrument_id: int
cid: int
requested_units: float
executed_units: float
net_profit: float
close_reason: str
open_date_time: str
request_occurred: str
error_code: int | None
error_message: str | None
position_id: int | None
rate: float | None
amount: float | None
is_buy: bool | None
leverage: int | None