Skip to content

Commit 0c0b1f3

Browse files
authored
Crypto v1beta3 (#687)
* crypto v1beta3 * linter
1 parent d6eb300 commit 0c0b1f3

File tree

1 file changed

+44
-53
lines changed

1 file changed

+44
-53
lines changed

alpaca_trade_api/rest.py

Lines changed: 44 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -558,6 +558,7 @@ def _data_get(self,
558558
page_limit: int = DATA_V2_MAX_LIMIT,
559559
feed: Optional[str] = None,
560560
asof: Optional[str] = None,
561+
loc: Optional[str] = None,
561562
**kwargs):
562563
page_token = None
563564
total_items = 0
@@ -575,7 +576,9 @@ def _data_get(self,
575576
data['limit'] = actual_limit
576577
data['page_token'] = page_token
577578
path = f'/{endpoint_base}'
578-
if api_version == 'v1beta2' or is_multi_symbol:
579+
if loc:
580+
path += f'/{loc}'
581+
if api_version == 'v1beta3' or is_multi_symbol:
579582
data['symbols'] = _join_with_commas(symbol_or_symbols)
580583
elif symbol_or_symbols:
581584
path += f'/{symbol_or_symbols}'
@@ -790,10 +793,11 @@ def get_crypto_trades_iter(self,
790793
start: Optional[str] = None,
791794
end: Optional[str] = None,
792795
limit: int = None,
796+
loc: str = "us",
793797
raw=False) -> TradeIterator:
794798
trades = self._data_get('trades', symbol,
795-
api_version='v1beta2', endpoint_base='crypto',
796-
start=start, end=end, limit=limit)
799+
api_version='v1beta3', endpoint_base='crypto',
800+
start=start, end=end, limit=limit, loc=loc)
797801
for trade in trades:
798802
if raw:
799803
yield trade
@@ -804,44 +808,23 @@ def get_crypto_trades(self,
804808
symbol: str,
805809
start: Optional[str] = None,
806810
end: Optional[str] = None,
807-
limit: int = None) -> TradesV2:
811+
limit: int = None,
812+
loc: str = "us") -> TradesV2:
808813
return TradesV2(list(self.get_crypto_trades_iter(
809-
symbol, start, end, limit, raw=True)))
810-
811-
def get_crypto_quotes_iter(self,
812-
symbol: str,
813-
start: Optional[str] = None,
814-
end: Optional[str] = None,
815-
limit: int = None,
816-
raw=False) -> QuoteIterator:
817-
quotes = self._data_get('quotes', symbol,
818-
api_version='v1beta2', endpoint_base='crypto',
819-
start=start, end=end, limit=limit)
820-
for quote in quotes:
821-
if raw:
822-
yield quote
823-
else:
824-
yield self.response_wrapper(quote, Quote)
825-
826-
def get_crypto_quotes(self,
827-
symbol: str,
828-
start: Optional[str] = None,
829-
end: Optional[str] = None,
830-
limit: int = None) -> QuotesV2:
831-
return QuotesV2(list(self.get_crypto_quotes_iter(
832-
symbol, start, end, limit, raw=True)))
814+
symbol, start, end, limit, loc, raw=True)))
833815

834816
def get_crypto_bars_iter(self,
835817
symbol: Union[str, List[str]],
836818
timeframe: TimeFrame,
837819
start: Optional[str] = None,
838820
end: Optional[str] = None,
839821
limit: int = None,
822+
loc: str = "us",
840823
raw=False) -> BarIterator:
841824
bars = self._data_get('bars', symbol,
842-
api_version='v1beta2', endpoint_base='crypto',
825+
api_version='v1beta3', endpoint_base='crypto',
843826
timeframe=timeframe,
844-
start=start, end=end, limit=limit)
827+
start=start, end=end, limit=limit, loc=loc)
845828
for bar in bars:
846829
if raw:
847830
yield bar
@@ -853,57 +836,65 @@ def get_crypto_bars(self,
853836
timeframe: TimeFrame,
854837
start: Optional[str] = None,
855838
end: Optional[str] = None,
856-
limit: int = None) -> BarsV2:
839+
limit: int = None,
840+
loc: str = "us") -> BarsV2:
857841
return BarsV2(list(self.get_crypto_bars_iter(
858-
symbol, timeframe, start, end, limit, raw=True)))
842+
symbol, timeframe, start, end, limit, loc, raw=True)))
859843

860-
def get_latest_crypto_bars(self, symbols: List[str]) -> LatestBarsV2:
844+
def get_latest_crypto_bars(self, symbols: List[str],
845+
loc: str = "us") -> LatestBarsV2:
861846
resp = self.data_get(
862-
'/crypto/latest/bars',
847+
f'/crypto/{loc}/latest/bars',
863848
data={'symbols': _join_with_commas(symbols)},
864-
api_version='v1beta2')
849+
api_version='v1beta3')
865850
return self.response_wrapper(resp['bars'], LatestBarsV2)
866851

867-
def get_latest_crypto_trades(self, symbols: List[str]) -> LatestTradesV2:
852+
def get_latest_crypto_trades(self, symbols: List[str],
853+
loc: str = "us") -> LatestTradesV2:
868854
resp = self.data_get(
869-
'/crypto/latest/trades',
855+
f'/crypto/{loc}/latest/trades',
870856
data={'symbols': _join_with_commas(symbols)},
871-
api_version='v1beta2')
857+
api_version='v1beta3')
872858
return self.response_wrapper(resp['trades'], LatestTradesV2)
873859

874-
def get_latest_crypto_quotes(self, symbols: List[str]) -> LatestQuotesV2:
860+
def get_latest_crypto_quotes(self, symbols: List[str],
861+
loc: str = "us") -> LatestQuotesV2:
875862
resp = self.data_get(
876-
'/crypto/latest/quotes',
863+
f'/crypto/{loc}/latest/quotes',
877864
data={'symbols': _join_with_commas(symbols)},
878-
api_version='v1beta2')
865+
api_version='v1beta3')
879866
return self.response_wrapper(resp['quotes'], LatestQuotesV2)
880867

881-
def get_crypto_snapshot(self, symbols: str) -> SnapshotsV2:
868+
def get_crypto_snapshot(self, symbols: str,
869+
loc: str = "us") -> SnapshotsV2:
882870
resp = self.data_get(
883-
'/crypto/snapshots',
871+
f'/crypto/{loc}/snapshots',
884872
data={'symbols': symbols},
885-
api_version='v1beta2')
873+
api_version='v1beta3')
886874
return self.response_wrapper(resp['snapshots'], SnapshotsV2)
887875

888-
def get_crypto_snapshots(self, symbols: List[str]) -> SnapshotsV2:
876+
def get_crypto_snapshots(self, symbols: List[str],
877+
loc: str = "us") -> SnapshotsV2:
889878
resp = self.data_get(
890-
'/crypto/snapshots',
879+
f'/crypto/{loc}/snapshots',
891880
data={'symbols': _join_with_commas(symbols)},
892-
api_version='v1beta2')
881+
api_version='v1beta3')
893882
return self.response_wrapper(resp['snapshots'], SnapshotsV2)
894883

895-
def get_latest_crypto_orderbook(self, symbol: str) -> OrderbookV2:
884+
def get_latest_crypto_orderbook(self, symbol: str,
885+
loc: str = "us") -> OrderbookV2:
896886
resp = self.data_get(
897-
'/crypto/latest/orderbooks',
887+
f'/crypto/{loc}/latest/orderbooks',
898888
data={'symbols': symbol},
899-
api_version='v1beta2')
889+
api_version='v1beta3')
900890
return self.response_wrapper(resp['orderbooks'], OrderbooksV2)
901891

902-
def get_latest_crypto_orderbooks(self, symbols: List[str]) -> OrderbookV2:
892+
def get_latest_crypto_orderbooks(self, symbols: List[str],
893+
loc: str = "us") -> OrderbookV2:
903894
resp = self.data_get(
904-
'/crypto/latest/orderbooks',
895+
f'/crypto/{loc}/latest/orderbooks',
905896
data={'symbols': _join_with_commas(symbols)},
906-
api_version='v1beta2')
897+
api_version='v1beta3')
907898
return self.response_wrapper(resp['orderbooks'], OrderbooksV2)
908899

909900
def get_news_iter(self,

0 commit comments

Comments
 (0)