From f60bfe4199c7ef1405556a0e2a0b86cccbe4411d Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Mon, 7 Jul 2025 01:28:53 -0700 Subject: [PATCH 01/46] Add futures beta support (#884) * Add futures beta support * Fix lint * Fix indent * Add websocket support * Fix lint * Fix lint errors * Make sure we support launchpad * Removed order param and added IEX back * Clean up imports * Sync futures client and models with spec * Added pagination flag and fixed base url parsing * Added note about pagination flag --- README.md | 35 +++ polygon/rest/__init__.py | 5 + polygon/rest/base.py | 15 +- polygon/rest/futures.py | 334 ++++++++++++++++++++++++++ polygon/rest/models/__init__.py | 1 + polygon/rest/models/futures.py | 346 +++++++++++++++++++++++++++ polygon/websocket/__init__.py | 13 +- polygon/websocket/models/__init__.py | 121 +++++++--- polygon/websocket/models/common.py | 11 +- polygon/websocket/models/models.py | 90 +++++++ 10 files changed, 917 insertions(+), 54 deletions(-) create mode 100644 polygon/rest/futures.py create mode 100644 polygon/rest/models/futures.py diff --git a/README.md b/README.md index aaf7bb5f..7c0374e8 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,41 @@ for quote in quotes: print(quote) ``` +### Pagination Behavior + +By default, the client paginates results for endpoints like `list_trades` and `list_quotes` behind the scenes for you. Understanding how pagination interacts with the `limit` parameter is key. + +#### Default (Pagination Enabled) + +Pagination is enabled by default (`pagination=True`): + +* `limit` controls the page size, not the total number of results. +* The client automatically fetches all pages, yielding results until none remain. + +Here's an example: + +```python +client = RESTClient(api_key="") +trades = [t for t in client.list_trades(ticker="TSLA", limit=100)] +``` + +This fetches all TSLA trades, 100 per page. + +#### Disabling Pagination + +To return a fixed number of results and stop, disable pagination: + +```python +client = RESTClient(api_key="", pagination=False) +trades = [t for t in client.list_trades(ticker="TSLA", limit=100)] +``` + +This returns at most 100 total trades, no additional pages. + +### Performance Tip + +If you're fetching large datasets, always use the maximum supported limit for the API endpoint. This reduces the number of API calls and improves overall performance. + ### Additional Filter Parameters Many of the APIs in this client library support the use of additional filter parameters to refine your queries. Please refer to the specific API documentation for details on which filter parameters are supported for each endpoint. These filters can be applied using the following operators: diff --git a/polygon/rest/__init__.py b/polygon/rest/__init__.py index 7484378e..46f2b98f 100644 --- a/polygon/rest/__init__.py +++ b/polygon/rest/__init__.py @@ -1,4 +1,5 @@ from .aggs import AggsClient +from .futures import FuturesClient from .trades import TradesClient from .quotes import QuotesClient from .snapshot import SnapshotClient @@ -23,6 +24,7 @@ class RESTClient( AggsClient, + FuturesClient, TradesClient, QuotesClient, SnapshotClient, @@ -44,6 +46,7 @@ def __init__( num_pools: int = 10, retries: int = 3, base: str = BASE, + pagination: bool = True, verbose: bool = False, trace: bool = False, custom_json: Optional[Any] = None, @@ -55,6 +58,7 @@ def __init__( num_pools=num_pools, retries=retries, base=base, + pagination=pagination, verbose=verbose, trace=trace, custom_json=custom_json, @@ -66,6 +70,7 @@ def __init__( num_pools=num_pools, retries=retries, base=base, + pagination=pagination, verbose=verbose, trace=trace, custom_json=custom_json, diff --git a/polygon/rest/base.py b/polygon/rest/base.py index d9d4768a..76cf1430 100644 --- a/polygon/rest/base.py +++ b/polygon/rest/base.py @@ -10,7 +10,7 @@ from .models.request import RequestOptionBuilder from ..logging import get_logger import logging -from urllib.parse import urlencode +from urllib.parse import urlencode, urlparse from ..exceptions import AuthError, BadResponse logger = get_logger("RESTClient") @@ -30,6 +30,7 @@ def __init__( num_pools: int, retries: int, base: str, + pagination: bool, verbose: bool, trace: bool, custom_json: Optional[Any] = None, @@ -41,6 +42,7 @@ def __init__( self.API_KEY = api_key self.BASE = base + self.pagination = pagination self.headers = { "Authorization": "Bearer " + self.API_KEY, @@ -227,11 +229,14 @@ def _paginate_iter( return [] for t in decoded[result_key]: yield deserializer(t) - if "next_url" in decoded: - path = decoded["next_url"].replace(self.BASE, "") - params = {} - else: + if not self.pagination or "next_url" not in decoded: return + next_url = decoded["next_url"] + parsed = urlparse(next_url) + path = parsed.path + if parsed.query: + path += "?" + parsed.query + params = {} def _paginate( self, diff --git a/polygon/rest/futures.py b/polygon/rest/futures.py new file mode 100644 index 00000000..6de7669a --- /dev/null +++ b/polygon/rest/futures.py @@ -0,0 +1,334 @@ +from typing import Optional, Any, Dict, List, Union, Iterator +from urllib3 import HTTPResponse +from datetime import datetime, date + +from .base import BaseClient +from .models.futures import ( + FuturesAgg, + FuturesContract, + FuturesProduct, + FuturesQuote, + FuturesTrade, + FuturesSchedule, + FuturesMarketStatus, + FuturesSnapshot, +) +from .models.common import Sort +from .models.request import RequestOptionBuilder + + +class FuturesClient(BaseClient): + """ + Client for the Futures REST Endpoints + (aligned with the paths from /futures/vX/...) + """ + + def list_futures_aggregates( + self, + ticker: str, + resolution: str, + window_start: Optional[str] = None, + window_start_lt: Optional[str] = None, + window_start_lte: Optional[str] = None, + window_start_gt: Optional[str] = None, + window_start_gte: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[Union[str, Sort]] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[Iterator[FuturesAgg], HTTPResponse]: + """ + Endpoint: GET /futures/vX/aggs/{ticker} + + Get aggregates for a futures contract in a given time range. + This endpoint returns data that includes: + - open, close, high, low + - volume, dollar_volume, etc. + If `next_url` is present, it will be paginated. + """ + url = f"/futures/vX/aggs/{ticker}" + return self._paginate( + path=url, + params=self._get_params(self.list_futures_aggregates, locals()), + raw=raw, + deserializer=FuturesAgg.from_dict, + options=options, + ) + + def list_futures_contracts( + self, + product_code: Optional[str] = None, + first_trade_date: Optional[Union[str, date]] = None, + last_trade_date: Optional[Union[str, date]] = None, + as_of: Optional[Union[str, date]] = None, + active: Optional[str] = None, + type: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[Union[str, Sort]] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[Iterator[FuturesContract], HTTPResponse]: + """ + Endpoint: GET /futures/vX/contracts + + The Contracts endpoint returns a paginated list of futures contracts. + """ + url = "/futures/vX/contracts" + return self._paginate( + path=url, + params=self._get_params(self.list_futures_contracts, locals()), + raw=raw, + deserializer=FuturesContract.from_dict, + options=options, + ) + + def get_futures_contract_details( + self, + ticker: str, + as_of: Optional[Union[str, date]] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[FuturesContract, HTTPResponse]: + """ + Endpoint: GET /futures/vX/contracts/{ticker} + + Returns details for a single contract at a specified point in time. + (No next_url in the response -> just a single get). + """ + url = f"/futures/vX/contracts/{ticker}" + return self._get( + path=url, + params=self._get_params(self.get_futures_contract_details, locals()), + deserializer=FuturesContract.from_dict, + raw=raw, + result_key="results", + options=options, + ) + + def list_futures_products( + self, + name: Optional[str] = None, + name_search: Optional[str] = None, + as_of: Optional[Union[str, date]] = None, + market_identifier_code: Optional[str] = None, + sector: Optional[str] = None, + sub_sector: Optional[str] = None, + asset_class: Optional[str] = None, + asset_sub_class: Optional[str] = None, + type: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[Union[str, Sort]] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[Iterator[FuturesProduct], HTTPResponse]: + """ + Endpoint: GET /futures/vX/products + + Returns a list of futures products (including combos). + """ + url = "/futures/vX/products" + return self._paginate( + path=url, + params=self._get_params(self.list_futures_products, locals()), + raw=raw, + deserializer=FuturesProduct.from_dict, + options=options, + ) + + def get_futures_product_details( + self, + product_code: str, + type: Optional[str] = None, + as_of: Optional[Union[str, date]] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[FuturesProduct, HTTPResponse]: + """ + Endpoint: GET /futures/vX/products/{product_code} + + Returns the details for a single product as it was at a specific day. + (No next_url -> single get). + """ + url = f"/futures/vX/products/{product_code}" + return self._get( + path=url, + params=self._get_params(self.get_futures_product_details, locals()), + deserializer=FuturesProduct.from_dict, + raw=raw, + result_key="results", + options=options, + ) + + def list_futures_quotes( + self, + ticker: str, + timestamp: Optional[str] = None, + timestamp_lt: Optional[str] = None, + timestamp_lte: Optional[str] = None, + timestamp_gt: Optional[str] = None, + timestamp_gte: Optional[str] = None, + session_end_date: Optional[str] = None, + session_end_date_lt: Optional[str] = None, + session_end_date_lte: Optional[str] = None, + session_end_date_gt: Optional[str] = None, + session_end_date_gte: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[Union[str, Sort]] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[Iterator[FuturesQuote], HTTPResponse]: + """ + Endpoint: GET /futures/vX/quotes/{ticker} + + Get quotes for a contract in a given time range (paginated). + """ + url = f"/futures/vX/quotes/{ticker}" + return self._paginate( + path=url, + params=self._get_params(self.list_futures_quotes, locals()), + raw=raw, + deserializer=FuturesQuote.from_dict, + options=options, + ) + + def list_futures_trades( + self, + ticker: str, + timestamp: Optional[str] = None, + timestamp_lt: Optional[str] = None, + timestamp_lte: Optional[str] = None, + timestamp_gt: Optional[str] = None, + timestamp_gte: Optional[str] = None, + session_end_date: Optional[str] = None, + session_end_date_lt: Optional[str] = None, + session_end_date_lte: Optional[str] = None, + session_end_date_gt: Optional[str] = None, + session_end_date_gte: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[Union[str, Sort]] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[Iterator[FuturesTrade], HTTPResponse]: + """ + Endpoint: GET /futures/vX/trades/{ticker} + + Get trades for a contract in a given time range (paginated). + """ + url = f"/futures/vX/trades/{ticker}" + return self._paginate( + path=url, + params=self._get_params(self.list_futures_trades, locals()), + raw=raw, + deserializer=FuturesTrade.from_dict, + options=options, + ) + + def list_futures_schedules( + self, + session_end_date: Optional[str] = None, + market_identifier_code: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[Union[str, Sort]] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[Iterator[FuturesSchedule], HTTPResponse]: + """ + Endpoint: GET /futures/vX/schedules + + Returns a list of trading schedules for multiple futures products on a specific date. + If `next_url` is present, this is paginated. + """ + url = "/futures/vX/schedules" + return self._paginate( + path=url, + params=self._get_params(self.list_futures_schedules, locals()), + raw=raw, + deserializer=FuturesSchedule.from_dict, + options=options, + ) + + def list_futures_schedules_by_product_code( + self, + product_code: str, + session_end_date: Optional[str] = None, + session_end_date_lt: Optional[str] = None, + session_end_date_lte: Optional[str] = None, + session_end_date_gt: Optional[str] = None, + session_end_date_gte: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[Union[str, Sort]] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[Iterator[FuturesSchedule], HTTPResponse]: + """ + Endpoint: GET /futures/vX/products/{product_code}/schedules + + Returns schedule data for a single product across (potentially) many trading dates. + """ + url = f"/futures/vX/products/{product_code}/schedules" + return self._paginate( + path=url, + params=self._get_params( + self.list_futures_schedules_by_product_code, locals() + ), + raw=raw, + deserializer=FuturesSchedule.from_dict, + options=options, + ) + + def list_futures_market_statuses( + self, + product_code_any_of: Optional[str] = None, + product_code: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[Union[str, Sort]] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[Iterator[FuturesMarketStatus], HTTPResponse]: + url = "/futures/vX/market-status" + return self._paginate( + path=url, + params=self._get_params(self.list_futures_market_statuses, locals()), + raw=raw, + deserializer=FuturesMarketStatus.from_dict, + options=options, + ) + + def get_futures_snapshot( + self, + ticker: Optional[str] = None, + ticker_any_of: Optional[str] = None, + ticker_gt: Optional[str] = None, + ticker_gte: Optional[str] = None, + ticker_lt: Optional[str] = None, + ticker_lte: Optional[str] = None, + product_code: Optional[str] = None, + product_code_any_of: Optional[str] = None, + product_code_gt: Optional[str] = None, + product_code_gte: Optional[str] = None, + product_code_lt: Optional[str] = None, + product_code_lte: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[Union[str, Sort]] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[Iterator[FuturesSnapshot], HTTPResponse]: + url = "/futures/vX/snapshot" + return self._paginate( + path=url, + params=self._get_params(self.get_futures_snapshot, locals()), + raw=raw, + deserializer=FuturesSnapshot.from_dict, + options=options, + ) diff --git a/polygon/rest/models/__init__.py b/polygon/rest/models/__init__.py index 2c9a8086..3108ab01 100644 --- a/polygon/rest/models/__init__.py +++ b/polygon/rest/models/__init__.py @@ -5,6 +5,7 @@ from .dividends import * from .exchanges import * from .financials import * +from .futures import * from .indicators import * from .markets import * from .quotes import * diff --git a/polygon/rest/models/futures.py b/polygon/rest/models/futures.py new file mode 100644 index 00000000..7d1f62cf --- /dev/null +++ b/polygon/rest/models/futures.py @@ -0,0 +1,346 @@ +from typing import Optional, List +from ...modelclass import modelclass + + +@modelclass +class FuturesAgg: + """ + A single aggregate bar for a futures contract in a given time window. + Corresponds to /futures/vX/aggs/{ticker}. + """ + + ticker: Optional[str] = None + underlying_asset: Optional[str] = None + open: Optional[float] = None + high: Optional[float] = None + low: Optional[float] = None + close: Optional[float] = None + volume: Optional[float] = None + dollar_volume: Optional[float] = None + transaction_count: Optional[int] = None + window_start: Optional[int] = None + session_end_date: Optional[str] = None + settlement_price: Optional[float] = None + + @staticmethod + def from_dict(d): + return FuturesAgg( + ticker=d.get("ticker"), + underlying_asset=d.get("underlying_asset"), + open=d.get("open"), + high=d.get("high"), + low=d.get("low"), + close=d.get("close"), + volume=d.get("volume"), + dollar_volume=d.get("dollar_volume"), + transaction_count=d.get("transaction_count"), + window_start=d.get("window_start"), + session_end_date=d.get("session_end_date"), + settlement_price=d.get("settlement_price"), + ) + + +@modelclass +class FuturesContract: + """ + Represents a single futures contract (or a 'combo' contract). + Corresponds to /futures/vX/contracts endpoints. + """ + + ticker: Optional[str] = None + product_code: Optional[str] = None + market_identifier_code: Optional[str] = None + name: Optional[str] = None + type: Optional[str] = None + as_of: Optional[str] = None + active: Optional[bool] = None + first_trade_date: Optional[str] = None + last_trade_date: Optional[str] = None + days_to_maturity: Optional[int] = None + min_order_quantity: Optional[int] = None + max_order_quantity: Optional[int] = None + settlement_date: Optional[str] = None + settlement_tick_size: Optional[float] = None + spread_tick_size: Optional[float] = None + trade_tick_size: Optional[float] = None + maturity: Optional[str] = None + + @staticmethod + def from_dict(d): + return FuturesContract( + ticker=d.get("ticker"), + product_code=d.get("product_code"), + market_identifier_code=d.get("market_identifier_code"), + name=d.get("name"), + type=d.get("type"), + as_of=d.get("as_of"), + active=d.get("active"), + first_trade_date=d.get("first_trade_date"), + last_trade_date=d.get("last_trade_date"), + days_to_maturity=d.get("days_to_maturity"), + min_order_quantity=d.get("min_order_quantity"), + max_order_quantity=d.get("max_order_quantity"), + settlement_date=d.get("settlement_date"), + settlement_tick_size=d.get("settlement_tick_size"), + spread_tick_size=d.get("spread_tick_size"), + trade_tick_size=d.get("trade_tick_size"), + maturity=d.get("maturity"), + ) + + +@modelclass +class FuturesProduct: + """ + Represents a single futures product (or product 'combo'). + Corresponds to /futures/vX/products endpoints. + """ + + product_code: Optional[str] = None + name: Optional[str] = None + as_of: Optional[str] = None + market_identifier_code: Optional[str] = None + asset_class: Optional[str] = None + asset_sub_class: Optional[str] = None + clearing_channel: Optional[str] = None + sector: Optional[str] = None + sub_sector: Optional[str] = None + type: Optional[str] = None + last_updated: Optional[str] = None + otc_eligible: Optional[bool] = None + price_quotation: Optional[str] = None + settlement_currency_code: Optional[str] = None + settlement_method: Optional[str] = None + settlement_type: Optional[str] = None + trade_currency_code: Optional[str] = None + unit_of_measure: Optional[str] = None + unit_of_measure_quantity: Optional[float] = None + + @staticmethod + def from_dict(d): + return FuturesProduct( + product_code=d.get("product_code"), + name=d.get("name"), + as_of=d.get("as_of"), + market_identifier_code=d.get("market_identifier_code"), + asset_class=d.get("asset_class"), + clearing_channel=d.get("clearing_channel"), + asset_sub_class=d.get("asset_sub_class"), + sector=d.get("sector"), + sub_sector=d.get("sub_sector"), + type=d.get("type"), + last_updated=d.get("last_updated"), + otc_eligible=d.get("otc_eligible"), + price_quotation=d.get("price_quotation"), + settlement_currency_code=d.get("settlement_currency_code"), + settlement_method=d.get("settlement_method"), + settlement_type=d.get("settlement_type"), + trade_currency_code=d.get("trade_currency_code"), + unit_of_measure=d.get("unit_of_measure"), + unit_of_measure_quantity=d.get("unit_of_measure_quantity"), + ) + + +@modelclass +class FuturesQuote: + """ + Represents a futures NBBO quote within a given time range. + Corresponds to /futures/vX/quotes/{ticker} + """ + + ticker: Optional[str] = None + timestamp: Optional[int] = None + session_end_date: Optional[str] = None + ask_price: Optional[float] = None + ask_size: Optional[float] = None + ask_timestamp: Optional[int] = None + bid_price: Optional[float] = None + bid_size: Optional[float] = None + bid_timestamp: Optional[int] = None + + @staticmethod + def from_dict(d): + return FuturesQuote( + ticker=d.get("ticker"), + timestamp=d.get("timestamp"), + session_end_date=d.get("session_end_date"), + ask_price=d.get("ask_price"), + ask_size=d.get("ask_size"), + ask_timestamp=d.get("ask_timestamp"), + bid_price=d.get("bid_price"), + bid_size=d.get("bid_size"), + bid_timestamp=d.get("bid_timestamp"), + ) + + +@modelclass +class FuturesTrade: + """ + Represents a futures trade within a given time range. + Corresponds to /futures/vX/trades/{ticker} + """ + + ticker: Optional[str] = None + timestamp: Optional[int] = None + session_end_date: Optional[str] = None + price: Optional[float] = None + size: Optional[float] = None + + @staticmethod + def from_dict(d): + return FuturesTrade( + ticker=d.get("ticker"), + timestamp=d.get("timestamp"), + session_end_date=d.get("session_end_date"), + price=d.get("price"), + size=d.get("size"), + ) + + +@modelclass +class FuturesScheduleEvent: + """ + Represents a single market event for a schedule (preopen, open, closed, etc.). + """ + + event: Optional[str] = None + timestamp: Optional[str] = None + + @staticmethod + def from_dict(d): + return FuturesScheduleEvent( + event=d.get("event"), + timestamp=d.get("timestamp"), + ) + + +@modelclass +class FuturesSchedule: + """ + Represents a single schedule for a given session_end_date, with events. + Corresponds to /futures/vX/schedules, /futures/vX/schedules/{product_code} + """ + + session_end_date: Optional[str] = None + product_code: Optional[str] = None + market_identifier_code: Optional[str] = None + product_name: Optional[str] = None + schedule: Optional[List[FuturesScheduleEvent]] = None + + @staticmethod + def from_dict(d): + return FuturesSchedule( + session_end_date=d.get("session_end_date"), + product_code=d.get("product_code"), + market_identifier_code=d.get("market_identifier_code"), + product_name=d.get("product_name"), + schedule=[ + FuturesScheduleEvent.from_dict(ev) for ev in d.get("schedule", []) + ], + ) + + +@modelclass +class FuturesMarketStatus: + market_identifier_code: Optional[str] = None + market_status: Optional[str] = ( + None # Enum: pre_open, open, close, pause, post_close_pre_open + ) + product_code: Optional[str] = None + + @staticmethod + def from_dict(d): + return FuturesMarketStatus( + market_identifier_code=d.get("market_identifier_code"), + market_status=d.get("market_status"), + product_code=d.get("product_code"), + ) + + +@modelclass +class FuturesSnapshotDetails: + open_interest: Optional[int] = None + settlement_date: Optional[int] = None + + +@modelclass +class FuturesSnapshotMinute: + close: Optional[float] = None + high: Optional[float] = None + last_updated: Optional[int] = None + low: Optional[float] = None + open: Optional[float] = None + volume: Optional[float] = None + + +@modelclass +class FuturesSnapshotQuote: + ask: Optional[float] = None + ask_size: Optional[int] = None + ask_timestamp: Optional[int] = None + bid: Optional[float] = None + bid_size: Optional[int] = None + bid_timestamp: Optional[int] = None + last_updated: Optional[int] = None + + +@modelclass +class FuturesSnapshotTrade: + last_updated: Optional[int] = None + price: Optional[float] = None + size: Optional[int] = None + + +@modelclass +class FuturesSnapshotSession: + change: Optional[float] = None + change_percent: Optional[float] = None + close: Optional[float] = None + high: Optional[float] = None + low: Optional[float] = None + open: Optional[float] = None + previous_settlement: Optional[float] = None + settlement_price: Optional[float] = None + volume: Optional[float] = None + + +@modelclass +class FuturesSnapshot: + ticker: Optional[str] = None + product_code: Optional[str] = None + details: Optional[FuturesSnapshotDetails] = None + last_minute: Optional[FuturesSnapshotMinute] = None + last_quote: Optional[FuturesSnapshotQuote] = None + last_trade: Optional[FuturesSnapshotTrade] = None + session: Optional[FuturesSnapshotSession] = None + + @staticmethod + def from_dict(d): + return FuturesSnapshot( + ticker=d.get("ticker"), + product_code=d.get("product_code"), + details=( + FuturesSnapshotDetails.from_dict(d.get("details", {})) + if d.get("details") + else None + ), + last_minute=( + FuturesSnapshotMinute.from_dict(d.get("last_minute", {})) + if d.get("last_minute") + else None + ), + last_quote=( + FuturesSnapshotQuote.from_dict(d.get("last_quote", {})) + if d.get("last_quote") + else None + ), + last_trade=( + FuturesSnapshotTrade.from_dict(d.get("last_trade", {})) + if d.get("last_trade") + else None + ), + session=( + FuturesSnapshotSession.from_dict(d.get("session", {})) + if d.get("session") + else None + ), + ) diff --git a/polygon/websocket/__init__.py b/polygon/websocket/__init__.py index 77865d3f..1304028f 100644 --- a/polygon/websocket/__init__.py +++ b/polygon/websocket/__init__.py @@ -49,16 +49,19 @@ def __init__( ) self.api_key = api_key self.feed = feed - self.market = market + if isinstance(market, str): + self.market = Market(market) # converts str input to enum + else: + self.market = market + + self.market_value = self.market.value self.raw = raw if verbose: logger.setLevel(logging.DEBUG) self.websocket_cfg = kwargs if isinstance(feed, Enum): feed = feed.value - if isinstance(market, Enum): - market = market.value - self.url = f"ws{'s' if secure else ''}://{feed}/{market}" + self.url = f"ws{'s' if secure else ''}://{feed}/{self.market_value}" self.subscribed = False self.subs: Set[str] = set() self.max_reconnects = max_reconnects @@ -140,7 +143,7 @@ async def connect( if m["ev"] == "status": logger.debug("status: %s", m["message"]) continue - cmsg = parse(msgJson, logger) + cmsg = parse(msgJson, logger, self.market) if len(cmsg) > 0: await processor(cmsg) # type: ignore diff --git a/polygon/websocket/models/__init__.py b/polygon/websocket/models/__init__.py index 06cab55d..20c02ce1 100644 --- a/polygon/websocket/models/__init__.py +++ b/polygon/websocket/models/__init__.py @@ -1,49 +1,94 @@ -from typing import Dict, Any, List +from typing import Dict, Any, List, Type, Protocol, cast from .common import * from .models import * import logging -def parse_single(data: Dict[str, Any]): +# Protocol to define classes with from_dict method +class FromDictProtocol(Protocol): + @classmethod + def from_dict(cls, data: Dict[str, Any]) -> "FromDictProtocol": + pass + + +# Define the mapping of market and event type to model class +MARKET_EVENT_MAP: Dict[Market, Dict[str, Type[FromDictProtocol]]] = { + Market.Stocks: { + "A": EquityAgg, + "AM": EquityAgg, + "T": EquityTrade, + "Q": EquityQuote, + "LULD": LimitUpLimitDown, + "FMV": FairMarketValue, + "NOI": Imbalance, + "LV": LaunchpadValue, + }, + Market.Options: { + "A": EquityAgg, + "AM": EquityAgg, + "T": EquityTrade, + "Q": EquityQuote, + "FMV": FairMarketValue, + "LV": LaunchpadValue, + }, + Market.Indices: { + "A": EquityAgg, + "AM": EquityAgg, + "V": IndexValue, + }, + Market.Futures: { + "A": FuturesAgg, + "AM": FuturesAgg, + "T": FuturesTrade, + "Q": FuturesQuote, + }, + Market.Crypto: { + "XA": CurrencyAgg, + "XAS": CurrencyAgg, + "XT": CryptoTrade, + "XQ": CryptoQuote, + "XL2": Level2Book, + "FMV": FairMarketValue, + "AM": EquityAgg, + "LV": LaunchpadValue, + }, + Market.Forex: { + "CA": CurrencyAgg, + "CAS": CurrencyAgg, + "C": ForexQuote, + "FMV": FairMarketValue, + "AM": EquityAgg, + "LV": LaunchpadValue, + }, +} + + +def parse_single( + data: Dict[str, Any], logger: logging.Logger, market: Market +) -> Optional[WebSocketMessage]: event_type = data["ev"] - if event_type in [EventType.EquityAgg.value, EventType.EquityAggMin.value]: - return EquityAgg.from_dict(data) - elif event_type in [ - EventType.CryptoAgg.value, - EventType.CryptoAggSec.value, - EventType.ForexAgg.value, - EventType.ForexAggSec.value, - ]: - return CurrencyAgg.from_dict(data) - elif event_type == EventType.EquityTrade.value: - return EquityTrade.from_dict(data) - elif event_type == EventType.CryptoTrade.value: - return CryptoTrade.from_dict(data) - elif event_type == EventType.EquityQuote.value: - return EquityQuote.from_dict(data) - elif event_type == EventType.ForexQuote.value: - return ForexQuote.from_dict(data) - elif event_type == EventType.CryptoQuote.value: - return CryptoQuote.from_dict(data) - elif event_type == EventType.Imbalances.value: - return Imbalance.from_dict(data) - elif event_type == EventType.LimitUpLimitDown.value: - return LimitUpLimitDown.from_dict(data) - elif event_type == EventType.CryptoL2.value: - return Level2Book.from_dict(data) - elif event_type == EventType.Value.value: - return IndexValue.from_dict(data) - elif event_type == EventType.LaunchpadValue.value: - return LaunchpadValue.from_dict(data) - elif event_type == EventType.BusinessFairMarketValue.value: - return FairMarketValue.from_dict(data) - return None - - -def parse(msg: List[Dict[str, Any]], logger: logging.Logger) -> List[WebSocketMessage]: + # Look up the model class based on market and event type + model_class: Optional[Type[FromDictProtocol]] = MARKET_EVENT_MAP.get( + market, {} + ).get(event_type) + if model_class: + parsed = model_class.from_dict(data) + return cast( + WebSocketMessage, parsed + ) # Ensure the return type is WebSocketMessage + else: + # Log a warning for unrecognized event types, unless it's a status message + if event_type != "status": + logger.warning("Unknown event type '%s' for market %s", event_type, market) + return None + + +def parse( + msg: List[Dict[str, Any]], logger: logging.Logger, market: Market +) -> List[WebSocketMessage]: res = [] for m in msg: - parsed = parse_single(m) + parsed = parse_single(m, logger, market) if parsed is None: if m["ev"] != "status": logger.warning("could not parse message %s", m) diff --git a/polygon/websocket/models/common.py b/polygon/websocket/models/common.py index 38aea4c4..261f664b 100644 --- a/polygon/websocket/models/common.py +++ b/polygon/websocket/models/common.py @@ -28,6 +28,7 @@ class Market(Enum): Forex = "forex" Crypto = "crypto" Indices = "indices" + Futures = "futures" class EventType(Enum): @@ -46,12 +47,10 @@ class EventType(Enum): LimitUpLimitDown = "LULD" CryptoL2 = "XL2" Value = "V" - """Launchpad* EventTypes are only available to Launchpad users. These values are the same across all asset classes ( - stocks, options, forex, crypto). - """ LaunchpadValue = "LV" LaunchpadAggMin = "AM" - """Business* EventTypes are only available to Business users. These values are the same across all asset classes ( - stocks, options, forex, crypto). - """ BusinessFairMarketValue = "FMV" + FuturesTrade = "T" + FuturesQuote = "Q" + FuturesAgg = "A" + FuturesAggMin = "AM" diff --git a/polygon/websocket/models/models.py b/polygon/websocket/models/models.py index d6fa0c29..9b95b302 100644 --- a/polygon/websocket/models/models.py +++ b/polygon/websocket/models/models.py @@ -359,6 +359,93 @@ def from_dict(d): ) +@modelclass +class FuturesTrade: + event_type: Optional[str] = None + symbol: Optional[str] = None + price: Optional[float] = None + size: Optional[int] = None + timestamp: Optional[int] = None + sequence_number: Optional[int] = None + + @staticmethod + def from_dict(d): + return FuturesTrade( + event_type=d.get("ev"), + symbol=d.get("sym"), + price=d.get("p"), + size=d.get("s"), + timestamp=d.get("t"), + sequence_number=d.get("q"), + ) + + +@modelclass +class FuturesQuote: + event_type: Optional[str] = None + symbol: Optional[str] = None + bid_price: Optional[float] = None + bid_size: Optional[int] = None + bid_timestamp: Optional[int] = None + ask_price: Optional[float] = None + ask_size: Optional[int] = None + ask_timestamp: Optional[int] = None + sip_timestamp: Optional[int] = None + + @staticmethod + def from_dict(d): + return FuturesQuote( + event_type=d.get("ev"), + symbol=d.get("sym"), + bid_price=d.get("bp"), + bid_size=d.get("bs"), + bid_timestamp=d.get("bt"), + ask_price=d.get("ap"), + ask_size=d.get("as"), + ask_timestamp=d.get("at"), + sip_timestamp=d.get("t"), + ) + + +@modelclass +class FuturesAgg: + event_type: Optional[str] = None + symbol: Optional[str] = None + volume: Optional[float] = None + accumulated_volume: Optional[float] = None + official_open_price: Optional[float] = None + vwap: Optional[float] = None + open: Optional[float] = None + close: Optional[float] = None + high: Optional[float] = None + low: Optional[float] = None + aggregate_vwap: Optional[float] = None + average_size: Optional[float] = None + start_timestamp: Optional[int] = None + end_timestamp: Optional[int] = None + otc: Optional[bool] = None # If present + + @staticmethod + def from_dict(d): + return FuturesAgg( + event_type=d.get("ev"), + symbol=d.get("sym"), + volume=d.get("v"), + accumulated_volume=d.get("av"), + official_open_price=d.get("op"), + vwap=d.get("vw"), + open=d.get("o"), + close=d.get("c"), + high=d.get("h"), + low=d.get("l"), + aggregate_vwap=d.get("a"), + average_size=d.get("z"), + start_timestamp=d.get("s"), + end_timestamp=d.get("e"), + otc=d.get("otc"), + ) + + WebSocketMessage = NewType( "WebSocketMessage", List[ @@ -376,6 +463,9 @@ def from_dict(d): IndexValue, LaunchpadValue, FairMarketValue, + FuturesTrade, + FuturesQuote, + FuturesAgg, ] ], ) From 334277a1eafc571e4602ee0f22416b73ad06c65b Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Tue, 8 Jul 2025 12:08:03 -0700 Subject: [PATCH 02/46] Sync futures aggs with latest spec (#894) --- polygon/websocket/models/models.py | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/polygon/websocket/models/models.py b/polygon/websocket/models/models.py index 9b95b302..210be2ad 100644 --- a/polygon/websocket/models/models.py +++ b/polygon/websocket/models/models.py @@ -411,19 +411,16 @@ def from_dict(d): class FuturesAgg: event_type: Optional[str] = None symbol: Optional[str] = None - volume: Optional[float] = None - accumulated_volume: Optional[float] = None - official_open_price: Optional[float] = None - vwap: Optional[float] = None + volume: Optional[int] = None + total_value: Optional[int] = None open: Optional[float] = None close: Optional[float] = None high: Optional[float] = None low: Optional[float] = None - aggregate_vwap: Optional[float] = None - average_size: Optional[float] = None + transaction_count: Optional[int] = None + underlying_asset: Optional[str] = None start_timestamp: Optional[int] = None end_timestamp: Optional[int] = None - otc: Optional[bool] = None # If present @staticmethod def from_dict(d): @@ -431,18 +428,15 @@ def from_dict(d): event_type=d.get("ev"), symbol=d.get("sym"), volume=d.get("v"), - accumulated_volume=d.get("av"), - official_open_price=d.get("op"), - vwap=d.get("vw"), + total_value=d.get("dv"), open=d.get("o"), close=d.get("c"), high=d.get("h"), low=d.get("l"), - aggregate_vwap=d.get("a"), - average_size=d.get("z"), + transaction_count=d.get("n"), + underlying_asset=d.get("p"), start_timestamp=d.get("s"), end_timestamp=d.get("e"), - otc=d.get("otc"), ) From f254f53f6863017857c766689fffe1a97f1cc303 Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Wed, 16 Jul 2025 07:12:57 -0700 Subject: [PATCH 03/46] Sync with latest futures spec (#897) --- polygon/rest/models/futures.py | 20 ++++++++------------ polygon/websocket/models/models.py | 2 -- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/polygon/rest/models/futures.py b/polygon/rest/models/futures.py index 7d1f62cf..bfaf690f 100644 --- a/polygon/rest/models/futures.py +++ b/polygon/rest/models/futures.py @@ -10,7 +10,6 @@ class FuturesAgg: """ ticker: Optional[str] = None - underlying_asset: Optional[str] = None open: Optional[float] = None high: Optional[float] = None low: Optional[float] = None @@ -26,7 +25,6 @@ class FuturesAgg: def from_dict(d): return FuturesAgg( ticker=d.get("ticker"), - underlying_asset=d.get("underlying_asset"), open=d.get("open"), high=d.get("high"), low=d.get("low"), @@ -49,7 +47,7 @@ class FuturesContract: ticker: Optional[str] = None product_code: Optional[str] = None - market_identifier_code: Optional[str] = None + trading_venue: Optional[str] = None name: Optional[str] = None type: Optional[str] = None as_of: Optional[str] = None @@ -70,7 +68,7 @@ def from_dict(d): return FuturesContract( ticker=d.get("ticker"), product_code=d.get("product_code"), - market_identifier_code=d.get("market_identifier_code"), + trading_venue=d.get("trading_venue"), name=d.get("name"), type=d.get("type"), as_of=d.get("as_of"), @@ -98,7 +96,7 @@ class FuturesProduct: product_code: Optional[str] = None name: Optional[str] = None as_of: Optional[str] = None - market_identifier_code: Optional[str] = None + trading_venue: Optional[str] = None asset_class: Optional[str] = None asset_sub_class: Optional[str] = None clearing_channel: Optional[str] = None @@ -106,7 +104,6 @@ class FuturesProduct: sub_sector: Optional[str] = None type: Optional[str] = None last_updated: Optional[str] = None - otc_eligible: Optional[bool] = None price_quotation: Optional[str] = None settlement_currency_code: Optional[str] = None settlement_method: Optional[str] = None @@ -121,7 +118,7 @@ def from_dict(d): product_code=d.get("product_code"), name=d.get("name"), as_of=d.get("as_of"), - market_identifier_code=d.get("market_identifier_code"), + trading_venue=d.get("trading_venue"), asset_class=d.get("asset_class"), clearing_channel=d.get("clearing_channel"), asset_sub_class=d.get("asset_sub_class"), @@ -129,7 +126,6 @@ def from_dict(d): sub_sector=d.get("sub_sector"), type=d.get("type"), last_updated=d.get("last_updated"), - otc_eligible=d.get("otc_eligible"), price_quotation=d.get("price_quotation"), settlement_currency_code=d.get("settlement_currency_code"), settlement_method=d.get("settlement_method"), @@ -222,7 +218,7 @@ class FuturesSchedule: session_end_date: Optional[str] = None product_code: Optional[str] = None - market_identifier_code: Optional[str] = None + trading_venue: Optional[str] = None product_name: Optional[str] = None schedule: Optional[List[FuturesScheduleEvent]] = None @@ -231,7 +227,7 @@ def from_dict(d): return FuturesSchedule( session_end_date=d.get("session_end_date"), product_code=d.get("product_code"), - market_identifier_code=d.get("market_identifier_code"), + trading_venue=d.get("trading_venue"), product_name=d.get("product_name"), schedule=[ FuturesScheduleEvent.from_dict(ev) for ev in d.get("schedule", []) @@ -241,7 +237,7 @@ def from_dict(d): @modelclass class FuturesMarketStatus: - market_identifier_code: Optional[str] = None + trading_venue: Optional[str] = None market_status: Optional[str] = ( None # Enum: pre_open, open, close, pause, post_close_pre_open ) @@ -250,7 +246,7 @@ class FuturesMarketStatus: @staticmethod def from_dict(d): return FuturesMarketStatus( - market_identifier_code=d.get("market_identifier_code"), + trading_venue=d.get("trading_venue"), market_status=d.get("market_status"), product_code=d.get("product_code"), ) diff --git a/polygon/websocket/models/models.py b/polygon/websocket/models/models.py index 210be2ad..0095a860 100644 --- a/polygon/websocket/models/models.py +++ b/polygon/websocket/models/models.py @@ -418,7 +418,6 @@ class FuturesAgg: high: Optional[float] = None low: Optional[float] = None transaction_count: Optional[int] = None - underlying_asset: Optional[str] = None start_timestamp: Optional[int] = None end_timestamp: Optional[int] = None @@ -434,7 +433,6 @@ def from_dict(d): high=d.get("h"), low=d.get("l"), transaction_count=d.get("n"), - underlying_asset=d.get("p"), start_timestamp=d.get("s"), end_timestamp=d.get("e"), ) From 6ca3fc30726c2db139e874438933f3533257c615 Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Thu, 17 Jul 2025 08:54:10 -0700 Subject: [PATCH 04/46] Sync benzinga, economy, furures, and tmx (#898) * Sync benzinga, economy, furures, and tmx * Adds any_of --- polygon/rest/__init__.py | 6 + polygon/rest/benzinga.py | 438 ++++++++++++++++++++++++++++++++ polygon/rest/economy.py | 87 +++++++ polygon/rest/futures.py | 4 +- polygon/rest/models/benzinga.py | 324 +++++++++++++++++++++++ polygon/rest/models/economy.py | 62 +++++ polygon/rest/models/tickers.py | 37 --- polygon/rest/models/tmx.py | 33 +++ polygon/rest/reference.py | 42 --- polygon/rest/tmx.py | 85 +++++++ 10 files changed, 1037 insertions(+), 81 deletions(-) create mode 100644 polygon/rest/benzinga.py create mode 100644 polygon/rest/economy.py create mode 100644 polygon/rest/models/benzinga.py create mode 100644 polygon/rest/models/economy.py create mode 100644 polygon/rest/models/tmx.py create mode 100644 polygon/rest/tmx.py diff --git a/polygon/rest/__init__.py b/polygon/rest/__init__.py index 46f2b98f..77f198ca 100644 --- a/polygon/rest/__init__.py +++ b/polygon/rest/__init__.py @@ -1,5 +1,8 @@ from .aggs import AggsClient from .futures import FuturesClient +from .benzinga import BenzingaClient +from .economy import EconomyClient +from .tmx import TmxClient from .trades import TradesClient from .quotes import QuotesClient from .snapshot import SnapshotClient @@ -25,6 +28,9 @@ class RESTClient( AggsClient, FuturesClient, + BenzingaClient, + EconomyClient, + TmxClient, TradesClient, QuotesClient, SnapshotClient, diff --git a/polygon/rest/benzinga.py b/polygon/rest/benzinga.py new file mode 100644 index 00000000..e0e5cf03 --- /dev/null +++ b/polygon/rest/benzinga.py @@ -0,0 +1,438 @@ +from typing import Optional, Any, Dict, List, Union, Iterator +from urllib3 import HTTPResponse +from datetime import datetime, date + +from .base import BaseClient +from .models.benzinga import ( + BenzingaAnalystInsight, + BenzingaAnalyst, + BenzingaConsensusRating, + BenzingaEarning, + BenzingaFirm, + BenzingaGuidance, + BenzingaNews, + BenzingaRating, +) +from .models.common import Sort +from .models.request import RequestOptionBuilder + + +class BenzingaClient(BaseClient): + """ + Client for the Benzinga REST Endpoints + (aligned with the paths from /benzinga/v1/...) + """ + + def list_benzinga_analyst_insights( + self, + date: Optional[Union[str, date]] = None, + date_any_of: Optional[str] = None, + date_gt: Optional[Union[str, date]] = None, + date_gte: Optional[Union[str, date]] = None, + date_lt: Optional[Union[str, date]] = None, + date_lte: Optional[Union[str, date]] = None, + ticker: Optional[str] = None, + ticker_any_of: Optional[str] = None, + ticker_gt: Optional[str] = None, + ticker_gte: Optional[str] = None, + ticker_lt: Optional[str] = None, + ticker_lte: Optional[str] = None, + last_updated: Optional[str] = None, + last_updated_any_of: Optional[str] = None, + last_updated_gt: Optional[str] = None, + last_updated_gte: Optional[str] = None, + last_updated_lt: Optional[str] = None, + last_updated_lte: Optional[str] = None, + firm: Optional[str] = None, + firm_any_of: Optional[str] = None, + firm_gt: Optional[str] = None, + firm_gte: Optional[str] = None, + firm_lt: Optional[str] = None, + firm_lte: Optional[str] = None, + rating_action: Optional[str] = None, + rating_action_any_of: Optional[str] = None, + rating_action_gt: Optional[str] = None, + rating_action_gte: Optional[str] = None, + rating_action_lt: Optional[str] = None, + rating_action_lte: Optional[str] = None, + benzinga_firm_id: Optional[str] = None, + benzinga_firm_id_any_of: Optional[str] = None, + benzinga_firm_id_gt: Optional[str] = None, + benzinga_firm_id_gte: Optional[str] = None, + benzinga_firm_id_lt: Optional[str] = None, + benzinga_firm_id_lte: Optional[str] = None, + benzinga_rating_id: Optional[str] = None, + benzinga_rating_id_any_of: Optional[str] = None, + benzinga_rating_id_gt: Optional[str] = None, + benzinga_rating_id_gte: Optional[str] = None, + benzinga_rating_id_lt: Optional[str] = None, + benzinga_rating_id_lte: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[Union[str, Sort]] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[Iterator[BenzingaAnalystInsight], HTTPResponse]: + """ + Endpoint: GET /benzinga/v1/analyst-insights + """ + url = "/benzinga/v1/analyst-insights" + return self._paginate( + path=url, + params=self._get_params(self.list_benzinga_analyst_insights, locals()), + raw=raw, + deserializer=BenzingaAnalystInsight.from_dict, + options=options, + ) + + def list_benzinga_analysts( + self, + benzinga_id: Optional[str] = None, + benzinga_id_any_of: Optional[str] = None, + benzinga_id_gt: Optional[str] = None, + benzinga_id_gte: Optional[str] = None, + benzinga_id_lt: Optional[str] = None, + benzinga_id_lte: Optional[str] = None, + benzinga_firm_id: Optional[str] = None, + benzinga_firm_id_any_of: Optional[str] = None, + benzinga_firm_id_gt: Optional[str] = None, + benzinga_firm_id_gte: Optional[str] = None, + benzinga_firm_id_lt: Optional[str] = None, + benzinga_firm_id_lte: Optional[str] = None, + firm_name: Optional[str] = None, + firm_name_any_of: Optional[str] = None, + firm_name_gt: Optional[str] = None, + firm_name_gte: Optional[str] = None, + firm_name_lt: Optional[str] = None, + firm_name_lte: Optional[str] = None, + full_name: Optional[str] = None, + full_name_any_of: Optional[str] = None, + full_name_gt: Optional[str] = None, + full_name_gte: Optional[str] = None, + full_name_lt: Optional[str] = None, + full_name_lte: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[Union[str, Sort]] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[Iterator[BenzingaAnalyst], HTTPResponse]: + """ + Endpoint: GET /benzinga/v1/analysts + """ + url = "/benzinga/v1/analysts" + return self._paginate( + path=url, + params=self._get_params(self.list_benzinga_analysts, locals()), + raw=raw, + deserializer=BenzingaAnalyst.from_dict, + options=options, + ) + + def list_benzinga_consensus_ratings( + self, + ticker: str, + date: Optional[Union[str, date]] = None, + date_gt: Optional[Union[str, date]] = None, + date_gte: Optional[Union[str, date]] = None, + date_lt: Optional[Union[str, date]] = None, + date_lte: Optional[Union[str, date]] = None, + limit: Optional[int] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[Iterator[BenzingaConsensusRating], HTTPResponse]: + """ + Endpoint: GET /benzinga/v1/consensus-ratings/{ticker} + """ + url = f"/benzinga/v1/consensus-ratings/{ticker}" + return self._paginate( + path=url, + params=self._get_params(self.list_benzinga_consensus_ratings, locals()), + raw=raw, + deserializer=BenzingaConsensusRating.from_dict, + options=options, + ) + + def list_benzinga_earnings( + self, + date: Optional[Union[str, date]] = None, + date_any_of: Optional[str] = None, + date_gt: Optional[Union[str, date]] = None, + date_gte: Optional[Union[str, date]] = None, + date_lt: Optional[Union[str, date]] = None, + date_lte: Optional[Union[str, date]] = None, + ticker: Optional[str] = None, + ticker_any_of: Optional[str] = None, + ticker_gt: Optional[str] = None, + ticker_gte: Optional[str] = None, + ticker_lt: Optional[str] = None, + ticker_lte: Optional[str] = None, + importance: Optional[int] = None, + importance_any_of: Optional[str] = None, + importance_gt: Optional[int] = None, + importance_gte: Optional[int] = None, + importance_lt: Optional[int] = None, + importance_lte: Optional[int] = None, + last_updated: Optional[str] = None, + last_updated_any_of: Optional[str] = None, + last_updated_gt: Optional[str] = None, + last_updated_gte: Optional[str] = None, + last_updated_lt: Optional[str] = None, + last_updated_lte: Optional[str] = None, + date_status: Optional[str] = None, + date_status_any_of: Optional[str] = None, + date_status_gt: Optional[str] = None, + date_status_gte: Optional[str] = None, + date_status_lt: Optional[str] = None, + date_status_lte: Optional[str] = None, + eps_surprise_percent: Optional[float] = None, + eps_surprise_percent_any_of: Optional[str] = None, + eps_surprise_percent_gt: Optional[float] = None, + eps_surprise_percent_gte: Optional[float] = None, + eps_surprise_percent_lt: Optional[float] = None, + eps_surprise_percent_lte: Optional[float] = None, + revenue_surprise_percent: Optional[float] = None, + revenue_surprise_percent_any_of: Optional[str] = None, + revenue_surprise_percent_gt: Optional[float] = None, + revenue_surprise_percent_gte: Optional[float] = None, + revenue_surprise_percent_lt: Optional[float] = None, + revenue_surprise_percent_lte: Optional[float] = None, + fiscal_year: Optional[int] = None, + fiscal_year_any_of: Optional[str] = None, + fiscal_year_gt: Optional[int] = None, + fiscal_year_gte: Optional[int] = None, + fiscal_year_lt: Optional[int] = None, + fiscal_year_lte: Optional[int] = None, + fiscal_period: Optional[str] = None, + fiscal_period_any_of: Optional[str] = None, + fiscal_period_gt: Optional[str] = None, + fiscal_period_gte: Optional[str] = None, + fiscal_period_lt: Optional[str] = None, + fiscal_period_lte: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[Union[str, Sort]] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[Iterator[BenzingaEarning], HTTPResponse]: + """ + Endpoint: GET /benzinga/v1/earnings + """ + url = "/benzinga/v1/earnings" + return self._paginate( + path=url, + params=self._get_params(self.list_benzinga_earnings, locals()), + raw=raw, + deserializer=BenzingaEarning.from_dict, + options=options, + ) + + def list_benzinga_firms( + self, + benzinga_id: Optional[str] = None, + benzinga_id_any_of: Optional[str] = None, + benzinga_id_gt: Optional[str] = None, + benzinga_id_gte: Optional[str] = None, + benzinga_id_lt: Optional[str] = None, + benzinga_id_lte: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[Union[str, Sort]] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[Iterator[BenzingaFirm], HTTPResponse]: + """ + Endpoint: GET /benzinga/v1/firms + """ + url = "/benzinga/v1/firms" + return self._paginate( + path=url, + params=self._get_params(self.list_benzinga_firms, locals()), + raw=raw, + deserializer=BenzingaFirm.from_dict, + options=options, + ) + + def list_benzinga_guidance( + self, + date: Optional[Union[str, date]] = None, + date_any_of: Optional[str] = None, + date_gt: Optional[Union[str, date]] = None, + date_gte: Optional[Union[str, date]] = None, + date_lt: Optional[Union[str, date]] = None, + date_lte: Optional[Union[str, date]] = None, + ticker: Optional[str] = None, + ticker_any_of: Optional[str] = None, + ticker_gt: Optional[str] = None, + ticker_gte: Optional[str] = None, + ticker_lt: Optional[str] = None, + ticker_lte: Optional[str] = None, + positioning: Optional[str] = None, + positioning_any_of: Optional[str] = None, + positioning_gt: Optional[str] = None, + positioning_gte: Optional[str] = None, + positioning_lt: Optional[str] = None, + positioning_lte: Optional[str] = None, + importance: Optional[int] = None, + importance_any_of: Optional[str] = None, + importance_gt: Optional[int] = None, + importance_gte: Optional[int] = None, + importance_lt: Optional[int] = None, + importance_lte: Optional[int] = None, + last_updated: Optional[str] = None, + last_updated_any_of: Optional[str] = None, + last_updated_gt: Optional[str] = None, + last_updated_gte: Optional[str] = None, + last_updated_lt: Optional[str] = None, + last_updated_lte: Optional[str] = None, + fiscal_year: Optional[int] = None, + fiscal_year_any_of: Optional[str] = None, + fiscal_year_gt: Optional[int] = None, + fiscal_year_gte: Optional[int] = None, + fiscal_year_lt: Optional[int] = None, + fiscal_year_lte: Optional[int] = None, + fiscal_period: Optional[str] = None, + fiscal_period_any_of: Optional[str] = None, + fiscal_period_gt: Optional[str] = None, + fiscal_period_gte: Optional[str] = None, + fiscal_period_lt: Optional[str] = None, + fiscal_period_lte: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[Union[str, Sort]] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[Iterator[BenzingaGuidance], HTTPResponse]: + """ + Endpoint: GET /benzinga/v1/guidance + """ + url = "/benzinga/v1/guidance" + return self._paginate( + path=url, + params=self._get_params(self.list_benzinga_guidance, locals()), + raw=raw, + deserializer=BenzingaGuidance.from_dict, + options=options, + ) + + def list_benzinga_news( + self, + published: Optional[str] = None, + published_any_of: Optional[str] = None, + published_gt: Optional[str] = None, + published_gte: Optional[str] = None, + published_lt: Optional[str] = None, + published_lte: Optional[str] = None, + last_updated: Optional[str] = None, + last_updated_any_of: Optional[str] = None, + last_updated_gt: Optional[str] = None, + last_updated_gte: Optional[str] = None, + last_updated_lt: Optional[str] = None, + last_updated_lte: Optional[str] = None, + tickers: Optional[str] = None, + tickers_all_of: Optional[str] = None, + tickers_any_of: Optional[str] = None, + channels: Optional[str] = None, + channels_all_of: Optional[str] = None, + channels_any_of: Optional[str] = None, + tags: Optional[str] = None, + tags_all_of: Optional[str] = None, + tags_any_of: Optional[str] = None, + author: Optional[str] = None, + author_any_of: Optional[str] = None, + author_gt: Optional[str] = None, + author_gte: Optional[str] = None, + author_lt: Optional[str] = None, + author_lte: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[Union[str, Sort]] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[Iterator[BenzingaNews], HTTPResponse]: + """ + Endpoint: GET /benzinga/v1/news + """ + url = "/benzinga/v1/news" + return self._paginate( + path=url, + params=self._get_params(self.list_benzinga_news, locals()), + raw=raw, + deserializer=BenzingaNews.from_dict, + options=options, + ) + + def list_benzinga_ratings( + self, + date: Optional[Union[str, date]] = None, + date_any_of: Optional[str] = None, + date_gt: Optional[Union[str, date]] = None, + date_gte: Optional[Union[str, date]] = None, + date_lt: Optional[Union[str, date]] = None, + date_lte: Optional[Union[str, date]] = None, + ticker: Optional[str] = None, + ticker_any_of: Optional[str] = None, + ticker_gt: Optional[str] = None, + ticker_gte: Optional[str] = None, + ticker_lt: Optional[str] = None, + ticker_lte: Optional[str] = None, + importance: Optional[int] = None, + importance_any_of: Optional[str] = None, + importance_gt: Optional[int] = None, + importance_gte: Optional[int] = None, + importance_lt: Optional[int] = None, + importance_lte: Optional[int] = None, + last_updated: Optional[str] = None, + last_updated_any_of: Optional[str] = None, + last_updated_gt: Optional[str] = None, + last_updated_gte: Optional[str] = None, + last_updated_lt: Optional[str] = None, + last_updated_lte: Optional[str] = None, + rating_action: Optional[str] = None, + rating_action_any_of: Optional[str] = None, + rating_action_gt: Optional[str] = None, + rating_action_gte: Optional[str] = None, + rating_action_lt: Optional[str] = None, + rating_action_lte: Optional[str] = None, + price_target_action: Optional[str] = None, + price_target_action_any_of: Optional[str] = None, + price_target_action_gt: Optional[str] = None, + price_target_action_gte: Optional[str] = None, + price_target_action_lt: Optional[str] = None, + price_target_action_lte: Optional[str] = None, + benzinga_id: Optional[str] = None, + benzinga_id_any_of: Optional[str] = None, + benzinga_id_gt: Optional[str] = None, + benzinga_id_gte: Optional[str] = None, + benzinga_id_lt: Optional[str] = None, + benzinga_id_lte: Optional[str] = None, + benzinga_analyst_id: Optional[str] = None, + benzinga_analyst_id_any_of: Optional[str] = None, + benzinga_analyst_id_gt: Optional[str] = None, + benzinga_analyst_id_gte: Optional[str] = None, + benzinga_analyst_id_lt: Optional[str] = None, + benzinga_analyst_id_lte: Optional[str] = None, + benzinga_firm_id: Optional[str] = None, + benzinga_firm_id_any_of: Optional[str] = None, + benzinga_firm_id_gt: Optional[str] = None, + benzinga_firm_id_gte: Optional[str] = None, + benzinga_firm_id_lt: Optional[str] = None, + benzinga_firm_id_lte: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[Union[str, Sort]] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[Iterator[BenzingaRating], HTTPResponse]: + """ + Endpoint: GET /benzinga/v1/ratings + """ + url = "/benzinga/v1/ratings" + return self._paginate( + path=url, + params=self._get_params(self.list_benzinga_ratings, locals()), + raw=raw, + deserializer=BenzingaRating.from_dict, + options=options, + ) diff --git a/polygon/rest/economy.py b/polygon/rest/economy.py new file mode 100644 index 00000000..f92afad5 --- /dev/null +++ b/polygon/rest/economy.py @@ -0,0 +1,87 @@ +from typing import Optional, Any, Dict, List, Union, Iterator +from urllib3 import HTTPResponse +from datetime import datetime, date + +from .base import BaseClient +from .models.economy import ( + FedInflation, + TreasuryYield, +) +from .models.common import Sort, Order +from .models.request import RequestOptionBuilder + + +class EconomyClient(BaseClient): + """ + Client for the Fed REST Endpoints + (aligned with the paths from /fed/v1/...) + """ + + def list_treasury_yields( + self, + date: Optional[str] = None, + date_any_of: Optional[str] = None, + date_gt: Optional[str] = None, + date_gte: Optional[str] = None, + date_lt: Optional[str] = None, + date_lte: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[Union[str, Sort]] = None, + order: Optional[Union[str, Order]] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[List[TreasuryYield], HTTPResponse]: + """ + Retrieve treasury yield data. + + :param date: Calendar date of the yield observation (YYYY-MM-DD). + :param date_any_of: Filter equal to any of the values. + :param date_gt: Filter for dates greater than the provided date. + :param date_gte: Filter for dates greater than or equal to the provided date. + :param date_lt: Filter for dates less than the provided date. + :param date_lte: Filter for dates less than or equal to the provided date. + :param limit: Limit the number of results returned. Default 100, max 50000. + :param sort: Field to sort by (e.g., "date"). Default "date". + :param order: Order results based on the sort field ("asc" or "desc"). Default "desc". + :param params: Additional query parameters. + :param raw: Return raw HTTPResponse object if True, else return List[TreasuryYield]. + :param options: RequestOptionBuilder for additional headers or params. + :return: A list of TreasuryYield objects or HTTPResponse if raw=True. + """ + url = "/fed/v1/treasury-yields" + + return self._paginate( + path=url, + params=self._get_params(self.list_treasury_yields, locals()), + deserializer=TreasuryYield.from_dict, + raw=raw, + result_key="results", + options=options, + ) + + def list_inflation( + self, + date: Optional[Union[str, date]] = None, + date_any_of: Optional[str] = None, + date_gt: Optional[Union[str, date]] = None, + date_gte: Optional[Union[str, date]] = None, + date_lt: Optional[Union[str, date]] = None, + date_lte: Optional[Union[str, date]] = None, + limit: Optional[int] = None, + sort: Optional[Union[str, Sort]] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[Iterator[FedInflation], HTTPResponse]: + """ + Endpoint: GET /fed/v1/inflation + """ + url = "/fed/v1/inflation" + return self._paginate( + path=url, + params=self._get_params(self.list_inflation, locals()), + raw=raw, + deserializer=FedInflation.from_dict, + options=options, + ) diff --git a/polygon/rest/futures.py b/polygon/rest/futures.py index 6de7669a..f651a405 100644 --- a/polygon/rest/futures.py +++ b/polygon/rest/futures.py @@ -113,7 +113,7 @@ def list_futures_products( name: Optional[str] = None, name_search: Optional[str] = None, as_of: Optional[Union[str, date]] = None, - market_identifier_code: Optional[str] = None, + trading_venue: Optional[str] = None, sector: Optional[str] = None, sub_sector: Optional[str] = None, asset_class: Optional[str] = None, @@ -233,7 +233,7 @@ def list_futures_trades( def list_futures_schedules( self, session_end_date: Optional[str] = None, - market_identifier_code: Optional[str] = None, + trading_venue: Optional[str] = None, limit: Optional[int] = None, sort: Optional[Union[str, Sort]] = None, params: Optional[Dict[str, Any]] = None, diff --git a/polygon/rest/models/benzinga.py b/polygon/rest/models/benzinga.py new file mode 100644 index 00000000..87287f2e --- /dev/null +++ b/polygon/rest/models/benzinga.py @@ -0,0 +1,324 @@ +from typing import Optional, List +from ...modelclass import modelclass + + +@modelclass +class BenzingaAnalystInsight: + benzinga_firm_id: Optional[str] = None + benzinga_id: Optional[str] = None + benzinga_rating_id: Optional[str] = None + company_name: Optional[str] = None + date: Optional[str] = None + firm: Optional[str] = None + insight: Optional[str] = None + last_updated: Optional[str] = None + price_target: Optional[float] = None + rating: Optional[str] = None + rating_action: Optional[str] = None + ticker: Optional[str] = None + + @staticmethod + def from_dict(d): + return BenzingaAnalystInsight( + benzinga_firm_id=d.get("benzinga_firm_id"), + benzinga_id=d.get("benzinga_id"), + benzinga_rating_id=d.get("benzinga_rating_id"), + company_name=d.get("company_name"), + date=d.get("date"), + firm=d.get("firm"), + insight=d.get("insight"), + last_updated=d.get("last_updated"), + price_target=d.get("price_target"), + rating=d.get("rating"), + rating_action=d.get("rating_action"), + ticker=d.get("ticker"), + ) + + +@modelclass +class BenzingaAnalyst: + benzinga_firm_id: Optional[str] = None + benzinga_id: Optional[str] = None + firm_name: Optional[str] = None + full_name: Optional[str] = None + last_updated: Optional[str] = None + overall_avg_return: Optional[float] = None + overall_avg_return_percentile: Optional[float] = None + overall_success_rate: Optional[float] = None + smart_score: Optional[float] = None + total_ratings: Optional[float] = None + total_ratings_percentile: Optional[float] = None + + @staticmethod + def from_dict(d): + return BenzingaAnalyst( + benzinga_firm_id=d.get("benzinga_firm_id"), + benzinga_id=d.get("benzinga_id"), + firm_name=d.get("firm_name"), + full_name=d.get("full_name"), + last_updated=d.get("last_updated"), + overall_avg_return=d.get("overall_avg_return"), + overall_avg_return_percentile=d.get("overall_avg_return_percentile"), + overall_success_rate=d.get("overall_success_rate"), + smart_score=d.get("smart_score"), + total_ratings=d.get("total_ratings"), + total_ratings_percentile=d.get("total_ratings_percentile"), + ) + + +@modelclass +class BenzingaConsensusRating: + buy_ratings: Optional[int] = None + consensus_price_target: Optional[float] = None + consensus_rating: Optional[str] = None + consensus_rating_value: Optional[float] = None + high_price_target: Optional[float] = None + hold_ratings: Optional[int] = None + low_price_target: Optional[float] = None + price_target_contributors: Optional[int] = None + ratings_contributors: Optional[int] = None + sell_ratings: Optional[int] = None + strong_buy_ratings: Optional[int] = None + strong_sell_ratings: Optional[int] = None + ticker: Optional[str] = None + + @staticmethod + def from_dict(d): + return BenzingaConsensusRating( + buy_ratings=d.get("buy_ratings"), + consensus_price_target=d.get("consensus_price_target"), + consensus_rating=d.get("consensus_rating"), + consensus_rating_value=d.get("consensus_rating_value"), + high_price_target=d.get("high_price_target"), + hold_ratings=d.get("hold_ratings"), + low_price_target=d.get("low_price_target"), + price_target_contributors=d.get("price_target_contributors"), + ratings_contributors=d.get("ratings_contributors"), + sell_ratings=d.get("sell_ratings"), + strong_buy_ratings=d.get("strong_buy_ratings"), + strong_sell_ratings=d.get("strong_sell_ratings"), + ticker=d.get("ticker"), + ) + + +@modelclass +class BenzingaEarning: + actual_eps: Optional[float] = None + actual_revenue: Optional[float] = None + benzinga_id: Optional[str] = None + company_name: Optional[str] = None + currency: Optional[str] = None + date: Optional[str] = None + date_status: Optional[str] = None + eps_method: Optional[str] = None + eps_surprise: Optional[float] = None + eps_surprise_percent: Optional[float] = None + estimated_eps: Optional[float] = None + estimated_revenue: Optional[float] = None + fiscal_period: Optional[str] = None + fiscal_year: Optional[int] = None + importance: Optional[int] = None + last_updated: Optional[str] = None + notes: Optional[str] = None + previous_eps: Optional[float] = None + previous_revenue: Optional[float] = None + revenue_method: Optional[str] = None + revenue_surprise: Optional[float] = None + revenue_surprise_percent: Optional[float] = None + ticker: Optional[str] = None + time: Optional[str] = None + + @staticmethod + def from_dict(d): + return BenzingaEarning( + actual_eps=d.get("actual_eps"), + actual_revenue=d.get("actual_revenue"), + benzinga_id=d.get("benzinga_id"), + company_name=d.get("company_name"), + currency=d.get("currency"), + date=d.get("date"), + date_status=d.get("date_status"), + eps_method=d.get("eps_method"), + eps_surprise=d.get("eps_surprise"), + eps_surprise_percent=d.get("eps_surprise_percent"), + estimated_eps=d.get("estimated_eps"), + estimated_revenue=d.get("estimated_revenue"), + fiscal_period=d.get("fiscal_period"), + fiscal_year=d.get("fiscal_year"), + importance=d.get("importance"), + last_updated=d.get("last_updated"), + notes=d.get("notes"), + previous_eps=d.get("previous_eps"), + previous_revenue=d.get("previous_revenue"), + revenue_method=d.get("revenue_method"), + revenue_surprise=d.get("revenue_surprise"), + revenue_surprise_percent=d.get("revenue_surprise_percent"), + ticker=d.get("ticker"), + time=d.get("time"), + ) + + +@modelclass +class BenzingaFirm: + benzinga_id: Optional[str] = None + currency: Optional[str] = None + last_updated: Optional[str] = None + name: Optional[str] = None + + @staticmethod + def from_dict(d): + return BenzingaFirm( + benzinga_id=d.get("benzinga_id"), + currency=d.get("currency"), + last_updated=d.get("last_updated"), + name=d.get("name"), + ) + + +@modelclass +class BenzingaGuidance: + benzinga_id: Optional[str] = None + company_name: Optional[str] = None + currency: Optional[str] = None + date: Optional[str] = None + eps_method: Optional[str] = None + estimated_eps_guidance: Optional[float] = None + estimated_revenue_guidance: Optional[float] = None + fiscal_period: Optional[str] = None + fiscal_year: Optional[int] = None + importance: Optional[int] = None + last_updated: Optional[str] = None + max_eps_guidance: Optional[float] = None + max_revenue_guidance: Optional[float] = None + min_eps_guidance: Optional[float] = None + min_revenue_guidance: Optional[float] = None + notes: Optional[str] = None + positioning: Optional[str] = None + previous_max_eps_guidance: Optional[float] = None + previous_max_revenue_guidance: Optional[float] = None + previous_min_eps_guidance: Optional[float] = None + previous_min_revenue_guidance: Optional[float] = None + release_type: Optional[str] = None + revenue_method: Optional[str] = None + ticker: Optional[str] = None + time: Optional[str] = None + + @staticmethod + def from_dict(d): + return BenzingaGuidance( + benzinga_id=d.get("benzinga_id"), + company_name=d.get("company_name"), + currency=d.get("currency"), + date=d.get("date"), + eps_method=d.get("eps_method"), + estimated_eps_guidance=d.get("estimated_eps_guidance"), + estimated_revenue_guidance=d.get("estimated_revenue_guidance"), + fiscal_period=d.get("fiscal_period"), + fiscal_year=d.get("fiscal_year"), + importance=d.get("importance"), + last_updated=d.get("last_updated"), + max_eps_guidance=d.get("max_eps_guidance"), + max_revenue_guidance=d.get("max_revenue_guidance"), + min_eps_guidance=d.get("min_eps_guidance"), + min_revenue_guidance=d.get("min_revenue_guidance"), + notes=d.get("notes"), + positioning=d.get("positioning"), + previous_max_eps_guidance=d.get("previous_max_eps_guidance"), + previous_max_revenue_guidance=d.get("previous_max_revenue_guidance"), + previous_min_eps_guidance=d.get("previous_min_eps_guidance"), + previous_min_revenue_guidance=d.get("previous_min_revenue_guidance"), + release_type=d.get("release_type"), + revenue_method=d.get("revenue_method"), + ticker=d.get("ticker"), + time=d.get("time"), + ) + + +@modelclass +class BenzingaNews: + author: Optional[str] = None + benzinga_id: Optional[int] = None + body: Optional[str] = None + channels: Optional[List[str]] = None + images: Optional[List[str]] = None + last_updated: Optional[str] = None + published: Optional[str] = None + tags: Optional[List[str]] = None + teaser: Optional[str] = None + tickers: Optional[List[str]] = None + title: Optional[str] = None + url: Optional[str] = None + + @staticmethod + def from_dict(d): + return BenzingaNews( + author=d.get("author"), + benzinga_id=d.get("benzinga_id"), + body=d.get("body"), + channels=d.get("channels", []), + images=d.get("images", []), + last_updated=d.get("last_updated"), + published=d.get("published"), + tags=d.get("tags", []), + teaser=d.get("teaser"), + tickers=d.get("tickers", []), + title=d.get("title"), + url=d.get("url"), + ) + + +@modelclass +class BenzingaRating: + adjusted_price_target: Optional[float] = None + analyst: Optional[str] = None + benzinga_analyst_id: Optional[str] = None + benzinga_calendar_url: Optional[str] = None + benzinga_firm_id: Optional[str] = None + benzinga_id: Optional[str] = None + benzinga_news_url: Optional[str] = None + company_name: Optional[str] = None + currency: Optional[str] = None + date: Optional[str] = None + firm: Optional[str] = None + importance: Optional[int] = None + last_updated: Optional[str] = None + notes: Optional[str] = None + previous_adjusted_price_target: Optional[float] = None + previous_price_target: Optional[float] = None + previous_rating: Optional[str] = None + price_percent_change: Optional[float] = None + price_target: Optional[float] = None + price_target_action: Optional[str] = None + rating: Optional[str] = None + rating_action: Optional[str] = None + ticker: Optional[str] = None + time: Optional[str] = None + + @staticmethod + def from_dict(d): + return BenzingaRating( + adjusted_price_target=d.get("adjusted_price_target"), + analyst=d.get("analyst"), + benzinga_analyst_id=d.get("benzinga_analyst_id"), + benzinga_calendar_url=d.get("benzinga_calendar_url"), + benzinga_firm_id=d.get("benzinga_firm_id"), + benzinga_id=d.get("benzinga_id"), + benzinga_news_url=d.get("benzinga_news_url"), + company_name=d.get("company_name"), + currency=d.get("currency"), + date=d.get("date"), + firm=d.get("firm"), + importance=d.get("importance"), + last_updated=d.get("last_updated"), + notes=d.get("notes"), + previous_adjusted_price_target=d.get("previous_adjusted_price_target"), + previous_price_target=d.get("previous_price_target"), + previous_rating=d.get("previous_rating"), + price_percent_change=d.get("price_percent_change"), + price_target=d.get("price_target"), + price_target_action=d.get("price_target_action"), + rating=d.get("rating"), + rating_action=d.get("rating_action"), + ticker=d.get("ticker"), + time=d.get("time"), + ) diff --git a/polygon/rest/models/economy.py b/polygon/rest/models/economy.py new file mode 100644 index 00000000..8793462a --- /dev/null +++ b/polygon/rest/models/economy.py @@ -0,0 +1,62 @@ +from typing import Optional +from ...modelclass import modelclass + + +@modelclass +class TreasuryYield: + """ + Treasury yield data for a specific date. + """ + + date: Optional[str] = None + yield_1_month: Optional[float] = None + yield_3_month: Optional[float] = None + yield_6_month: Optional[float] = None + yield_1_year: Optional[float] = None + yield_2_year: Optional[float] = None + yield_3_year: Optional[float] = None + yield_5_year: Optional[float] = None + yield_7_year: Optional[float] = None + yield_10_year: Optional[float] = None + yield_20_year: Optional[float] = None + yield_30_year: Optional[float] = None + + @staticmethod + def from_dict(d): + return TreasuryYield( + date=d.get("date"), + yield_1_month=d.get("yield_1_month"), + yield_3_month=d.get("yield_3_month"), + yield_6_month=d.get("yield_6_month"), + yield_1_year=d.get("yield_1_year"), + yield_2_year=d.get("yield_2_year"), + yield_3_year=d.get("yield_3_year"), + yield_5_year=d.get("yield_5_year"), + yield_7_year=d.get("yield_7_year"), + yield_10_year=d.get("yield_10_year"), + yield_20_year=d.get("yield_20_year"), + yield_30_year=d.get("yield_30_year"), + ) + + +@modelclass +class FedInflation: + cpi: Optional[float] = None + cpi_core: Optional[float] = None + cpi_year_over_year: Optional[float] = None + date: Optional[str] = None + pce: Optional[float] = None + pce_core: Optional[float] = None + pce_spending: Optional[float] = None + + @staticmethod + def from_dict(d): + return FedInflation( + cpi=d.get("cpi"), + cpi_core=d.get("cpi_core"), + cpi_year_over_year=d.get("cpi_year_over_year"), + date=d.get("date"), + pce=d.get("pce"), + pce_core=d.get("pce_core"), + pce_spending=d.get("pce_spending"), + ) diff --git a/polygon/rest/models/tickers.py b/polygon/rest/models/tickers.py index 76cb6f6f..e065826f 100644 --- a/polygon/rest/models/tickers.py +++ b/polygon/rest/models/tickers.py @@ -375,40 +375,3 @@ def from_dict(d): ticker=d.get("ticker"), total_volume=d.get("total_volume"), ) - - -@modelclass -class TreasuryYield: - """ - Treasury yield data for a specific date. - """ - - date: Optional[str] = None - yield_1_month: Optional[float] = None - yield_3_month: Optional[float] = None - yield_6_month: Optional[float] = None - yield_1_year: Optional[float] = None - yield_2_year: Optional[float] = None - yield_3_year: Optional[float] = None - yield_5_year: Optional[float] = None - yield_7_year: Optional[float] = None - yield_10_year: Optional[float] = None - yield_20_year: Optional[float] = None - yield_30_year: Optional[float] = None - - @staticmethod - def from_dict(d): - return TreasuryYield( - date=d.get("date"), - yield_1_month=d.get("yield_1_month"), - yield_3_month=d.get("yield_3_month"), - yield_6_month=d.get("yield_6_month"), - yield_1_year=d.get("yield_1_year"), - yield_2_year=d.get("yield_2_year"), - yield_3_year=d.get("yield_3_year"), - yield_5_year=d.get("yield_5_year"), - yield_7_year=d.get("yield_7_year"), - yield_10_year=d.get("yield_10_year"), - yield_20_year=d.get("yield_20_year"), - yield_30_year=d.get("yield_30_year"), - ) diff --git a/polygon/rest/models/tmx.py b/polygon/rest/models/tmx.py new file mode 100644 index 00000000..a42bd6b0 --- /dev/null +++ b/polygon/rest/models/tmx.py @@ -0,0 +1,33 @@ +from typing import Optional +from ...modelclass import modelclass + + +@modelclass +class TmxCorporateEvent: + company_name: Optional[str] = None + date: Optional[str] = None + isin: Optional[str] = None + name: Optional[str] = None + status: Optional[str] = None + ticker: Optional[str] = None + tmx_company_id: Optional[int] = None + tmx_record_id: Optional[str] = None + trading_venue: Optional[str] = None + type: Optional[str] = None + url: Optional[str] = None + + @staticmethod + def from_dict(d): + return TmxCorporateEvent( + company_name=d.get("company_name"), + date=d.get("date"), + isin=d.get("isin"), + name=d.get("name"), + status=d.get("status"), + ticker=d.get("ticker"), + tmx_company_id=d.get("tmx_company_id"), + tmx_record_id=d.get("tmx_record_id"), + trading_venue=d.get("trading_venue"), + type=d.get("type"), + url=d.get("url"), + ) diff --git a/polygon/rest/reference.py b/polygon/rest/reference.py index e1695cb2..e45ee744 100644 --- a/polygon/rest/reference.py +++ b/polygon/rest/reference.py @@ -24,7 +24,6 @@ OptionsContract, ShortInterest, ShortVolume, - TreasuryYield, ) from urllib3 import HTTPResponse from datetime import date @@ -696,44 +695,3 @@ def list_short_volume( result_key="results", options=options, ) - - def list_treasury_yields( - self, - date: Optional[str] = None, - date_gt: Optional[str] = None, - date_gte: Optional[str] = None, - date_lt: Optional[str] = None, - date_lte: Optional[str] = None, - limit: Optional[int] = None, - sort: Optional[Union[str, Sort]] = None, - order: Optional[Union[str, Order]] = None, - params: Optional[Dict[str, Any]] = None, - raw: bool = False, - options: Optional[RequestOptionBuilder] = None, - ) -> Union[List[TreasuryYield], HTTPResponse]: - """ - Retrieve treasury yield data. - - :param date: Calendar date of the yield observation (YYYY-MM-DD). - :param date_gt: Filter for dates greater than the provided date. - :param date_gte: Filter for dates greater than or equal to the provided date. - :param date_lt: Filter for dates less than the provided date. - :param date_lte: Filter for dates less than or equal to the provided date. - :param limit: Limit the number of results returned. Default 100, max 50000. - :param sort: Field to sort by (e.g., "date"). Default "date". - :param order: Order results based on the sort field ("asc" or "desc"). Default "desc". - :param params: Additional query parameters. - :param raw: Return raw HTTPResponse object if True, else return List[TreasuryYield]. - :param options: RequestOptionBuilder for additional headers or params. - :return: A list of TreasuryYield objects or HTTPResponse if raw=True. - """ - url = "/fed/v1/treasury-yields" - - return self._paginate( - path=url, - params=self._get_params(self.list_treasury_yields, locals()), - deserializer=TreasuryYield.from_dict, - raw=raw, - result_key="results", - options=options, - ) diff --git a/polygon/rest/tmx.py b/polygon/rest/tmx.py new file mode 100644 index 00000000..dd5687cd --- /dev/null +++ b/polygon/rest/tmx.py @@ -0,0 +1,85 @@ +from typing import Optional, Any, Dict, List, Union, Iterator +from urllib3 import HTTPResponse +from datetime import datetime, date + +from .base import BaseClient +from .models.tmx import ( + TmxCorporateEvent, +) +from .models.common import Sort +from .models.request import RequestOptionBuilder + + +class TmxClient(BaseClient): + """ + Client for the TMX REST Endpoints + (aligned with the paths from /tmx/v1/...) + """ + + def list_tmx_corporate_events( + self, + date: Optional[Union[str, date]] = None, + date_any_of: Optional[str] = None, + date_gt: Optional[Union[str, date]] = None, + date_gte: Optional[Union[str, date]] = None, + date_lt: Optional[Union[str, date]] = None, + date_lte: Optional[Union[str, date]] = None, + type: Optional[str] = None, + type_any_of: Optional[str] = None, + type_gt: Optional[str] = None, + type_gte: Optional[str] = None, + type_lt: Optional[str] = None, + type_lte: Optional[str] = None, + status: Optional[str] = None, + status_any_of: Optional[str] = None, + status_gt: Optional[str] = None, + status_gte: Optional[str] = None, + status_lt: Optional[str] = None, + status_lte: Optional[str] = None, + ticker: Optional[str] = None, + ticker_any_of: Optional[str] = None, + ticker_gt: Optional[str] = None, + ticker_gte: Optional[str] = None, + ticker_lt: Optional[str] = None, + ticker_lte: Optional[str] = None, + isin: Optional[str] = None, + isin_any_of: Optional[str] = None, + isin_gt: Optional[str] = None, + isin_gte: Optional[str] = None, + isin_lt: Optional[str] = None, + isin_lte: Optional[str] = None, + trading_venue: Optional[str] = None, + trading_venue_any_of: Optional[str] = None, + trading_venue_gt: Optional[str] = None, + trading_venue_gte: Optional[str] = None, + trading_venue_lt: Optional[str] = None, + trading_venue_lte: Optional[str] = None, + tmx_company_id: Optional[int] = None, + tmx_company_id_any_of: Optional[str] = None, + tmx_company_id_gt: Optional[int] = None, + tmx_company_id_gte: Optional[int] = None, + tmx_company_id_lt: Optional[int] = None, + tmx_company_id_lte: Optional[int] = None, + tmx_record_id: Optional[str] = None, + tmx_record_id_any_of: Optional[str] = None, + tmx_record_id_gt: Optional[str] = None, + tmx_record_id_gte: Optional[str] = None, + tmx_record_id_lt: Optional[str] = None, + tmx_record_id_lte: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[Union[str, Sort]] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[Iterator[TmxCorporateEvent], HTTPResponse]: + """ + Endpoint: GET /tmx/v1/corporate-events + """ + url = "/tmx/v1/corporate-events" + return self._paginate( + path=url, + params=self._get_params(self.list_tmx_corporate_events, locals()), + raw=raw, + deserializer=TmxCorporateEvent.from_dict, + options=options, + ) From 0835bba2b111f4c7b6ee9a4a0d9c293c78e2426f Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Tue, 23 Sep 2025 16:23:39 -0700 Subject: [PATCH 05/46] fix: make resolution optional in list_futures_aggregates to include in query params (#926) --- polygon/rest/futures.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/polygon/rest/futures.py b/polygon/rest/futures.py index f651a405..c232e1e3 100644 --- a/polygon/rest/futures.py +++ b/polygon/rest/futures.py @@ -26,7 +26,7 @@ class FuturesClient(BaseClient): def list_futures_aggregates( self, ticker: str, - resolution: str, + resolution: Optional[str] = None, window_start: Optional[str] = None, window_start_lt: Optional[str] = None, window_start_lte: Optional[str] = None, From ea4ce1130a92a91304dcb80377679214db798c73 Mon Sep 17 00:00:00 2001 From: Weston Platter Date: Tue, 7 Oct 2025 09:36:28 -0600 Subject: [PATCH 06/46] Fix typo in documentation URL for options snapshots (#929) --- examples/rest/options-snapshots_options_chain.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/rest/options-snapshots_options_chain.py b/examples/rest/options-snapshots_options_chain.py index 9ebdd93a..de890884 100644 --- a/examples/rest/options-snapshots_options_chain.py +++ b/examples/rest/options-snapshots_options_chain.py @@ -2,7 +2,7 @@ # docs # https://polygon.io/docs/options/get_v3_snapshot_options__underlyingasset -# ttps://polygon-api-client.readthedocs.io/en/latest/Snapshot.html#get-all-snapshots +# https://polygon-api-client.readthedocs.io/en/latest/Snapshot.html#get-all-snapshots # client = RESTClient("XXXXXX") # hardcoded api_key is used client = RESTClient() # POLYGON_API_KEY environment variable is used From f0559749c957e8cc60158190212d62a33095b153 Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Wed, 15 Oct 2025 09:38:41 -0700 Subject: [PATCH 07/46] feat: add support for stocks financials v1 endpoints (#933) --- polygon/rest/__init__.py | 2 + polygon/rest/financials.py | 320 ++++++++++++++++++++++++++++ polygon/rest/models/financials.py | 336 ++++++++++++++++++++++++++++++ 3 files changed, 658 insertions(+) create mode 100644 polygon/rest/financials.py diff --git a/polygon/rest/__init__.py b/polygon/rest/__init__.py index 77f198ca..db26bbca 100644 --- a/polygon/rest/__init__.py +++ b/polygon/rest/__init__.py @@ -1,5 +1,6 @@ from .aggs import AggsClient from .futures import FuturesClient +from .financials import FinancialsClient from .benzinga import BenzingaClient from .economy import EconomyClient from .tmx import TmxClient @@ -28,6 +29,7 @@ class RESTClient( AggsClient, FuturesClient, + FinancialsClient, BenzingaClient, EconomyClient, TmxClient, diff --git a/polygon/rest/financials.py b/polygon/rest/financials.py new file mode 100644 index 00000000..28ef5269 --- /dev/null +++ b/polygon/rest/financials.py @@ -0,0 +1,320 @@ +# financials.py +from typing import Optional, Any, Dict, List, Union, Iterator +from urllib3 import HTTPResponse +from datetime import datetime, date + +from .base import BaseClient +from .models.financials import ( + FinancialBalanceSheet, + FinancialCashFlowStatement, + FinancialIncomeStatement, + FinancialRatio, +) +from .models.common import Sort +from .models.request import RequestOptionBuilder + + +class FinancialsClient(BaseClient): + """ + Client for the Stocks Financials REST Endpoints + (aligned with the paths from /stocks/financials/v1/...) + """ + + def list_financials_balance_sheets( + self, + cik: Optional[str] = None, + cik_any_of: Optional[str] = None, + cik_gt: Optional[str] = None, + cik_gte: Optional[str] = None, + cik_lt: Optional[str] = None, + cik_lte: Optional[str] = None, + tickers: Optional[str] = None, + tickers_all_of: Optional[str] = None, + tickers_any_of: Optional[str] = None, + period_end: Optional[Union[str, date]] = None, + period_end_gt: Optional[Union[str, date]] = None, + period_end_gte: Optional[Union[str, date]] = None, + period_end_lt: Optional[Union[str, date]] = None, + period_end_lte: Optional[Union[str, date]] = None, + filing_date: Optional[Union[str, date]] = None, + filing_date_gt: Optional[Union[str, date]] = None, + filing_date_gte: Optional[Union[str, date]] = None, + filing_date_lt: Optional[Union[str, date]] = None, + filing_date_lte: Optional[Union[str, date]] = None, + fiscal_year: Optional[float] = None, + fiscal_year_gt: Optional[float] = None, + fiscal_year_gte: Optional[float] = None, + fiscal_year_lt: Optional[float] = None, + fiscal_year_lte: Optional[float] = None, + fiscal_quarter: Optional[float] = None, + fiscal_quarter_gt: Optional[float] = None, + fiscal_quarter_gte: Optional[float] = None, + fiscal_quarter_lt: Optional[float] = None, + fiscal_quarter_lte: Optional[float] = None, + timeframe: Optional[str] = None, + timeframe_any_of: Optional[str] = None, + timeframe_gt: Optional[str] = None, + timeframe_gte: Optional[str] = None, + timeframe_lt: Optional[str] = None, + timeframe_lte: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[Union[str, Sort]] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[Iterator[FinancialBalanceSheet], HTTPResponse]: + """ + Endpoint: GET /stocks/financials/v1/balance-sheets + """ + url = "/stocks/financials/v1/balance-sheets" + return self._paginate( + path=url, + params=self._get_params(self.list_financials_balance_sheets, locals()), + raw=raw, + deserializer=FinancialBalanceSheet.from_dict, + options=options, + ) + + def list_financials_cash_flow_statements( + self, + cik: Optional[str] = None, + cik_any_of: Optional[str] = None, + cik_gt: Optional[str] = None, + cik_gte: Optional[str] = None, + cik_lt: Optional[str] = None, + cik_lte: Optional[str] = None, + period_end: Optional[Union[str, date]] = None, + period_end_gt: Optional[Union[str, date]] = None, + period_end_gte: Optional[Union[str, date]] = None, + period_end_lt: Optional[Union[str, date]] = None, + period_end_lte: Optional[Union[str, date]] = None, + filing_date: Optional[Union[str, date]] = None, + filing_date_gt: Optional[Union[str, date]] = None, + filing_date_gte: Optional[Union[str, date]] = None, + filing_date_lt: Optional[Union[str, date]] = None, + filing_date_lte: Optional[Union[str, date]] = None, + tickers: Optional[str] = None, + tickers_all_of: Optional[str] = None, + tickers_any_of: Optional[str] = None, + fiscal_year: Optional[float] = None, + fiscal_year_gt: Optional[float] = None, + fiscal_year_gte: Optional[float] = None, + fiscal_year_lt: Optional[float] = None, + fiscal_year_lte: Optional[float] = None, + fiscal_quarter: Optional[float] = None, + fiscal_quarter_gt: Optional[float] = None, + fiscal_quarter_gte: Optional[float] = None, + fiscal_quarter_lt: Optional[float] = None, + fiscal_quarter_lte: Optional[float] = None, + timeframe: Optional[str] = None, + timeframe_any_of: Optional[str] = None, + timeframe_gt: Optional[str] = None, + timeframe_gte: Optional[str] = None, + timeframe_lt: Optional[str] = None, + timeframe_lte: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[Union[str, Sort]] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[Iterator[FinancialCashFlowStatement], HTTPResponse]: + """ + Endpoint: GET /stocks/financials/v1/cash-flow-statements + """ + url = "/stocks/financials/v1/cash-flow-statements" + return self._paginate( + path=url, + params=self._get_params( + self.list_financials_cash_flow_statements, locals() + ), + raw=raw, + deserializer=FinancialCashFlowStatement.from_dict, + options=options, + ) + + def list_financials_income_statements( + self, + cik: Optional[str] = None, + cik_any_of: Optional[str] = None, + cik_gt: Optional[str] = None, + cik_gte: Optional[str] = None, + cik_lt: Optional[str] = None, + cik_lte: Optional[str] = None, + tickers: Optional[str] = None, + tickers_all_of: Optional[str] = None, + tickers_any_of: Optional[str] = None, + period_end: Optional[Union[str, date]] = None, + period_end_gt: Optional[Union[str, date]] = None, + period_end_gte: Optional[Union[str, date]] = None, + period_end_lt: Optional[Union[str, date]] = None, + period_end_lte: Optional[Union[str, date]] = None, + filing_date: Optional[Union[str, date]] = None, + filing_date_gt: Optional[Union[str, date]] = None, + filing_date_gte: Optional[Union[str, date]] = None, + filing_date_lt: Optional[Union[str, date]] = None, + filing_date_lte: Optional[Union[str, date]] = None, + fiscal_year: Optional[float] = None, + fiscal_year_gt: Optional[float] = None, + fiscal_year_gte: Optional[float] = None, + fiscal_year_lt: Optional[float] = None, + fiscal_year_lte: Optional[float] = None, + fiscal_quarter: Optional[float] = None, + fiscal_quarter_gt: Optional[float] = None, + fiscal_quarter_gte: Optional[float] = None, + fiscal_quarter_lt: Optional[float] = None, + fiscal_quarter_lte: Optional[float] = None, + timeframe: Optional[str] = None, + timeframe_any_of: Optional[str] = None, + timeframe_gt: Optional[str] = None, + timeframe_gte: Optional[str] = None, + timeframe_lt: Optional[str] = None, + timeframe_lte: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[Union[str, Sort]] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[Iterator[FinancialIncomeStatement], HTTPResponse]: + """ + Endpoint: GET /stocks/financials/v1/income-statements + """ + url = "/stocks/financials/v1/income-statements" + return self._paginate( + path=url, + params=self._get_params(self.list_financials_income_statements, locals()), + raw=raw, + deserializer=FinancialIncomeStatement.from_dict, + options=options, + ) + + def list_financials_ratios( + self, + ticker: Optional[str] = None, + ticker_any_of: Optional[str] = None, + ticker_gt: Optional[str] = None, + ticker_gte: Optional[str] = None, + ticker_lt: Optional[str] = None, + ticker_lte: Optional[str] = None, + cik: Optional[str] = None, + cik_any_of: Optional[str] = None, + cik_gt: Optional[str] = None, + cik_gte: Optional[str] = None, + cik_lt: Optional[str] = None, + cik_lte: Optional[str] = None, + price: Optional[float] = None, + price_gt: Optional[float] = None, + price_gte: Optional[float] = None, + price_lt: Optional[float] = None, + price_lte: Optional[float] = None, + average_volume: Optional[float] = None, + average_volume_gt: Optional[float] = None, + average_volume_gte: Optional[float] = None, + average_volume_lt: Optional[float] = None, + average_volume_lte: Optional[float] = None, + market_cap: Optional[float] = None, + market_cap_gt: Optional[float] = None, + market_cap_gte: Optional[float] = None, + market_cap_lt: Optional[float] = None, + market_cap_lte: Optional[float] = None, + earnings_per_share: Optional[float] = None, + earnings_per_share_gt: Optional[float] = None, + earnings_per_share_gte: Optional[float] = None, + earnings_per_share_lt: Optional[float] = None, + earnings_per_share_lte: Optional[float] = None, + price_to_earnings: Optional[float] = None, + price_to_earnings_gt: Optional[float] = None, + price_to_earnings_gte: Optional[float] = None, + price_to_earnings_lt: Optional[float] = None, + price_to_earnings_lte: Optional[float] = None, + price_to_book: Optional[float] = None, + price_to_book_gt: Optional[float] = None, + price_to_book_gte: Optional[float] = None, + price_to_book_lt: Optional[float] = None, + price_to_book_lte: Optional[float] = None, + price_to_sales: Optional[float] = None, + price_to_sales_gt: Optional[float] = None, + price_to_sales_gte: Optional[float] = None, + price_to_sales_lt: Optional[float] = None, + price_to_sales_lte: Optional[float] = None, + price_to_cash_flow: Optional[float] = None, + price_to_cash_flow_gt: Optional[float] = None, + price_to_cash_flow_gte: Optional[float] = None, + price_to_cash_flow_lt: Optional[float] = None, + price_to_cash_flow_lte: Optional[float] = None, + price_to_free_cash_flow: Optional[float] = None, + price_to_free_cash_flow_gt: Optional[float] = None, + price_to_free_cash_flow_gte: Optional[float] = None, + price_to_free_cash_flow_lt: Optional[float] = None, + price_to_free_cash_flow_lte: Optional[float] = None, + dividend_yield: Optional[float] = None, + dividend_yield_gt: Optional[float] = None, + dividend_yield_gte: Optional[float] = None, + dividend_yield_lt: Optional[float] = None, + dividend_yield_lte: Optional[float] = None, + return_on_assets: Optional[float] = None, + return_on_assets_gt: Optional[float] = None, + return_on_assets_gte: Optional[float] = None, + return_on_assets_lt: Optional[float] = None, + return_on_assets_lte: Optional[float] = None, + return_on_equity: Optional[float] = None, + return_on_equity_gt: Optional[float] = None, + return_on_equity_gte: Optional[float] = None, + return_on_equity_lt: Optional[float] = None, + return_on_equity_lte: Optional[float] = None, + debt_to_equity: Optional[float] = None, + debt_to_equity_gt: Optional[float] = None, + debt_to_equity_gte: Optional[float] = None, + debt_to_equity_lt: Optional[float] = None, + debt_to_equity_lte: Optional[float] = None, + current: Optional[float] = None, + current_gt: Optional[float] = None, + current_gte: Optional[float] = None, + current_lt: Optional[float] = None, + current_lte: Optional[float] = None, + quick: Optional[float] = None, + quick_gt: Optional[float] = None, + quick_gte: Optional[float] = None, + quick_lt: Optional[float] = None, + quick_lte: Optional[float] = None, + cash: Optional[float] = None, + cash_gt: Optional[float] = None, + cash_gte: Optional[float] = None, + cash_lt: Optional[float] = None, + cash_lte: Optional[float] = None, + ev_to_sales: Optional[float] = None, + ev_to_sales_gt: Optional[float] = None, + ev_to_sales_gte: Optional[float] = None, + ev_to_sales_lt: Optional[float] = None, + ev_to_sales_lte: Optional[float] = None, + ev_to_ebitda: Optional[float] = None, + ev_to_ebitda_gt: Optional[float] = None, + ev_to_ebitda_gte: Optional[float] = None, + ev_to_ebitda_lt: Optional[float] = None, + ev_to_ebitda_lte: Optional[float] = None, + enterprise_value: Optional[float] = None, + enterprise_value_gt: Optional[float] = None, + enterprise_value_gte: Optional[float] = None, + enterprise_value_lt: Optional[float] = None, + enterprise_value_lte: Optional[float] = None, + free_cash_flow: Optional[float] = None, + free_cash_flow_gt: Optional[float] = None, + free_cash_flow_gte: Optional[float] = None, + free_cash_flow_lt: Optional[float] = None, + free_cash_flow_lte: Optional[float] = None, + limit: Optional[int] = None, + sort: Optional[Union[str, Sort]] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[Iterator[FinancialRatio], HTTPResponse]: + """ + Endpoint: GET /stocks/financials/v1/ratios + """ + url = "/stocks/financials/v1/ratios" + return self._paginate( + path=url, + params=self._get_params(self.list_financials_ratios, locals()), + raw=raw, + deserializer=FinancialRatio.from_dict, + options=options, + ) diff --git a/polygon/rest/models/financials.py b/polygon/rest/models/financials.py index 5443e4f6..99fb04b9 100644 --- a/polygon/rest/models/financials.py +++ b/polygon/rest/models/financials.py @@ -525,3 +525,339 @@ def from_dict(d: Optional[Dict[str, Any]]) -> "StockFinancial": source_filing_url=d.get("source_filing_url"), start_date=d.get("start_date"), ) + + +@modelclass +class FinancialBalanceSheet: + accounts_payable: Optional[float] = None + accrued_and_other_current_liabilities: Optional[float] = None + accumulated_other_comprehensive_income: Optional[float] = None + additional_paid_in_capital: Optional[float] = None + cash_and_equivalents: Optional[float] = None + cik: Optional[str] = None + commitments_and_contingencies: Optional[float] = None + common_stock: Optional[float] = None + debt_current: Optional[float] = None + deferred_revenue_current: Optional[float] = None + filing_date: Optional[str] = None + fiscal_quarter: Optional[float] = None + fiscal_year: Optional[float] = None + goodwill: Optional[float] = None + intangible_assets_net: Optional[float] = None + inventories: Optional[float] = None + long_term_debt_and_capital_lease_obligations: Optional[float] = None + noncontrolling_interest: Optional[float] = None + other_assets: Optional[float] = None + other_current_assets: Optional[float] = None + other_equity: Optional[float] = None + other_noncurrent_liabilities: Optional[float] = None + period_end: Optional[str] = None + preferred_stock: Optional[float] = None + property_plant_equipment_net: Optional[float] = None + receivables: Optional[float] = None + retained_earnings_deficit: Optional[float] = None + short_term_investments: Optional[float] = None + tickers: Optional[List[str]] = None + timeframe: Optional[str] = None + total_assets: Optional[float] = None + total_current_assets: Optional[float] = None + total_current_liabilities: Optional[float] = None + total_equity: Optional[float] = None + total_equity_attributable_to_parent: Optional[float] = None + total_liabilities: Optional[float] = None + total_liabilities_and_equity: Optional[float] = None + treasury_stock: Optional[float] = None + + @staticmethod + def from_dict(d): + return FinancialBalanceSheet( + accounts_payable=d.get("accounts_payable"), + accrued_and_other_current_liabilities=d.get( + "accrued_and_other_current_liabilities" + ), + accumulated_other_comprehensive_income=d.get( + "accumulated_other_comprehensive_income" + ), + additional_paid_in_capital=d.get("additional_paid_in_capital"), + cash_and_equivalents=d.get("cash_and_equivalents"), + cik=d.get("cik"), + commitments_and_contingencies=d.get("commitments_and_contingencies"), + common_stock=d.get("common_stock"), + debt_current=d.get("debt_current"), + deferred_revenue_current=d.get("deferred_revenue_current"), + filing_date=d.get("filing_date"), + fiscal_quarter=d.get("fiscal_quarter"), + fiscal_year=d.get("fiscal_year"), + goodwill=d.get("goodwill"), + intangible_assets_net=d.get("intangible_assets_net"), + inventories=d.get("inventories"), + long_term_debt_and_capital_lease_obligations=d.get( + "long_term_debt_and_capital_lease_obligations" + ), + noncontrolling_interest=d.get("noncontrolling_interest"), + other_assets=d.get("other_assets"), + other_current_assets=d.get("other_current_assets"), + other_equity=d.get("other_equity"), + other_noncurrent_liabilities=d.get("other_noncurrent_liabilities"), + period_end=d.get("period_end"), + preferred_stock=d.get("preferred_stock"), + property_plant_equipment_net=d.get("property_plant_equipment_net"), + receivables=d.get("receivables"), + retained_earnings_deficit=d.get("retained_earnings_deficit"), + short_term_investments=d.get("short_term_investments"), + tickers=d.get("tickers"), + timeframe=d.get("timeframe"), + total_assets=d.get("total_assets"), + total_current_assets=d.get("total_current_assets"), + total_current_liabilities=d.get("total_current_liabilities"), + total_equity=d.get("total_equity"), + total_equity_attributable_to_parent=d.get( + "total_equity_attributable_to_parent" + ), + total_liabilities=d.get("total_liabilities"), + total_liabilities_and_equity=d.get("total_liabilities_and_equity"), + treasury_stock=d.get("treasury_stock"), + ) + + +@modelclass +class FinancialCashFlowStatement: + cash_from_operating_activities_continuing_operations: Optional[float] = None + change_in_cash_and_equivalents: Optional[float] = None + change_in_other_operating_assets_and_liabilities_net: Optional[float] = None + cik: Optional[str] = None + depreciation_depletion_and_amortization: Optional[float] = None + dividends: Optional[float] = None + effect_of_currency_exchange_rate: Optional[float] = None + filing_date: Optional[str] = None + fiscal_quarter: Optional[float] = None + fiscal_year: Optional[float] = None + income_loss_from_discontinued_operations: Optional[float] = None + long_term_debt_issuances_repayments: Optional[float] = None + net_cash_from_financing_activities: Optional[float] = None + net_cash_from_financing_activities_continuing_operations: Optional[float] = None + net_cash_from_financing_activities_discontinued_operations: Optional[float] = None + net_cash_from_investing_activities: Optional[float] = None + net_cash_from_investing_activities_continuing_operations: Optional[float] = None + net_cash_from_investing_activities_discontinued_operations: Optional[float] = None + net_cash_from_operating_activities: Optional[float] = None + net_cash_from_operating_activities_discontinued_operations: Optional[float] = None + net_income: Optional[float] = None + noncontrolling_interests: Optional[float] = None + other_cash_adjustments: Optional[float] = None + other_financing_activities: Optional[float] = None + other_investing_activities: Optional[float] = None + other_operating_activities: Optional[float] = None + period_end: Optional[str] = None + purchase_of_property_plant_and_equipment: Optional[float] = None + sale_of_property_plant_and_equipment: Optional[float] = None + short_term_debt_issuances_repayments: Optional[float] = None + tickers: Optional[List[str]] = None + timeframe: Optional[str] = None + + @staticmethod + def from_dict(d): + return FinancialCashFlowStatement( + cash_from_operating_activities_continuing_operations=d.get( + "cash_from_operating_activities_continuing_operations" + ), + change_in_cash_and_equivalents=d.get("change_in_cash_and_equivalents"), + change_in_other_operating_assets_and_liabilities_net=d.get( + "change_in_other_operating_assets_and_liabilities_net" + ), + cik=d.get("cik"), + depreciation_depletion_and_amortization=d.get( + "depreciation_depletion_and_amortization" + ), + dividends=d.get("dividends"), + effect_of_currency_exchange_rate=d.get("effect_of_currency_exchange_rate"), + filing_date=d.get("filing_date"), + fiscal_quarter=d.get("fiscal_quarter"), + fiscal_year=d.get("fiscal_year"), + income_loss_from_discontinued_operations=d.get( + "income_loss_from_discontinued_operations" + ), + long_term_debt_issuances_repayments=d.get( + "long_term_debt_issuances_repayments" + ), + net_cash_from_financing_activities=d.get( + "net_cash_from_financing_activities" + ), + net_cash_from_financing_activities_continuing_operations=d.get( + "net_cash_from_financing_activities_continuing_operations" + ), + net_cash_from_financing_activities_discontinued_operations=d.get( + "net_cash_from_financing_activities_discontinued_operations" + ), + net_cash_from_investing_activities=d.get( + "net_cash_from_investing_activities" + ), + net_cash_from_investing_activities_continuing_operations=d.get( + "net_cash_from_investing_activities_continuing_operations" + ), + net_cash_from_investing_activities_discontinued_operations=d.get( + "net_cash_from_investing_activities_discontinued_operations" + ), + net_cash_from_operating_activities=d.get( + "net_cash_from_operating_activities" + ), + net_cash_from_operating_activities_discontinued_operations=d.get( + "net_cash_from_operating_activities_discontinued_operations" + ), + net_income=d.get("net_income"), + noncontrolling_interests=d.get("noncontrolling_interests"), + other_cash_adjustments=d.get("other_cash_adjustments"), + other_financing_activities=d.get("other_financing_activities"), + other_investing_activities=d.get("other_investing_activities"), + other_operating_activities=d.get("other_operating_activities"), + period_end=d.get("period_end"), + purchase_of_property_plant_and_equipment=d.get( + "purchase_of_property_plant_and_equipment" + ), + sale_of_property_plant_and_equipment=d.get( + "sale_of_property_plant_and_equipment" + ), + short_term_debt_issuances_repayments=d.get( + "short_term_debt_issuances_repayments" + ), + tickers=d.get("tickers"), + timeframe=d.get("timeframe"), + ) + + +@modelclass +class FinancialIncomeStatement: + basic_earnings_per_share: Optional[float] = None + basic_shares_outstanding: Optional[float] = None + cik: Optional[str] = None + consolidated_net_income_loss: Optional[float] = None + cost_of_revenue: Optional[float] = None + depreciation_depletion_amortization: Optional[float] = None + diluted_earnings_per_share: Optional[float] = None + diluted_shares_outstanding: Optional[float] = None + discontinued_operations: Optional[float] = None + ebitda: Optional[float] = None + equity_in_affiliates: Optional[float] = None + extraordinary_items: Optional[float] = None + filing_date: Optional[str] = None + fiscal_quarter: Optional[float] = None + fiscal_year: Optional[float] = None + gross_profit: Optional[float] = None + income_before_income_taxes: Optional[float] = None + income_taxes: Optional[float] = None + interest_expense: Optional[float] = None + interest_income: Optional[float] = None + net_income_loss_attributable_common_shareholders: Optional[float] = None + noncontrolling_interest: Optional[float] = None + operating_income: Optional[float] = None + other_income_expense: Optional[float] = None + other_operating_expenses: Optional[float] = None + period_end: Optional[str] = None + preferred_stock_dividends_declared: Optional[float] = None + research_development: Optional[float] = None + revenue: Optional[float] = None + selling_general_administrative: Optional[float] = None + tickers: Optional[List[str]] = None + timeframe: Optional[str] = None + total_operating_expenses: Optional[float] = None + total_other_income_expense: Optional[float] = None + + @staticmethod + def from_dict(d): + return FinancialIncomeStatement( + basic_earnings_per_share=d.get("basic_earnings_per_share"), + basic_shares_outstanding=d.get("basic_shares_outstanding"), + cik=d.get("cik"), + consolidated_net_income_loss=d.get("consolidated_net_income_loss"), + cost_of_revenue=d.get("cost_of_revenue"), + depreciation_depletion_amortization=d.get( + "depreciation_depletion_amortization" + ), + diluted_earnings_per_share=d.get("diluted_earnings_per_share"), + diluted_shares_outstanding=d.get("diluted_shares_outstanding"), + discontinued_operations=d.get("discontinued_operations"), + ebitda=d.get("ebitda"), + equity_in_affiliates=d.get("equity_in_affiliates"), + extraordinary_items=d.get("extraordinary_items"), + filing_date=d.get("filing_date"), + fiscal_quarter=d.get("fiscal_quarter"), + fiscal_year=d.get("fiscal_year"), + gross_profit=d.get("gross_profit"), + income_before_income_taxes=d.get("income_before_income_taxes"), + income_taxes=d.get("income_taxes"), + interest_expense=d.get("interest_expense"), + interest_income=d.get("interest_income"), + net_income_loss_attributable_common_shareholders=d.get( + "net_income_loss_attributable_common_shareholders" + ), + noncontrolling_interest=d.get("noncontrolling_interest"), + operating_income=d.get("operating_income"), + other_income_expense=d.get("other_income_expense"), + other_operating_expenses=d.get("other_operating_expenses"), + period_end=d.get("period_end"), + preferred_stock_dividends_declared=d.get( + "preferred_stock_dividends_declared" + ), + research_development=d.get("research_development"), + revenue=d.get("revenue"), + selling_general_administrative=d.get("selling_general_administrative"), + tickers=d.get("tickers"), + timeframe=d.get("timeframe"), + total_operating_expenses=d.get("total_operating_expenses"), + total_other_income_expense=d.get("total_other_income_expense"), + ) + + +@modelclass +class FinancialRatio: + average_volume: Optional[float] = None + cash: Optional[float] = None + cik: Optional[str] = None + current: Optional[float] = None + date: Optional[str] = None + debt_to_equity: Optional[float] = None + dividend_yield: Optional[float] = None + earnings_per_share: Optional[float] = None + enterprise_value: Optional[float] = None + ev_to_ebitda: Optional[float] = None + ev_to_sales: Optional[float] = None + free_cash_flow: Optional[float] = None + market_cap: Optional[float] = None + price: Optional[float] = None + price_to_book: Optional[float] = None + price_to_cash_flow: Optional[float] = None + price_to_earnings: Optional[float] = None + price_to_free_cash_flow: Optional[float] = None + price_to_sales: Optional[float] = None + quick: Optional[float] = None + return_on_assets: Optional[float] = None + return_on_equity: Optional[float] = None + ticker: Optional[str] = None + + @staticmethod + def from_dict(d): + return FinancialRatio( + average_volume=d.get("average_volume"), + cash=d.get("cash"), + cik=d.get("cik"), + current=d.get("current"), + date=d.get("date"), + debt_to_equity=d.get("debt_to_equity"), + dividend_yield=d.get("dividend_yield"), + earnings_per_share=d.get("earnings_per_share"), + enterprise_value=d.get("enterprise_value"), + ev_to_ebitda=d.get("ev_to_ebitda"), + ev_to_sales=d.get("ev_to_sales"), + free_cash_flow=d.get("free_cash_flow"), + market_cap=d.get("market_cap"), + price=d.get("price"), + price_to_book=d.get("price_to_book"), + price_to_cash_flow=d.get("price_to_cash_flow"), + price_to_earnings=d.get("price_to_earnings"), + price_to_free_cash_flow=d.get("price_to_free_cash_flow"), + price_to_sales=d.get("price_to_sales"), + quick=d.get("quick"), + return_on_assets=d.get("return_on_assets"), + return_on_equity=d.get("return_on_equity"), + ticker=d.get("ticker"), + ) From ab4e48b2e5ee723e60201811527676c93fbeaecc Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Wed, 15 Oct 2025 09:44:41 -0700 Subject: [PATCH 08/46] Adds support for Benzinga v2 news endpoint (#934) --- polygon/rest/benzinga.py | 43 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/polygon/rest/benzinga.py b/polygon/rest/benzinga.py index e0e5cf03..b3cb39ec 100644 --- a/polygon/rest/benzinga.py +++ b/polygon/rest/benzinga.py @@ -363,6 +363,49 @@ def list_benzinga_news( options=options, ) + def list_benzinga_news_v2( + self, + published: Optional[str] = None, + published_gt: Optional[str] = None, + published_gte: Optional[str] = None, + published_lt: Optional[str] = None, + published_lte: Optional[str] = None, + channels: Optional[str] = None, + channels_all_of: Optional[str] = None, + channels_any_of: Optional[str] = None, + tags: Optional[str] = None, + tags_all_of: Optional[str] = None, + tags_any_of: Optional[str] = None, + author: Optional[str] = None, + author_any_of: Optional[str] = None, + author_gt: Optional[str] = None, + author_gte: Optional[str] = None, + author_lt: Optional[str] = None, + author_lte: Optional[str] = None, + stocks: Optional[str] = None, + stocks_all_of: Optional[str] = None, + stocks_any_of: Optional[str] = None, + tickers: Optional[str] = None, + tickers_all_of: Optional[str] = None, + tickers_any_of: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[Union[str, Sort]] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[Iterator[BenzingaNews], HTTPResponse]: + """ + Endpoint: GET /benzinga/v2/news + """ + url = "/benzinga/v2/news" + return self._paginate( + path=url, + params=self._get_params(self.list_benzinga_news_v2, locals()), + raw=raw, + deserializer=BenzingaNews.from_dict, + options=options, + ) + def list_benzinga_ratings( self, date: Optional[Union[str, date]] = None, From 1b75d9a7fd83e230acb03003eb0988635c076682 Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Wed, 15 Oct 2025 09:52:42 -0700 Subject: [PATCH 09/46] fix: support Python 3.14 deferred annotations in modelclass decorator (#932) --- polygon/modelclass.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/polygon/modelclass.py b/polygon/modelclass.py index 5499d15c..117f7910 100644 --- a/polygon/modelclass.py +++ b/polygon/modelclass.py @@ -2,16 +2,16 @@ import typing from dataclasses import dataclass - _T = typing.TypeVar("_T") def modelclass(cls: typing.Type[_T]) -> typing.Type[_T]: cls = dataclass(cls) + type_hints = typing.get_type_hints(cls) attributes = [ a - for a in cls.__dict__["__annotations__"].keys() - if not a.startswith("__") and not inspect.isroutine(a) + for a in type_hints.keys() + if not a.startswith("__") and not inspect.isroutine(getattr(cls, a, None)) ] def init(self, *args, **kwargs): From 76020e248ed4d6b3794c12d6abcde3c438de742f Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Wed, 15 Oct 2025 09:55:00 -0700 Subject: [PATCH 10/46] Add individual futures exchange endpoints (CME, CBOT, NYMEX, COMEX) (#931) --- polygon/websocket/models/__init__.py | 24 ++++++++++++++++++++++++ polygon/websocket/models/common.py | 6 +++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/polygon/websocket/models/__init__.py b/polygon/websocket/models/__init__.py index 20c02ce1..629aca87 100644 --- a/polygon/websocket/models/__init__.py +++ b/polygon/websocket/models/__init__.py @@ -42,6 +42,30 @@ def from_dict(cls, data: Dict[str, Any]) -> "FromDictProtocol": "T": FuturesTrade, "Q": FuturesQuote, }, + Market.FuturesCME: { + "A": FuturesAgg, + "AM": FuturesAgg, + "T": FuturesTrade, + "Q": FuturesQuote, + }, + Market.FuturesCBOT: { + "A": FuturesAgg, + "AM": FuturesAgg, + "T": FuturesTrade, + "Q": FuturesQuote, + }, + Market.FuturesNYMEX: { + "A": FuturesAgg, + "AM": FuturesAgg, + "T": FuturesTrade, + "Q": FuturesQuote, + }, + Market.FuturesCOMEX: { + "A": FuturesAgg, + "AM": FuturesAgg, + "T": FuturesTrade, + "Q": FuturesQuote, + }, Market.Crypto: { "XA": CurrencyAgg, "XAS": CurrencyAgg, diff --git a/polygon/websocket/models/common.py b/polygon/websocket/models/common.py index 261f664b..bf8d18d6 100644 --- a/polygon/websocket/models/common.py +++ b/polygon/websocket/models/common.py @@ -28,7 +28,11 @@ class Market(Enum): Forex = "forex" Crypto = "crypto" Indices = "indices" - Futures = "futures" + Futures = "futures" # CME, CBOT, NYMEX, and COMEX + FuturesCME = "futures/cme" + FuturesCBOT = "futures/cbot" + FuturesNYMEX = "futures/nymex" + FuturesCOMEX = "futures/comex" class EventType(Enum): From 1c547dc40324cb30306465ab5d86ce5c379c2161 Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Wed, 15 Oct 2025 10:16:14 -0700 Subject: [PATCH 11/46] Update test.yml to remove python 3.8 (#936) --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f87d2e29..602340ce 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -14,7 +14,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, windows-latest] - python-version: ['3.8', '3.9', '3.10'] + python-version: ['3.9', '3.10', '3.11'] runs-on: ${{ matrix.os }} name: ${{ matrix.os }} Unit test ${{ matrix.python-version }} steps: From 153f4eac96314c80643d75171fd234f2e100c6e6 Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Wed, 15 Oct 2025 10:18:17 -0700 Subject: [PATCH 12/46] Upgrade to websockets 14+ and propagate ConnectionClosedError after max_reconnects (#935) --- README.md | 2 +- poetry.lock | 271 +++++++++++----------------------- polygon/websocket/__init__.py | 21 ++- pyproject.toml | 6 +- 4 files changed, 104 insertions(+), 196 deletions(-) diff --git a/README.md b/README.md index 7c0374e8..3ca7b71c 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Welcome to the official Python client library for the [Polygon](https://polygon. ## Prerequisites -Before installing the Polygon Python client, ensure your environment has Python 3.8 or higher. +Before installing the Polygon Python client, ensure your environment has Python 3.9 or higher. ## Install diff --git a/poetry.lock b/poetry.lock index 832ab989..6121d97b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.1.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.5 and should not be changed by hand. [[package]] name = "alabaster" @@ -6,7 +6,6 @@ version = "0.7.12" description = "A configurable sidebar-enabled Sphinx theme" optional = false python-versions = "*" -groups = ["dev"] files = [ {file = "alabaster-0.7.12-py2.py3-none-any.whl", hash = "sha256:446438bdcca0e05bd45ea2de1668c1d9b032e1a9154c2c259092d77031ddd359"}, {file = "alabaster-0.7.12.tar.gz", hash = "sha256:a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02"}, @@ -18,17 +17,16 @@ version = "22.1.0" description = "Classes Without Boilerplate" optional = false python-versions = ">=3.5" -groups = ["dev"] files = [ {file = "attrs-22.1.0-py2.py3-none-any.whl", hash = "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c"}, {file = "attrs-22.1.0.tar.gz", hash = "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6"}, ] [package.extras] -dev = ["cloudpickle ; platform_python_implementation == \"CPython\"", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy (>=0.900,!=0.940)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "sphinx", "sphinx-notfound-page", "zope.interface"] +dev = ["cloudpickle", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy (>=0.900,!=0.940)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "sphinx", "sphinx-notfound-page", "zope.interface"] docs = ["furo", "sphinx", "sphinx-notfound-page", "zope.interface"] -tests = ["cloudpickle ; platform_python_implementation == \"CPython\"", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "zope.interface"] -tests-no-zope = ["cloudpickle ; platform_python_implementation == \"CPython\"", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins"] +tests = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "zope.interface"] +tests-no-zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins"] [[package]] name = "Babel" @@ -36,7 +34,6 @@ version = "2.11.0" description = "Internationalization utilities" optional = false python-versions = ">=3.6" -groups = ["dev"] files = [ {file = "Babel-2.11.0-py3-none-any.whl", hash = "sha256:1ad3eca1c885218f6dce2ab67291178944f810a10a9b5f3cb8382a5a232b64fe"}, {file = "Babel-2.11.0.tar.gz", hash = "sha256:5ef4b3226b0180dedded4229651c8b0e1a3a6a2837d45a073272f313e4cf97f6"}, @@ -51,7 +48,6 @@ version = "24.8.0" description = "The uncompromising code formatter." optional = false python-versions = ">=3.8" -groups = ["dev"] files = [ {file = "black-24.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:09cdeb74d494ec023ded657f7092ba518e8cf78fa8386155e4a03fdcc44679e6"}, {file = "black-24.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:81c6742da39f33b08e791da38410f32e27d632260e599df7245cccee2064afeb"}, @@ -88,7 +84,7 @@ typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""} [package.extras] colorama = ["colorama (>=0.4.3)"] -d = ["aiohttp (>=3.7.4) ; sys_platform != \"win32\" or implementation_name != \"pypy\"", "aiohttp (>=3.7.4,!=3.9.0) ; sys_platform == \"win32\" and implementation_name == \"pypy\""] +d = ["aiohttp (>=3.7.4)", "aiohttp (>=3.7.4,!=3.9.0)"] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2)"] @@ -98,7 +94,6 @@ version = "2025.6.15" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.7" -groups = ["main", "dev"] files = [ {file = "certifi-2025.6.15-py3-none-any.whl", hash = "sha256:2e0c7ce7cb5d8f8634ca55d2ba7e6ec2689a2fd6537d8dec1296a477a4910057"}, {file = "certifi-2025.6.15.tar.gz", hash = "sha256:d747aa5a8b9bbbb1bb8c22bb13e22bd1f18e9796defa16bab421f7f7a317323b"}, @@ -110,7 +105,6 @@ version = "2.1.1" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.6.0" -groups = ["dev"] files = [ {file = "charset-normalizer-2.1.1.tar.gz", hash = "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845"}, {file = "charset_normalizer-2.1.1-py3-none-any.whl", hash = "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"}, @@ -125,7 +119,6 @@ version = "8.1.3" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" -groups = ["dev"] files = [ {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, @@ -140,8 +133,6 @@ version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -groups = ["dev"] -markers = "sys_platform == \"win32\" or platform_system == \"Windows\"" files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, @@ -153,7 +144,6 @@ version = "0.18.1" description = "Docutils -- Python Documentation Utilities" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -groups = ["dev"] files = [ {file = "docutils-0.18.1-py2.py3-none-any.whl", hash = "sha256:23010f129180089fbcd3bc08cfefccb3b890b0050e1ca00c867036e9d161b98c"}, {file = "docutils-0.18.1.tar.gz", hash = "sha256:679987caf361a7539d76e584cbeddc311e3aee937877c87346f31debc63e9d06"}, @@ -165,7 +155,6 @@ version = "2.1.3" description = "URL manipulation made simple." optional = false python-versions = "*" -groups = ["dev"] files = [ {file = "furl-2.1.3-py2.py3-none-any.whl", hash = "sha256:9ab425062c4217f9802508e45feb4a83e54324273ac4b202f1850363309666c0"}, {file = "furl-2.1.3.tar.gz", hash = "sha256:5a6188fe2666c484a12159c18be97a1977a71d632ef5bb867ef15f54af39cc4e"}, @@ -181,7 +170,6 @@ version = "3.7" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.5" -groups = ["dev"] files = [ {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, @@ -193,7 +181,6 @@ version = "1.4.1" description = "Getting image size from png/jpeg/jpeg2000/gif file" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -groups = ["dev"] files = [ {file = "imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b"}, {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"}, @@ -205,8 +192,6 @@ version = "5.1.0" description = "Read metadata from Python packages" optional = false python-versions = ">=3.7" -groups = ["dev"] -markers = "python_version < \"3.10\"" files = [ {file = "importlib_metadata-5.1.0-py3-none-any.whl", hash = "sha256:d84d17e21670ec07990e1044a99efe8d615d860fd176fc29ef5c306068fda313"}, {file = "importlib_metadata-5.1.0.tar.gz", hash = "sha256:d5059f9f1e8e41f80e9c56c2ee58811450c31984dfa625329ffd7c0dad88a73b"}, @@ -218,27 +203,7 @@ zipp = ">=0.5" [package.extras] docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] perf = ["ipython"] -testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3) ; python_version < \"3.9\"", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7) ; platform_python_implementation != \"PyPy\"", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8 ; python_version < \"3.12\"", "pytest-mypy (>=0.9.1) ; platform_python_implementation != \"PyPy\"", "pytest-perf (>=0.9.2)"] - -[[package]] -name = "importlib-resources" -version = "5.10.0" -description = "Read resources from Python packages" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -markers = "python_version < \"3.9\"" -files = [ - {file = "importlib_resources-5.10.0-py3-none-any.whl", hash = "sha256:ee17ec648f85480d523596ce49eae8ead87d5631ae1551f913c0100b5edd3437"}, - {file = "importlib_resources-5.10.0.tar.gz", hash = "sha256:c01b1b94210d9849f286b86bb51bcea7cd56dde0600d8db721d7b81330711668"}, -] - -[package.dependencies] -zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] -testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7) ; platform_python_implementation != \"PyPy\"", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1) ; platform_python_implementation != \"PyPy\""] +testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)"] [[package]] name = "jinja2" @@ -246,7 +211,6 @@ version = "3.1.6" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" -groups = ["dev"] files = [ {file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"}, {file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"}, @@ -264,7 +228,6 @@ version = "4.17.1" description = "An implementation of JSON Schema validation for Python" optional = false python-versions = ">=3.7" -groups = ["dev"] files = [ {file = "jsonschema-4.17.1-py3-none-any.whl", hash = "sha256:410ef23dcdbca4eaedc08b850079179883c2ed09378bd1f760d4af4aacfa28d7"}, {file = "jsonschema-4.17.1.tar.gz", hash = "sha256:05b2d22c83640cde0b7e0aa329ca7754fbd98ea66ad8ae24aa61328dfe057fa3"}, @@ -272,8 +235,6 @@ files = [ [package.dependencies] attrs = ">=17.4.0" -importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} -pkgutil-resolve-name = {version = ">=1.3.10", markers = "python_version < \"3.9\""} pyrsistent = ">=0.14.0,<0.17.0 || >0.17.0,<0.17.1 || >0.17.1,<0.17.2 || >0.17.2" [package.extras] @@ -286,7 +247,6 @@ version = "2.1.1" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.7" -groups = ["dev"] files = [ {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"}, @@ -336,7 +296,6 @@ version = "1.13.0" description = "Optional static typing for Python" optional = false python-versions = ">=3.8" -groups = ["dev"] files = [ {file = "mypy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6607e0f1dd1fb7f0aca14d936d13fd19eba5e17e1cd2a14f808fa5f8f6d8f60a"}, {file = "mypy-1.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8a21be69bd26fa81b1f80a61ee7ab05b076c674d9b18fb56239d72e21d9f4c80"}, @@ -390,7 +349,6 @@ version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." optional = false python-versions = ">=3.5" -groups = ["dev"] files = [ {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, @@ -402,7 +360,6 @@ version = "1.0.1" description = "Ordered Multivalue Dictionary" optional = false python-versions = "*" -groups = ["dev"] files = [ {file = "orderedmultidict-1.0.1-py2.py3-none-any.whl", hash = "sha256:43c839a17ee3cdd62234c47deca1a8508a3f2ca1d0678a3bf791c87cf84adbf3"}, {file = "orderedmultidict-1.0.1.tar.gz", hash = "sha256:04070bbb5e87291cc9bfa51df413677faf2141c73c61d2a5f7b26bea3cd882ad"}, @@ -417,7 +374,6 @@ version = "3.10.15" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false python-versions = ">=3.8" -groups = ["dev"] files = [ {file = "orjson-3.10.15-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:552c883d03ad185f720d0c09583ebde257e41b9521b74ff40e08b7dec4559c04"}, {file = "orjson-3.10.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:616e3e8d438d02e4854f70bfdc03a6bcdb697358dbaa6bcd19cbe24d24ece1f8"}, @@ -506,7 +462,6 @@ version = "23.1" description = "Core utilities for Python packages" optional = false python-versions = ">=3.7" -groups = ["dev"] files = [ {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, @@ -518,32 +473,17 @@ version = "0.10.2" description = "Utility library for gitignore style pattern matching of file paths." optional = false python-versions = ">=3.7" -groups = ["dev"] files = [ {file = "pathspec-0.10.2-py3-none-any.whl", hash = "sha256:88c2606f2c1e818b978540f73ecc908e13999c6c3a383daf3705652ae79807a5"}, {file = "pathspec-0.10.2.tar.gz", hash = "sha256:8f6bf73e5758fd365ef5d58ce09ac7c27d2833a8d7da51712eac6e27e35141b0"}, ] -[[package]] -name = "pkgutil_resolve_name" -version = "1.3.10" -description = "Resolve a name to an object." -optional = false -python-versions = ">=3.6" -groups = ["dev"] -markers = "python_version < \"3.9\"" -files = [ - {file = "pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e"}, - {file = "pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174"}, -] - [[package]] name = "platformdirs" version = "2.5.4" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." optional = false python-versions = ">=3.7" -groups = ["dev"] files = [ {file = "platformdirs-2.5.4-py3-none-any.whl", hash = "sha256:af0276409f9a02373d540bf8480021a048711d572745aef4b7842dad245eba10"}, {file = "platformdirs-2.5.4.tar.gz", hash = "sha256:1006647646d80f16130f052404c6b901e80ee4ed6bef6792e1f238a8969106f7"}, @@ -559,7 +499,6 @@ version = "2.0.1" description = "HTTP traffic mocking and expectations made easy" optional = false python-versions = ">=3.8" -groups = ["dev"] files = [ {file = "pook-2.0.1-py3-none-any.whl", hash = "sha256:30d73c95e0520f45c1e3889f3bf486e990b6f04b4915aa9daf86cf0d8136b2e1"}, {file = "pook-2.0.1.tar.gz", hash = "sha256:e04c0e698f256438b4dfbf3ab1b27559f0ec25e42176823167f321f4e8b9c9e4"}, @@ -576,14 +515,13 @@ version = "2.15.0" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.7" -groups = ["dev"] files = [ {file = "Pygments-2.15.0-py3-none-any.whl", hash = "sha256:77a3299119af881904cd5ecd1ac6a66214b6e9bed1f2db16993b54adede64094"}, {file = "Pygments-2.15.0.tar.gz", hash = "sha256:f7e36cffc4c517fbc252861b9a6e4644ca0e5abadf9a113c72d1358ad09b9500"}, ] [package.extras] -plugins = ["importlib-metadata ; python_version < \"3.8\""] +plugins = ["importlib-metadata"] [[package]] name = "pyrsistent" @@ -591,7 +529,6 @@ version = "0.19.2" description = "Persistent/Functional/Immutable data structures" optional = false python-versions = ">=3.7" -groups = ["dev"] files = [ {file = "pyrsistent-0.19.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d6982b5a0237e1b7d876b60265564648a69b14017f3b5f908c5be2de3f9abb7a"}, {file = "pyrsistent-0.19.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:187d5730b0507d9285a96fca9716310d572e5464cadd19f22b63a6976254d77a"}, @@ -623,7 +560,6 @@ version = "2022.6" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" -groups = ["dev"] files = [ {file = "pytz-2022.6-py2.py3-none-any.whl", hash = "sha256:222439474e9c98fced559f1709d89e6c9cbf8d79c794ff3eb9f8800064291427"}, {file = "pytz-2022.6.tar.gz", hash = "sha256:e89512406b793ca39f5971bc999cc538ce125c0e51c27941bef4568b460095e2"}, @@ -635,7 +571,6 @@ version = "2.32.4" description = "Python HTTP for Humans." optional = false python-versions = ">=3.8" -groups = ["dev"] files = [ {file = "requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c"}, {file = "requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422"}, @@ -657,7 +592,6 @@ version = "1.16.0" description = "Python 2 and 3 compatibility utilities" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" -groups = ["dev"] files = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, @@ -669,7 +603,6 @@ version = "2.2.0" description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." optional = false python-versions = "*" -groups = ["dev"] files = [ {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, @@ -681,7 +614,6 @@ version = "7.1.2" description = "Python documentation generator" optional = false python-versions = ">=3.8" -groups = ["dev"] files = [ {file = "sphinx-7.1.2-py3-none-any.whl", hash = "sha256:d170a81825b2fcacb6dfd5a0d7f578a053e45d3f2b153fecc948c37344eb4cbe"}, {file = "sphinx-7.1.2.tar.gz", hash = "sha256:780f4d32f1d7d1126576e0e5ecc19dc32ab76cd24e950228dcf7b1f6d3d9e22f"}, @@ -717,7 +649,6 @@ version = "2.0.1" description = "Type hints (PEP 484) support for the Sphinx autodoc extension" optional = false python-versions = ">=3.8" -groups = ["dev"] files = [ {file = "sphinx_autodoc_typehints-2.0.1-py3-none-any.whl", hash = "sha256:f73ae89b43a799e587e39266672c1075b2ef783aeb382d3ebed77c38a3fc0149"}, {file = "sphinx_autodoc_typehints-2.0.1.tar.gz", hash = "sha256:60ed1e3b2c970acc0aa6e877be42d48029a9faec7378a17838716cacd8c10b12"}, @@ -737,7 +668,6 @@ version = "3.0.2" description = "Read the Docs theme for Sphinx" optional = false python-versions = ">=3.8" -groups = ["dev"] files = [ {file = "sphinx_rtd_theme-3.0.2-py2.py3-none-any.whl", hash = "sha256:422ccc750c3a3a311de4ae327e82affdaf59eb695ba4936538552f3b00f4ee13"}, {file = "sphinx_rtd_theme-3.0.2.tar.gz", hash = "sha256:b7457bc25dda723b20b086a670b9953c859eab60a2a03ee8eb2bb23e176e5f85"}, @@ -757,7 +687,6 @@ version = "1.0.2" description = "sphinxcontrib-applehelp is a sphinx extension which outputs Apple help books" optional = false python-versions = ">=3.5" -groups = ["dev"] files = [ {file = "sphinxcontrib-applehelp-1.0.2.tar.gz", hash = "sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58"}, {file = "sphinxcontrib_applehelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:806111e5e962be97c29ec4c1e7fe277bfd19e9652fb1a4392105b43e01af885a"}, @@ -773,7 +702,6 @@ version = "1.0.2" description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document." optional = false python-versions = ">=3.5" -groups = ["dev"] files = [ {file = "sphinxcontrib-devhelp-1.0.2.tar.gz", hash = "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"}, {file = "sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e"}, @@ -789,7 +717,6 @@ version = "2.0.0" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" optional = false python-versions = ">=3.6" -groups = ["dev"] files = [ {file = "sphinxcontrib-htmlhelp-2.0.0.tar.gz", hash = "sha256:f5f8bb2d0d629f398bf47d0d69c07bc13b65f75a81ad9e2f71a63d4b7a2f6db2"}, {file = "sphinxcontrib_htmlhelp-2.0.0-py2.py3-none-any.whl", hash = "sha256:d412243dfb797ae3ec2b59eca0e52dac12e75a241bf0e4eb861e450d06c6ed07"}, @@ -805,7 +732,6 @@ version = "4.1" description = "Extension to include jQuery on newer Sphinx releases" optional = false python-versions = ">=2.7" -groups = ["dev"] files = [ {file = "sphinxcontrib-jquery-4.1.tar.gz", hash = "sha256:1620739f04e36a2c779f1a131a2dfd49b2fd07351bf1968ced074365933abc7a"}, {file = "sphinxcontrib_jquery-4.1-py2.py3-none-any.whl", hash = "sha256:f936030d7d0147dd026a4f2b5a57343d233f1fc7b363f68b3d4f1cb0993878ae"}, @@ -820,7 +746,6 @@ version = "1.0.1" description = "A sphinx extension which renders display math in HTML via JavaScript" optional = false python-versions = ">=3.5" -groups = ["dev"] files = [ {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"}, {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"}, @@ -835,7 +760,6 @@ version = "1.0.3" description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document." optional = false python-versions = ">=3.5" -groups = ["dev"] files = [ {file = "sphinxcontrib-qthelp-1.0.3.tar.gz", hash = "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72"}, {file = "sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6"}, @@ -851,7 +775,6 @@ version = "1.1.5" description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)." optional = false python-versions = ">=3.5" -groups = ["dev"] files = [ {file = "sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"}, {file = "sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd"}, @@ -867,8 +790,6 @@ version = "2.0.1" description = "A lil' TOML parser" optional = false python-versions = ">=3.7" -groups = ["dev"] -markers = "python_version < \"3.11\"" files = [ {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, @@ -880,7 +801,6 @@ version = "2021.10.8.3" description = "Typing stubs for certifi" optional = false python-versions = "*" -groups = ["dev"] files = [ {file = "types-certifi-2021.10.8.3.tar.gz", hash = "sha256:72cf7798d165bc0b76e1c10dd1ea3097c7063c42c21d664523b928e88b554a4f"}, {file = "types_certifi-2021.10.8.3-py3-none-any.whl", hash = "sha256:b2d1e325e69f71f7c78e5943d410e650b4707bb0ef32e4ddf3da37f54176e88a"}, @@ -892,7 +812,6 @@ version = "75.8.0.20250110" description = "Typing stubs for setuptools" optional = false python-versions = ">=3.8" -groups = ["dev"] files = [ {file = "types_setuptools-75.8.0.20250110-py3-none-any.whl", hash = "sha256:a9f12980bbf9bcdc23ecd80755789085bad6bfce4060c2275bc2b4ca9f2bc480"}, {file = "types_setuptools-75.8.0.20250110.tar.gz", hash = "sha256:96f7ec8bbd6e0a54ea180d66ad68ad7a1d7954e7281a710ea2de75e355545271"}, @@ -904,7 +823,6 @@ version = "1.26.25.14" description = "Typing stubs for urllib3" optional = false python-versions = "*" -groups = ["dev"] files = [ {file = "types-urllib3-1.26.25.14.tar.gz", hash = "sha256:229b7f577c951b8c1b92c1bc2b2fdb0b49847bd2af6d1cc2a2e3dd340f3bda8f"}, {file = "types_urllib3-1.26.25.14-py3-none-any.whl", hash = "sha256:9683bbb7fb72e32bfe9d2be6e04875fbe1b3eeec3cbb4ea231435aa7fd6b4f0e"}, @@ -916,7 +834,6 @@ version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" -groups = ["dev"] files = [ {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, @@ -928,112 +845,93 @@ version = "2.2.3" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" -groups = ["main", "dev"] files = [ {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, ] [package.extras] -brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] [[package]] name = "websockets" -version = "13.1" +version = "15.0.1" description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" optional = false -python-versions = ">=3.8" -groups = ["main"] -files = [ - {file = "websockets-13.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f48c749857f8fb598fb890a75f540e3221d0976ed0bf879cf3c7eef34151acee"}, - {file = "websockets-13.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c7e72ce6bda6fb9409cc1e8164dd41d7c91466fb599eb047cfda72fe758a34a7"}, - {file = "websockets-13.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f779498eeec470295a2b1a5d97aa1bc9814ecd25e1eb637bd9d1c73a327387f6"}, - {file = "websockets-13.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4676df3fe46956fbb0437d8800cd5f2b6d41143b6e7e842e60554398432cf29b"}, - {file = "websockets-13.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7affedeb43a70351bb811dadf49493c9cfd1ed94c9c70095fd177e9cc1541fa"}, - {file = "websockets-13.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1971e62d2caa443e57588e1d82d15f663b29ff9dfe7446d9964a4b6f12c1e700"}, - {file = "websockets-13.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5f2e75431f8dc4a47f31565a6e1355fb4f2ecaa99d6b89737527ea917066e26c"}, - {file = "websockets-13.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:58cf7e75dbf7e566088b07e36ea2e3e2bd5676e22216e4cad108d4df4a7402a0"}, - {file = "websockets-13.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c90d6dec6be2c7d03378a574de87af9b1efea77d0c52a8301dd831ece938452f"}, - {file = "websockets-13.1-cp310-cp310-win32.whl", hash = "sha256:730f42125ccb14602f455155084f978bd9e8e57e89b569b4d7f0f0c17a448ffe"}, - {file = "websockets-13.1-cp310-cp310-win_amd64.whl", hash = "sha256:5993260f483d05a9737073be197371940c01b257cc45ae3f1d5d7adb371b266a"}, - {file = "websockets-13.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:61fc0dfcda609cda0fc9fe7977694c0c59cf9d749fbb17f4e9483929e3c48a19"}, - {file = "websockets-13.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ceec59f59d092c5007e815def4ebb80c2de330e9588e101cf8bd94c143ec78a5"}, - {file = "websockets-13.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c1dca61c6db1166c48b95198c0b7d9c990b30c756fc2923cc66f68d17dc558fd"}, - {file = "websockets-13.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:308e20f22c2c77f3f39caca508e765f8725020b84aa963474e18c59accbf4c02"}, - {file = "websockets-13.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62d516c325e6540e8a57b94abefc3459d7dab8ce52ac75c96cad5549e187e3a7"}, - {file = "websockets-13.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87c6e35319b46b99e168eb98472d6c7d8634ee37750d7693656dc766395df096"}, - {file = "websockets-13.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5f9fee94ebafbc3117c30be1844ed01a3b177bb6e39088bc6b2fa1dc15572084"}, - {file = "websockets-13.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7c1e90228c2f5cdde263253fa5db63e6653f1c00e7ec64108065a0b9713fa1b3"}, - {file = "websockets-13.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6548f29b0e401eea2b967b2fdc1c7c7b5ebb3eeb470ed23a54cd45ef078a0db9"}, - {file = "websockets-13.1-cp311-cp311-win32.whl", hash = "sha256:c11d4d16e133f6df8916cc5b7e3e96ee4c44c936717d684a94f48f82edb7c92f"}, - {file = "websockets-13.1-cp311-cp311-win_amd64.whl", hash = "sha256:d04f13a1d75cb2b8382bdc16ae6fa58c97337253826dfe136195b7f89f661557"}, - {file = "websockets-13.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:9d75baf00138f80b48f1eac72ad1535aac0b6461265a0bcad391fc5aba875cfc"}, - {file = "websockets-13.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9b6f347deb3dcfbfde1c20baa21c2ac0751afaa73e64e5b693bb2b848efeaa49"}, - {file = "websockets-13.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de58647e3f9c42f13f90ac7e5f58900c80a39019848c5547bc691693098ae1bd"}, - {file = "websockets-13.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1b54689e38d1279a51d11e3467dd2f3a50f5f2e879012ce8f2d6943f00e83f0"}, - {file = "websockets-13.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf1781ef73c073e6b0f90af841aaf98501f975d306bbf6221683dd594ccc52b6"}, - {file = "websockets-13.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d23b88b9388ed85c6faf0e74d8dec4f4d3baf3ecf20a65a47b836d56260d4b9"}, - {file = "websockets-13.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3c78383585f47ccb0fcf186dcb8a43f5438bd7d8f47d69e0b56f71bf431a0a68"}, - {file = "websockets-13.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:d6d300f8ec35c24025ceb9b9019ae9040c1ab2f01cddc2bcc0b518af31c75c14"}, - {file = "websockets-13.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a9dcaf8b0cc72a392760bb8755922c03e17a5a54e08cca58e8b74f6902b433cf"}, - {file = "websockets-13.1-cp312-cp312-win32.whl", hash = "sha256:2f85cf4f2a1ba8f602298a853cec8526c2ca42a9a4b947ec236eaedb8f2dc80c"}, - {file = "websockets-13.1-cp312-cp312-win_amd64.whl", hash = "sha256:38377f8b0cdeee97c552d20cf1865695fcd56aba155ad1b4ca8779a5b6ef4ac3"}, - {file = "websockets-13.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a9ab1e71d3d2e54a0aa646ab6d4eebfaa5f416fe78dfe4da2839525dc5d765c6"}, - {file = "websockets-13.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b9d7439d7fab4dce00570bb906875734df13d9faa4b48e261c440a5fec6d9708"}, - {file = "websockets-13.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:327b74e915cf13c5931334c61e1a41040e365d380f812513a255aa804b183418"}, - {file = "websockets-13.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:325b1ccdbf5e5725fdcb1b0e9ad4d2545056479d0eee392c291c1bf76206435a"}, - {file = "websockets-13.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:346bee67a65f189e0e33f520f253d5147ab76ae42493804319b5716e46dddf0f"}, - {file = "websockets-13.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91a0fa841646320ec0d3accdff5b757b06e2e5c86ba32af2e0815c96c7a603c5"}, - {file = "websockets-13.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:18503d2c5f3943e93819238bf20df71982d193f73dcecd26c94514f417f6b135"}, - {file = "websockets-13.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:a9cd1af7e18e5221d2878378fbc287a14cd527fdd5939ed56a18df8a31136bb2"}, - {file = "websockets-13.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:70c5be9f416aa72aab7a2a76c90ae0a4fe2755c1816c153c1a2bcc3333ce4ce6"}, - {file = "websockets-13.1-cp313-cp313-win32.whl", hash = "sha256:624459daabeb310d3815b276c1adef475b3e6804abaf2d9d2c061c319f7f187d"}, - {file = "websockets-13.1-cp313-cp313-win_amd64.whl", hash = "sha256:c518e84bb59c2baae725accd355c8dc517b4a3ed8db88b4bc93c78dae2974bf2"}, - {file = "websockets-13.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:c7934fd0e920e70468e676fe7f1b7261c1efa0d6c037c6722278ca0228ad9d0d"}, - {file = "websockets-13.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:149e622dc48c10ccc3d2760e5f36753db9cacf3ad7bc7bbbfd7d9c819e286f23"}, - {file = "websockets-13.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a569eb1b05d72f9bce2ebd28a1ce2054311b66677fcd46cf36204ad23acead8c"}, - {file = "websockets-13.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95df24ca1e1bd93bbca51d94dd049a984609687cb2fb08a7f2c56ac84e9816ea"}, - {file = "websockets-13.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d8dbb1bf0c0a4ae8b40bdc9be7f644e2f3fb4e8a9aca7145bfa510d4a374eeb7"}, - {file = "websockets-13.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:035233b7531fb92a76beefcbf479504db8c72eb3bff41da55aecce3a0f729e54"}, - {file = "websockets-13.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:e4450fc83a3df53dec45922b576e91e94f5578d06436871dce3a6be38e40f5db"}, - {file = "websockets-13.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:463e1c6ec853202dd3657f156123d6b4dad0c546ea2e2e38be2b3f7c5b8e7295"}, - {file = "websockets-13.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:6d6855bbe70119872c05107e38fbc7f96b1d8cb047d95c2c50869a46c65a8e96"}, - {file = "websockets-13.1-cp38-cp38-win32.whl", hash = "sha256:204e5107f43095012b00f1451374693267adbb832d29966a01ecc4ce1db26faf"}, - {file = "websockets-13.1-cp38-cp38-win_amd64.whl", hash = "sha256:485307243237328c022bc908b90e4457d0daa8b5cf4b3723fd3c4a8012fce4c6"}, - {file = "websockets-13.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9b37c184f8b976f0c0a231a5f3d6efe10807d41ccbe4488df8c74174805eea7d"}, - {file = "websockets-13.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:163e7277e1a0bd9fb3c8842a71661ad19c6aa7bb3d6678dc7f89b17fbcc4aeb7"}, - {file = "websockets-13.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4b889dbd1342820cc210ba44307cf75ae5f2f96226c0038094455a96e64fb07a"}, - {file = "websockets-13.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:586a356928692c1fed0eca68b4d1c2cbbd1ca2acf2ac7e7ebd3b9052582deefa"}, - {file = "websockets-13.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7bd6abf1e070a6b72bfeb71049d6ad286852e285f146682bf30d0296f5fbadfa"}, - {file = "websockets-13.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2aad13a200e5934f5a6767492fb07151e1de1d6079c003ab31e1823733ae79"}, - {file = "websockets-13.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:df01aea34b6e9e33572c35cd16bae5a47785e7d5c8cb2b54b2acdb9678315a17"}, - {file = "websockets-13.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:e54affdeb21026329fb0744ad187cf812f7d3c2aa702a5edb562b325191fcab6"}, - {file = "websockets-13.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:9ef8aa8bdbac47f4968a5d66462a2a0935d044bf35c0e5a8af152d58516dbeb5"}, - {file = "websockets-13.1-cp39-cp39-win32.whl", hash = "sha256:deeb929efe52bed518f6eb2ddc00cc496366a14c726005726ad62c2dd9017a3c"}, - {file = "websockets-13.1-cp39-cp39-win_amd64.whl", hash = "sha256:7c65ffa900e7cc958cd088b9a9157a8141c991f8c53d11087e6fb7277a03f81d"}, - {file = "websockets-13.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5dd6da9bec02735931fccec99d97c29f47cc61f644264eb995ad6c0c27667238"}, - {file = "websockets-13.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:2510c09d8e8df777177ee3d40cd35450dc169a81e747455cc4197e63f7e7bfe5"}, - {file = "websockets-13.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1c3cf67185543730888b20682fb186fc8d0fa6f07ccc3ef4390831ab4b388d9"}, - {file = "websockets-13.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bcc03c8b72267e97b49149e4863d57c2d77f13fae12066622dc78fe322490fe6"}, - {file = "websockets-13.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:004280a140f220c812e65f36944a9ca92d766b6cc4560be652a0a3883a79ed8a"}, - {file = "websockets-13.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:e2620453c075abeb0daa949a292e19f56de518988e079c36478bacf9546ced23"}, - {file = "websockets-13.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9156c45750b37337f7b0b00e6248991a047be4aa44554c9886fe6bdd605aab3b"}, - {file = "websockets-13.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:80c421e07973a89fbdd93e6f2003c17d20b69010458d3a8e37fb47874bd67d51"}, - {file = "websockets-13.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82d0ba76371769d6a4e56f7e83bb8e81846d17a6190971e38b5de108bde9b0d7"}, - {file = "websockets-13.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e9875a0143f07d74dc5e1ded1c4581f0d9f7ab86c78994e2ed9e95050073c94d"}, - {file = "websockets-13.1-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a11e38ad8922c7961447f35c7b17bffa15de4d17c70abd07bfbe12d6faa3e027"}, - {file = "websockets-13.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:4059f790b6ae8768471cddb65d3c4fe4792b0ab48e154c9f0a04cefaabcd5978"}, - {file = "websockets-13.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:25c35bf84bf7c7369d247f0b8cfa157f989862c49104c5cf85cb5436a641d93e"}, - {file = "websockets-13.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:83f91d8a9bb404b8c2c41a707ac7f7f75b9442a0a876df295de27251a856ad09"}, - {file = "websockets-13.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a43cfdcddd07f4ca2b1afb459824dd3c6d53a51410636a2c7fc97b9a8cf4842"}, - {file = "websockets-13.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:48a2ef1381632a2f0cb4efeff34efa97901c9fbc118e01951ad7cfc10601a9bb"}, - {file = "websockets-13.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:459bf774c754c35dbb487360b12c5727adab887f1622b8aed5755880a21c4a20"}, - {file = "websockets-13.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:95858ca14a9f6fa8413d29e0a585b31b278388aa775b8a81fa24830123874678"}, - {file = "websockets-13.1-py3-none-any.whl", hash = "sha256:a9a396a6ad26130cdae92ae10c36af09d9bfe6cafe69670fd3b6da9b07b4044f"}, - {file = "websockets-13.1.tar.gz", hash = "sha256:a3b3366087c1bc0a2795111edcadddb8b3b59509d5db5d7ea3fdd69f954a8878"}, +python-versions = ">=3.9" +files = [ + {file = "websockets-15.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d63efaa0cd96cf0c5fe4d581521d9fa87744540d4bc999ae6e08595a1014b45b"}, + {file = "websockets-15.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ac60e3b188ec7574cb761b08d50fcedf9d77f1530352db4eef1707fe9dee7205"}, + {file = "websockets-15.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5756779642579d902eed757b21b0164cd6fe338506a8083eb58af5c372e39d9a"}, + {file = "websockets-15.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fdfe3e2a29e4db3659dbd5bbf04560cea53dd9610273917799f1cde46aa725e"}, + {file = "websockets-15.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c2529b320eb9e35af0fa3016c187dffb84a3ecc572bcee7c3ce302bfeba52bf"}, + {file = "websockets-15.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac1e5c9054fe23226fb11e05a6e630837f074174c4c2f0fe442996112a6de4fb"}, + {file = "websockets-15.0.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5df592cd503496351d6dc14f7cdad49f268d8e618f80dce0cd5a36b93c3fc08d"}, + {file = "websockets-15.0.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0a34631031a8f05657e8e90903e656959234f3a04552259458aac0b0f9ae6fd9"}, + {file = "websockets-15.0.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3d00075aa65772e7ce9e990cab3ff1de702aa09be3940d1dc88d5abf1ab8a09c"}, + {file = "websockets-15.0.1-cp310-cp310-win32.whl", hash = "sha256:1234d4ef35db82f5446dca8e35a7da7964d02c127b095e172e54397fb6a6c256"}, + {file = "websockets-15.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:39c1fec2c11dc8d89bba6b2bf1556af381611a173ac2b511cf7231622058af41"}, + {file = "websockets-15.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:823c248b690b2fd9303ba00c4f66cd5e2d8c3ba4aa968b2779be9532a4dad431"}, + {file = "websockets-15.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678999709e68425ae2593acf2e3ebcbcf2e69885a5ee78f9eb80e6e371f1bf57"}, + {file = "websockets-15.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d50fd1ee42388dcfb2b3676132c78116490976f1300da28eb629272d5d93e905"}, + {file = "websockets-15.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d99e5546bf73dbad5bf3547174cd6cb8ba7273062a23808ffea025ecb1cf8562"}, + {file = "websockets-15.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66dd88c918e3287efc22409d426c8f729688d89a0c587c88971a0faa2c2f3792"}, + {file = "websockets-15.0.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8dd8327c795b3e3f219760fa603dcae1dcc148172290a8ab15158cf85a953413"}, + {file = "websockets-15.0.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8fdc51055e6ff4adeb88d58a11042ec9a5eae317a0a53d12c062c8a8865909e8"}, + {file = "websockets-15.0.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:693f0192126df6c2327cce3baa7c06f2a117575e32ab2308f7f8216c29d9e2e3"}, + {file = "websockets-15.0.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:54479983bd5fb469c38f2f5c7e3a24f9a4e70594cd68cd1fa6b9340dadaff7cf"}, + {file = "websockets-15.0.1-cp311-cp311-win32.whl", hash = "sha256:16b6c1b3e57799b9d38427dda63edcbe4926352c47cf88588c0be4ace18dac85"}, + {file = "websockets-15.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:27ccee0071a0e75d22cb35849b1db43f2ecd3e161041ac1ee9d2352ddf72f065"}, + {file = "websockets-15.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3e90baa811a5d73f3ca0bcbf32064d663ed81318ab225ee4f427ad4e26e5aff3"}, + {file = "websockets-15.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:592f1a9fe869c778694f0aa806ba0374e97648ab57936f092fd9d87f8bc03665"}, + {file = "websockets-15.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0701bc3cfcb9164d04a14b149fd74be7347a530ad3bbf15ab2c678a2cd3dd9a2"}, + {file = "websockets-15.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8b56bdcdb4505c8078cb6c7157d9811a85790f2f2b3632c7d1462ab5783d215"}, + {file = "websockets-15.0.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0af68c55afbd5f07986df82831c7bff04846928ea8d1fd7f30052638788bc9b5"}, + {file = "websockets-15.0.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64dee438fed052b52e4f98f76c5790513235efaa1ef7f3f2192c392cd7c91b65"}, + {file = "websockets-15.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d5f6b181bb38171a8ad1d6aa58a67a6aa9d4b38d0f8c5f496b9e42561dfc62fe"}, + {file = "websockets-15.0.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5d54b09eba2bada6011aea5375542a157637b91029687eb4fdb2dab11059c1b4"}, + {file = "websockets-15.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3be571a8b5afed347da347bfcf27ba12b069d9d7f42cb8c7028b5e98bbb12597"}, + {file = "websockets-15.0.1-cp312-cp312-win32.whl", hash = "sha256:c338ffa0520bdb12fbc527265235639fb76e7bc7faafbb93f6ba80d9c06578a9"}, + {file = "websockets-15.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:fcd5cf9e305d7b8338754470cf69cf81f420459dbae8a3b40cee57417f4614a7"}, + {file = "websockets-15.0.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ee443ef070bb3b6ed74514f5efaa37a252af57c90eb33b956d35c8e9c10a1931"}, + {file = "websockets-15.0.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5a939de6b7b4e18ca683218320fc67ea886038265fd1ed30173f5ce3f8e85675"}, + {file = "websockets-15.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:746ee8dba912cd6fc889a8147168991d50ed70447bf18bcda7039f7d2e3d9151"}, + {file = "websockets-15.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:595b6c3969023ecf9041b2936ac3827e4623bfa3ccf007575f04c5a6aa318c22"}, + {file = "websockets-15.0.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c714d2fc58b5ca3e285461a4cc0c9a66bd0e24c5da9911e30158286c9b5be7f"}, + {file = "websockets-15.0.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f3c1e2ab208db911594ae5b4f79addeb3501604a165019dd221c0bdcabe4db8"}, + {file = "websockets-15.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:229cf1d3ca6c1804400b0a9790dc66528e08a6a1feec0d5040e8b9eb14422375"}, + {file = "websockets-15.0.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:756c56e867a90fb00177d530dca4b097dd753cde348448a1012ed6c5131f8b7d"}, + {file = "websockets-15.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:558d023b3df0bffe50a04e710bc87742de35060580a293c2a984299ed83bc4e4"}, + {file = "websockets-15.0.1-cp313-cp313-win32.whl", hash = "sha256:ba9e56e8ceeeedb2e080147ba85ffcd5cd0711b89576b83784d8605a7df455fa"}, + {file = "websockets-15.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:e09473f095a819042ecb2ab9465aee615bd9c2028e4ef7d933600a8401c79561"}, + {file = "websockets-15.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5f4c04ead5aed67c8a1a20491d54cdfba5884507a48dd798ecaf13c74c4489f5"}, + {file = "websockets-15.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:abdc0c6c8c648b4805c5eacd131910d2a7f6455dfd3becab248ef108e89ab16a"}, + {file = "websockets-15.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a625e06551975f4b7ea7102bc43895b90742746797e2e14b70ed61c43a90f09b"}, + {file = "websockets-15.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d591f8de75824cbb7acad4e05d2d710484f15f29d4a915092675ad3456f11770"}, + {file = "websockets-15.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:47819cea040f31d670cc8d324bb6435c6f133b8c7a19ec3d61634e62f8d8f9eb"}, + {file = "websockets-15.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac017dd64572e5c3bd01939121e4d16cf30e5d7e110a119399cf3133b63ad054"}, + {file = "websockets-15.0.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:4a9fac8e469d04ce6c25bb2610dc535235bd4aa14996b4e6dbebf5e007eba5ee"}, + {file = "websockets-15.0.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:363c6f671b761efcb30608d24925a382497c12c506b51661883c3e22337265ed"}, + {file = "websockets-15.0.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2034693ad3097d5355bfdacfffcbd3ef5694f9718ab7f29c29689a9eae841880"}, + {file = "websockets-15.0.1-cp39-cp39-win32.whl", hash = "sha256:3b1ac0d3e594bf121308112697cf4b32be538fb1444468fb0a6ae4feebc83411"}, + {file = "websockets-15.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:b7643a03db5c95c799b89b31c036d5f27eeb4d259c798e878d6937d71832b1e4"}, + {file = "websockets-15.0.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0c9e74d766f2818bb95f84c25be4dea09841ac0f734d1966f415e4edfc4ef1c3"}, + {file = "websockets-15.0.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1009ee0c7739c08a0cd59de430d6de452a55e42d6b522de7aa15e6f67db0b8e1"}, + {file = "websockets-15.0.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76d1f20b1c7a2fa82367e04982e708723ba0e7b8d43aa643d3dcd404d74f1475"}, + {file = "websockets-15.0.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f29d80eb9a9263b8d109135351caf568cc3f80b9928bccde535c235de55c22d9"}, + {file = "websockets-15.0.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b359ed09954d7c18bbc1680f380c7301f92c60bf924171629c5db97febb12f04"}, + {file = "websockets-15.0.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:cad21560da69f4ce7658ca2cb83138fb4cf695a2ba3e475e0559e05991aa8122"}, + {file = "websockets-15.0.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7f493881579c90fc262d9cdbaa05a6b54b3811c2f300766748db79f098db9940"}, + {file = "websockets-15.0.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:47b099e1f4fbc95b701b6e85768e1fcdaf1630f3cbe4765fa216596f12310e2e"}, + {file = "websockets-15.0.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67f2b6de947f8c757db2db9c71527933ad0019737ec374a8a6be9a956786aaf9"}, + {file = "websockets-15.0.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d08eb4c2b7d6c41da6ca0600c077e93f5adcfd979cd777d747e9ee624556da4b"}, + {file = "websockets-15.0.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b826973a4a2ae47ba357e4e82fa44a463b8f168e1ca775ac64521442b19e87f"}, + {file = "websockets-15.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:21c1fa28a6a7e3cbdc171c694398b6df4744613ce9b36b1a498e816787e28123"}, + {file = "websockets-15.0.1-py3-none-any.whl", hash = "sha256:f7a866fbc1e97b5c617ee4116daaa09b722101d4a3c170c787450ba409f9736f"}, + {file = "websockets-15.0.1.tar.gz", hash = "sha256:82544de02076bafba038ce055ee6412d68da13ab47f0c60cab827346de828dee"}, ] [[package]] @@ -1042,7 +940,6 @@ version = "0.13.0" description = "Makes working with XML feel like you are working with JSON" optional = false python-versions = ">=3.4" -groups = ["dev"] files = [ {file = "xmltodict-0.13.0-py2.py3-none-any.whl", hash = "sha256:aa89e8fd76320154a40d19a0df04a4695fb9dc5ba977cbb68ab3e4eb225e7852"}, {file = "xmltodict-0.13.0.tar.gz", hash = "sha256:341595a488e3e01a85a9d8911d8912fd922ede5fecc4dce437eb4b6c8d037e56"}, @@ -1054,8 +951,6 @@ version = "3.19.1" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" -groups = ["dev"] -markers = "python_version < \"3.10\"" files = [ {file = "zipp-3.19.1-py3-none-any.whl", hash = "sha256:2828e64edb5386ea6a52e7ba7cdb17bb30a73a858f5eb6eb93d8d36f5ea26091"}, {file = "zipp-3.19.1.tar.gz", hash = "sha256:35427f6d5594f4acf82d25541438348c26736fa9b3afa2754bcd63cdb99d8e8f"}, @@ -1066,6 +961,6 @@ doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linke test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] [metadata] -lock-version = "2.1" -python-versions = "^3.8" -content-hash = "c80bc058f0871dd694ea1761d3266a1d46d0265b19312868ccc7e5cf3dbe3244" +lock-version = "2.0" +python-versions = "^3.9" +content-hash = "9d1af0f906dd5be7a7016cea5daa198a608ad3aa7c70969d672ea0c993a61b9e" diff --git a/polygon/websocket/__init__.py b/polygon/websocket/__init__.py index 1304028f..207ba09b 100644 --- a/polygon/websocket/__init__.py +++ b/polygon/websocket/__init__.py @@ -7,7 +7,7 @@ import ssl import certifi from .models import * -from websockets.client import connect, WebSocketClientProtocol +from websockets.asyncio.client import connect, ClientConnection from websockets.exceptions import ConnectionClosedOK, ConnectionClosedError from ..logging import get_logger import logging @@ -65,7 +65,7 @@ def __init__( self.subscribed = False self.subs: Set[str] = set() self.max_reconnects = max_reconnects - self.websocket: Optional[WebSocketClientProtocol] = None + self.websocket: Optional[ClientConnection] = None if subscriptions is None: subscriptions = [] self.scheduled_subs: Set[str] = set(subscriptions) @@ -100,8 +100,13 @@ async def connect( ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT) ssl_context.load_verify_locations(certifi.where()) + last_exc = None async for s in connect( - self.url, close_timeout=close_timeout, ssl=ssl_context, **kwargs + self.url, + close_timeout=close_timeout, + ssl=ssl_context, + process_exception=lambda exc: None, + **kwargs, ): self.websocket = s try: @@ -151,15 +156,23 @@ async def connect( logger.debug("connection closed (OK): %s", e) return except ConnectionClosedError as e: + last_exc = e logger.debug("connection closed (ERR): %s", e) reconnects += 1 self.scheduled_subs = set(self.subs) self.subs = set() self.schedule_resub = True if self.max_reconnects is not None and reconnects > self.max_reconnects: - return + break continue + if ( + last_exc + and self.max_reconnects is not None + and reconnects > self.max_reconnects + ): + raise last_exc + def run( self, handle_msg: Union[ diff --git a/pyproject.toml b/pyproject.toml index 6dc126b6..cc2d7399 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,9 +24,9 @@ packages = [ ] [tool.poetry.dependencies] -python = "^3.8" -urllib3 = ">=1.26.9,<3.0.0" -websockets = ">=10.3,<15.0" +python = "^3.9" +urllib3 = ">=1.26.9" +websockets = ">=14.0" certifi = ">=2022.5.18,<2026.0.0" [tool.poetry.dev-dependencies] From bd6f4079dc79ecd7a96cc16c629c91b8b9de415e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 Oct 2025 10:23:24 -0700 Subject: [PATCH 13/46] Bump certifi from 2025.6.15 to 2025.10.5 (#930) Bumps [certifi](https://github.com/certifi/python-certifi) from 2025.6.15 to 2025.10.5. - [Commits](https://github.com/certifi/python-certifi/compare/2025.06.15...2025.10.05) --- updated-dependencies: - dependency-name: certifi dependency-version: 2025.10.5 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 77 ++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 65 insertions(+), 12 deletions(-) diff --git a/poetry.lock b/poetry.lock index 6121d97b..cd5aef1c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.5 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.2.0 and should not be changed by hand. [[package]] name = "alabaster" @@ -6,6 +6,7 @@ version = "0.7.12" description = "A configurable sidebar-enabled Sphinx theme" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "alabaster-0.7.12-py2.py3-none-any.whl", hash = "sha256:446438bdcca0e05bd45ea2de1668c1d9b032e1a9154c2c259092d77031ddd359"}, {file = "alabaster-0.7.12.tar.gz", hash = "sha256:a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02"}, @@ -17,16 +18,17 @@ version = "22.1.0" description = "Classes Without Boilerplate" optional = false python-versions = ">=3.5" +groups = ["dev"] files = [ {file = "attrs-22.1.0-py2.py3-none-any.whl", hash = "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c"}, {file = "attrs-22.1.0.tar.gz", hash = "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6"}, ] [package.extras] -dev = ["cloudpickle", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy (>=0.900,!=0.940)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "sphinx", "sphinx-notfound-page", "zope.interface"] +dev = ["cloudpickle ; platform_python_implementation == \"CPython\"", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy (>=0.900,!=0.940)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "sphinx", "sphinx-notfound-page", "zope.interface"] docs = ["furo", "sphinx", "sphinx-notfound-page", "zope.interface"] -tests = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "zope.interface"] -tests-no-zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins"] +tests = ["cloudpickle ; platform_python_implementation == \"CPython\"", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "zope.interface"] +tests-no-zope = ["cloudpickle ; platform_python_implementation == \"CPython\"", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins"] [[package]] name = "Babel" @@ -34,6 +36,7 @@ version = "2.11.0" description = "Internationalization utilities" optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ {file = "Babel-2.11.0-py3-none-any.whl", hash = "sha256:1ad3eca1c885218f6dce2ab67291178944f810a10a9b5f3cb8382a5a232b64fe"}, {file = "Babel-2.11.0.tar.gz", hash = "sha256:5ef4b3226b0180dedded4229651c8b0e1a3a6a2837d45a073272f313e4cf97f6"}, @@ -48,6 +51,7 @@ version = "24.8.0" description = "The uncompromising code formatter." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "black-24.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:09cdeb74d494ec023ded657f7092ba518e8cf78fa8386155e4a03fdcc44679e6"}, {file = "black-24.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:81c6742da39f33b08e791da38410f32e27d632260e599df7245cccee2064afeb"}, @@ -84,19 +88,20 @@ typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""} [package.extras] colorama = ["colorama (>=0.4.3)"] -d = ["aiohttp (>=3.7.4)", "aiohttp (>=3.7.4,!=3.9.0)"] +d = ["aiohttp (>=3.7.4) ; sys_platform != \"win32\" or implementation_name != \"pypy\"", "aiohttp (>=3.7.4,!=3.9.0) ; sys_platform == \"win32\" and implementation_name == \"pypy\""] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2)"] [[package]] name = "certifi" -version = "2025.6.15" +version = "2025.10.5" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.7" +groups = ["main", "dev"] files = [ - {file = "certifi-2025.6.15-py3-none-any.whl", hash = "sha256:2e0c7ce7cb5d8f8634ca55d2ba7e6ec2689a2fd6537d8dec1296a477a4910057"}, - {file = "certifi-2025.6.15.tar.gz", hash = "sha256:d747aa5a8b9bbbb1bb8c22bb13e22bd1f18e9796defa16bab421f7f7a317323b"}, + {file = "certifi-2025.10.5-py3-none-any.whl", hash = "sha256:0f212c2744a9bb6de0c56639a6f68afe01ecd92d91f14ae897c4fe7bbeeef0de"}, + {file = "certifi-2025.10.5.tar.gz", hash = "sha256:47c09d31ccf2acf0be3f701ea53595ee7e0b8fa08801c6624be771df09ae7b43"}, ] [[package]] @@ -105,6 +110,7 @@ version = "2.1.1" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.6.0" +groups = ["dev"] files = [ {file = "charset-normalizer-2.1.1.tar.gz", hash = "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845"}, {file = "charset_normalizer-2.1.1-py3-none-any.whl", hash = "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"}, @@ -119,6 +125,7 @@ version = "8.1.3" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, @@ -133,6 +140,8 @@ version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["dev"] +markers = "sys_platform == \"win32\" or platform_system == \"Windows\"" files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, @@ -144,6 +153,7 @@ version = "0.18.1" description = "Docutils -- Python Documentation Utilities" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +groups = ["dev"] files = [ {file = "docutils-0.18.1-py2.py3-none-any.whl", hash = "sha256:23010f129180089fbcd3bc08cfefccb3b890b0050e1ca00c867036e9d161b98c"}, {file = "docutils-0.18.1.tar.gz", hash = "sha256:679987caf361a7539d76e584cbeddc311e3aee937877c87346f31debc63e9d06"}, @@ -155,6 +165,7 @@ version = "2.1.3" description = "URL manipulation made simple." optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "furl-2.1.3-py2.py3-none-any.whl", hash = "sha256:9ab425062c4217f9802508e45feb4a83e54324273ac4b202f1850363309666c0"}, {file = "furl-2.1.3.tar.gz", hash = "sha256:5a6188fe2666c484a12159c18be97a1977a71d632ef5bb867ef15f54af39cc4e"}, @@ -170,6 +181,7 @@ version = "3.7" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.5" +groups = ["dev"] files = [ {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, @@ -181,6 +193,7 @@ version = "1.4.1" description = "Getting image size from png/jpeg/jpeg2000/gif file" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +groups = ["dev"] files = [ {file = "imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b"}, {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"}, @@ -192,6 +205,8 @@ version = "5.1.0" description = "Read metadata from Python packages" optional = false python-versions = ">=3.7" +groups = ["dev"] +markers = "python_version == \"3.9\"" files = [ {file = "importlib_metadata-5.1.0-py3-none-any.whl", hash = "sha256:d84d17e21670ec07990e1044a99efe8d615d860fd176fc29ef5c306068fda313"}, {file = "importlib_metadata-5.1.0.tar.gz", hash = "sha256:d5059f9f1e8e41f80e9c56c2ee58811450c31984dfa625329ffd7c0dad88a73b"}, @@ -203,7 +218,7 @@ zipp = ">=0.5" [package.extras] docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] perf = ["ipython"] -testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)"] +testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3) ; python_version < \"3.9\"", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7) ; platform_python_implementation != \"PyPy\"", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8 ; python_version < \"3.12\"", "pytest-mypy (>=0.9.1) ; platform_python_implementation != \"PyPy\"", "pytest-perf (>=0.9.2)"] [[package]] name = "jinja2" @@ -211,6 +226,7 @@ version = "3.1.6" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"}, {file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"}, @@ -228,6 +244,7 @@ version = "4.17.1" description = "An implementation of JSON Schema validation for Python" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "jsonschema-4.17.1-py3-none-any.whl", hash = "sha256:410ef23dcdbca4eaedc08b850079179883c2ed09378bd1f760d4af4aacfa28d7"}, {file = "jsonschema-4.17.1.tar.gz", hash = "sha256:05b2d22c83640cde0b7e0aa329ca7754fbd98ea66ad8ae24aa61328dfe057fa3"}, @@ -247,6 +264,7 @@ version = "2.1.1" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"}, @@ -296,6 +314,7 @@ version = "1.13.0" description = "Optional static typing for Python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "mypy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6607e0f1dd1fb7f0aca14d936d13fd19eba5e17e1cd2a14f808fa5f8f6d8f60a"}, {file = "mypy-1.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8a21be69bd26fa81b1f80a61ee7ab05b076c674d9b18fb56239d72e21d9f4c80"}, @@ -349,6 +368,7 @@ version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." optional = false python-versions = ">=3.5" +groups = ["dev"] files = [ {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, @@ -360,6 +380,7 @@ version = "1.0.1" description = "Ordered Multivalue Dictionary" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "orderedmultidict-1.0.1-py2.py3-none-any.whl", hash = "sha256:43c839a17ee3cdd62234c47deca1a8508a3f2ca1d0678a3bf791c87cf84adbf3"}, {file = "orderedmultidict-1.0.1.tar.gz", hash = "sha256:04070bbb5e87291cc9bfa51df413677faf2141c73c61d2a5f7b26bea3cd882ad"}, @@ -374,6 +395,7 @@ version = "3.10.15" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "orjson-3.10.15-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:552c883d03ad185f720d0c09583ebde257e41b9521b74ff40e08b7dec4559c04"}, {file = "orjson-3.10.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:616e3e8d438d02e4854f70bfdc03a6bcdb697358dbaa6bcd19cbe24d24ece1f8"}, @@ -462,6 +484,7 @@ version = "23.1" description = "Core utilities for Python packages" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, @@ -473,6 +496,7 @@ version = "0.10.2" description = "Utility library for gitignore style pattern matching of file paths." optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "pathspec-0.10.2-py3-none-any.whl", hash = "sha256:88c2606f2c1e818b978540f73ecc908e13999c6c3a383daf3705652ae79807a5"}, {file = "pathspec-0.10.2.tar.gz", hash = "sha256:8f6bf73e5758fd365ef5d58ce09ac7c27d2833a8d7da51712eac6e27e35141b0"}, @@ -484,6 +508,7 @@ version = "2.5.4" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "platformdirs-2.5.4-py3-none-any.whl", hash = "sha256:af0276409f9a02373d540bf8480021a048711d572745aef4b7842dad245eba10"}, {file = "platformdirs-2.5.4.tar.gz", hash = "sha256:1006647646d80f16130f052404c6b901e80ee4ed6bef6792e1f238a8969106f7"}, @@ -499,6 +524,7 @@ version = "2.0.1" description = "HTTP traffic mocking and expectations made easy" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pook-2.0.1-py3-none-any.whl", hash = "sha256:30d73c95e0520f45c1e3889f3bf486e990b6f04b4915aa9daf86cf0d8136b2e1"}, {file = "pook-2.0.1.tar.gz", hash = "sha256:e04c0e698f256438b4dfbf3ab1b27559f0ec25e42176823167f321f4e8b9c9e4"}, @@ -515,13 +541,14 @@ version = "2.15.0" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "Pygments-2.15.0-py3-none-any.whl", hash = "sha256:77a3299119af881904cd5ecd1ac6a66214b6e9bed1f2db16993b54adede64094"}, {file = "Pygments-2.15.0.tar.gz", hash = "sha256:f7e36cffc4c517fbc252861b9a6e4644ca0e5abadf9a113c72d1358ad09b9500"}, ] [package.extras] -plugins = ["importlib-metadata"] +plugins = ["importlib-metadata ; python_version < \"3.8\""] [[package]] name = "pyrsistent" @@ -529,6 +556,7 @@ version = "0.19.2" description = "Persistent/Functional/Immutable data structures" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "pyrsistent-0.19.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d6982b5a0237e1b7d876b60265564648a69b14017f3b5f908c5be2de3f9abb7a"}, {file = "pyrsistent-0.19.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:187d5730b0507d9285a96fca9716310d572e5464cadd19f22b63a6976254d77a"}, @@ -560,6 +588,7 @@ version = "2022.6" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "pytz-2022.6-py2.py3-none-any.whl", hash = "sha256:222439474e9c98fced559f1709d89e6c9cbf8d79c794ff3eb9f8800064291427"}, {file = "pytz-2022.6.tar.gz", hash = "sha256:e89512406b793ca39f5971bc999cc538ce125c0e51c27941bef4568b460095e2"}, @@ -571,6 +600,7 @@ version = "2.32.4" description = "Python HTTP for Humans." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c"}, {file = "requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422"}, @@ -592,6 +622,7 @@ version = "1.16.0" description = "Python 2 and 3 compatibility utilities" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +groups = ["dev"] files = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, @@ -603,6 +634,7 @@ version = "2.2.0" description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, @@ -614,6 +646,7 @@ version = "7.1.2" description = "Python documentation generator" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "sphinx-7.1.2-py3-none-any.whl", hash = "sha256:d170a81825b2fcacb6dfd5a0d7f578a053e45d3f2b153fecc948c37344eb4cbe"}, {file = "sphinx-7.1.2.tar.gz", hash = "sha256:780f4d32f1d7d1126576e0e5ecc19dc32ab76cd24e950228dcf7b1f6d3d9e22f"}, @@ -649,6 +682,7 @@ version = "2.0.1" description = "Type hints (PEP 484) support for the Sphinx autodoc extension" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "sphinx_autodoc_typehints-2.0.1-py3-none-any.whl", hash = "sha256:f73ae89b43a799e587e39266672c1075b2ef783aeb382d3ebed77c38a3fc0149"}, {file = "sphinx_autodoc_typehints-2.0.1.tar.gz", hash = "sha256:60ed1e3b2c970acc0aa6e877be42d48029a9faec7378a17838716cacd8c10b12"}, @@ -668,6 +702,7 @@ version = "3.0.2" description = "Read the Docs theme for Sphinx" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "sphinx_rtd_theme-3.0.2-py2.py3-none-any.whl", hash = "sha256:422ccc750c3a3a311de4ae327e82affdaf59eb695ba4936538552f3b00f4ee13"}, {file = "sphinx_rtd_theme-3.0.2.tar.gz", hash = "sha256:b7457bc25dda723b20b086a670b9953c859eab60a2a03ee8eb2bb23e176e5f85"}, @@ -687,6 +722,7 @@ version = "1.0.2" description = "sphinxcontrib-applehelp is a sphinx extension which outputs Apple help books" optional = false python-versions = ">=3.5" +groups = ["dev"] files = [ {file = "sphinxcontrib-applehelp-1.0.2.tar.gz", hash = "sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58"}, {file = "sphinxcontrib_applehelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:806111e5e962be97c29ec4c1e7fe277bfd19e9652fb1a4392105b43e01af885a"}, @@ -702,6 +738,7 @@ version = "1.0.2" description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document." optional = false python-versions = ">=3.5" +groups = ["dev"] files = [ {file = "sphinxcontrib-devhelp-1.0.2.tar.gz", hash = "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"}, {file = "sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e"}, @@ -717,6 +754,7 @@ version = "2.0.0" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ {file = "sphinxcontrib-htmlhelp-2.0.0.tar.gz", hash = "sha256:f5f8bb2d0d629f398bf47d0d69c07bc13b65f75a81ad9e2f71a63d4b7a2f6db2"}, {file = "sphinxcontrib_htmlhelp-2.0.0-py2.py3-none-any.whl", hash = "sha256:d412243dfb797ae3ec2b59eca0e52dac12e75a241bf0e4eb861e450d06c6ed07"}, @@ -732,6 +770,7 @@ version = "4.1" description = "Extension to include jQuery on newer Sphinx releases" optional = false python-versions = ">=2.7" +groups = ["dev"] files = [ {file = "sphinxcontrib-jquery-4.1.tar.gz", hash = "sha256:1620739f04e36a2c779f1a131a2dfd49b2fd07351bf1968ced074365933abc7a"}, {file = "sphinxcontrib_jquery-4.1-py2.py3-none-any.whl", hash = "sha256:f936030d7d0147dd026a4f2b5a57343d233f1fc7b363f68b3d4f1cb0993878ae"}, @@ -746,6 +785,7 @@ version = "1.0.1" description = "A sphinx extension which renders display math in HTML via JavaScript" optional = false python-versions = ">=3.5" +groups = ["dev"] files = [ {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"}, {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"}, @@ -760,6 +800,7 @@ version = "1.0.3" description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document." optional = false python-versions = ">=3.5" +groups = ["dev"] files = [ {file = "sphinxcontrib-qthelp-1.0.3.tar.gz", hash = "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72"}, {file = "sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6"}, @@ -775,6 +816,7 @@ version = "1.1.5" description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)." optional = false python-versions = ">=3.5" +groups = ["dev"] files = [ {file = "sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"}, {file = "sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd"}, @@ -790,6 +832,8 @@ version = "2.0.1" description = "A lil' TOML parser" optional = false python-versions = ">=3.7" +groups = ["dev"] +markers = "python_version < \"3.11\"" files = [ {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, @@ -801,6 +845,7 @@ version = "2021.10.8.3" description = "Typing stubs for certifi" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "types-certifi-2021.10.8.3.tar.gz", hash = "sha256:72cf7798d165bc0b76e1c10dd1ea3097c7063c42c21d664523b928e88b554a4f"}, {file = "types_certifi-2021.10.8.3-py3-none-any.whl", hash = "sha256:b2d1e325e69f71f7c78e5943d410e650b4707bb0ef32e4ddf3da37f54176e88a"}, @@ -812,6 +857,7 @@ version = "75.8.0.20250110" description = "Typing stubs for setuptools" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "types_setuptools-75.8.0.20250110-py3-none-any.whl", hash = "sha256:a9f12980bbf9bcdc23ecd80755789085bad6bfce4060c2275bc2b4ca9f2bc480"}, {file = "types_setuptools-75.8.0.20250110.tar.gz", hash = "sha256:96f7ec8bbd6e0a54ea180d66ad68ad7a1d7954e7281a710ea2de75e355545271"}, @@ -823,6 +869,7 @@ version = "1.26.25.14" description = "Typing stubs for urllib3" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "types-urllib3-1.26.25.14.tar.gz", hash = "sha256:229b7f577c951b8c1b92c1bc2b2fdb0b49847bd2af6d1cc2a2e3dd340f3bda8f"}, {file = "types_urllib3-1.26.25.14-py3-none-any.whl", hash = "sha256:9683bbb7fb72e32bfe9d2be6e04875fbe1b3eeec3cbb4ea231435aa7fd6b4f0e"}, @@ -834,6 +881,7 @@ version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, @@ -845,13 +893,14 @@ version = "2.2.3" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, ] [package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""] h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] @@ -862,6 +911,7 @@ version = "15.0.1" description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" optional = false python-versions = ">=3.9" +groups = ["main"] files = [ {file = "websockets-15.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d63efaa0cd96cf0c5fe4d581521d9fa87744540d4bc999ae6e08595a1014b45b"}, {file = "websockets-15.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ac60e3b188ec7574cb761b08d50fcedf9d77f1530352db4eef1707fe9dee7205"}, @@ -940,6 +990,7 @@ version = "0.13.0" description = "Makes working with XML feel like you are working with JSON" optional = false python-versions = ">=3.4" +groups = ["dev"] files = [ {file = "xmltodict-0.13.0-py2.py3-none-any.whl", hash = "sha256:aa89e8fd76320154a40d19a0df04a4695fb9dc5ba977cbb68ab3e4eb225e7852"}, {file = "xmltodict-0.13.0.tar.gz", hash = "sha256:341595a488e3e01a85a9d8911d8912fd922ede5fecc4dce437eb4b6c8d037e56"}, @@ -951,6 +1002,8 @@ version = "3.19.1" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" +groups = ["dev"] +markers = "python_version == \"3.9\"" files = [ {file = "zipp-3.19.1-py3-none-any.whl", hash = "sha256:2828e64edb5386ea6a52e7ba7cdb17bb30a73a858f5eb6eb93d8d36f5ea26091"}, {file = "zipp-3.19.1.tar.gz", hash = "sha256:35427f6d5594f4acf82d25541438348c26736fa9b3afa2754bcd63cdb99d8e8f"}, @@ -961,6 +1014,6 @@ doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linke test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] [metadata] -lock-version = "2.0" +lock-version = "2.1" python-versions = "^3.9" content-hash = "9d1af0f906dd5be7a7016cea5daa198a608ad3aa7c70969d672ea0c993a61b9e" From ffa8add5a2a646c3a3d6b1b018418e5b23a92850 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 Oct 2025 10:28:28 -0700 Subject: [PATCH 14/46] Bump urllib3 from 2.2.3 to 2.5.0 (#937) Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.2.3 to 2.5.0. - [Release notes](https://github.com/urllib3/urllib3/releases) - [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst) - [Commits](https://github.com/urllib3/urllib3/compare/2.2.3...2.5.0) --- updated-dependencies: - dependency-name: urllib3 dependency-version: 2.5.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/poetry.lock b/poetry.lock index cd5aef1c..7b97daba 100644 --- a/poetry.lock +++ b/poetry.lock @@ -889,14 +889,14 @@ files = [ [[package]] name = "urllib3" -version = "2.2.3" +version = "2.5.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["main", "dev"] files = [ - {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, - {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, + {file = "urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc"}, + {file = "urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760"}, ] [package.extras] From 498446a5374395a077d92196478081861c323b38 Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Wed, 15 Oct 2025 10:59:38 -0700 Subject: [PATCH 15/46] Remove unnecessary sqlite3 Timestamp import from summaries.py and indicators.py to fix mypy errors (#938) --- polygon/rest/models/indicators.py | 1 - polygon/rest/models/summaries.py | 1 - 2 files changed, 2 deletions(-) diff --git a/polygon/rest/models/indicators.py b/polygon/rest/models/indicators.py index aedada5a..ffb3899f 100644 --- a/polygon/rest/models/indicators.py +++ b/polygon/rest/models/indicators.py @@ -1,4 +1,3 @@ -from sqlite3 import Timestamp from typing import Optional, Any, Dict, List, Union from ...modelclass import modelclass from .aggs import Agg diff --git a/polygon/rest/models/summaries.py b/polygon/rest/models/summaries.py index 21e6f395..db49f907 100644 --- a/polygon/rest/models/summaries.py +++ b/polygon/rest/models/summaries.py @@ -1,4 +1,3 @@ -from sqlite3 import Timestamp from typing import Optional from ...modelclass import modelclass from .tickers import Branding From d3fd9c5c2aca2d797d8224ea36b27e7b1706d1f2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 Oct 2025 11:03:15 -0700 Subject: [PATCH 16/46] Bump mypy from 1.13.0 to 1.14.1 (#823) Bumps [mypy](https://github.com/python/mypy) from 1.13.0 to 1.14.1. - [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md) - [Commits](https://github.com/python/mypy/compare/v1.13.0...v1.14.1) --- updated-dependencies: - dependency-name: mypy dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: justinpolygon <123573436+justinpolygon@users.noreply.github.com> --- poetry.lock | 81 +++++++++++++++++++++++++++----------------------- pyproject.toml | 2 +- 2 files changed, 45 insertions(+), 38 deletions(-) diff --git a/poetry.lock b/poetry.lock index 7b97daba..f967b71d 100644 --- a/poetry.lock +++ b/poetry.lock @@ -310,50 +310,57 @@ files = [ [[package]] name = "mypy" -version = "1.13.0" +version = "1.18.2" description = "Optional static typing for Python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "mypy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6607e0f1dd1fb7f0aca14d936d13fd19eba5e17e1cd2a14f808fa5f8f6d8f60a"}, - {file = "mypy-1.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8a21be69bd26fa81b1f80a61ee7ab05b076c674d9b18fb56239d72e21d9f4c80"}, - {file = "mypy-1.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b2353a44d2179846a096e25691d54d59904559f4232519d420d64da6828a3a7"}, - {file = "mypy-1.13.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0730d1c6a2739d4511dc4253f8274cdd140c55c32dfb0a4cf8b7a43f40abfa6f"}, - {file = "mypy-1.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:c5fc54dbb712ff5e5a0fca797e6e0aa25726c7e72c6a5850cfd2adbc1eb0a372"}, - {file = "mypy-1.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:581665e6f3a8a9078f28d5502f4c334c0c8d802ef55ea0e7276a6e409bc0d82d"}, - {file = "mypy-1.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3ddb5b9bf82e05cc9a627e84707b528e5c7caaa1c55c69e175abb15a761cec2d"}, - {file = "mypy-1.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:20c7ee0bc0d5a9595c46f38beb04201f2620065a93755704e141fcac9f59db2b"}, - {file = "mypy-1.13.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3790ded76f0b34bc9c8ba4def8f919dd6a46db0f5a6610fb994fe8efdd447f73"}, - {file = "mypy-1.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:51f869f4b6b538229c1d1bcc1dd7d119817206e2bc54e8e374b3dfa202defcca"}, - {file = "mypy-1.13.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5c7051a3461ae84dfb5dd15eff5094640c61c5f22257c8b766794e6dd85e72d5"}, - {file = "mypy-1.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:39bb21c69a5d6342f4ce526e4584bc5c197fd20a60d14a8624d8743fffb9472e"}, - {file = "mypy-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:164f28cb9d6367439031f4c81e84d3ccaa1e19232d9d05d37cb0bd880d3f93c2"}, - {file = "mypy-1.13.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a4c1bfcdbce96ff5d96fc9b08e3831acb30dc44ab02671eca5953eadad07d6d0"}, - {file = "mypy-1.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:a0affb3a79a256b4183ba09811e3577c5163ed06685e4d4b46429a271ba174d2"}, - {file = "mypy-1.13.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a7b44178c9760ce1a43f544e595d35ed61ac2c3de306599fa59b38a6048e1aa7"}, - {file = "mypy-1.13.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5d5092efb8516d08440e36626f0153b5006d4088c1d663d88bf79625af3d1d62"}, - {file = "mypy-1.13.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de2904956dac40ced10931ac967ae63c5089bd498542194b436eb097a9f77bc8"}, - {file = "mypy-1.13.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:7bfd8836970d33c2105562650656b6846149374dc8ed77d98424b40b09340ba7"}, - {file = "mypy-1.13.0-cp313-cp313-win_amd64.whl", hash = "sha256:9f73dba9ec77acb86457a8fc04b5239822df0c14a082564737833d2963677dbc"}, - {file = "mypy-1.13.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:100fac22ce82925f676a734af0db922ecfea991e1d7ec0ceb1e115ebe501301a"}, - {file = "mypy-1.13.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7bcb0bb7f42a978bb323a7c88f1081d1b5dee77ca86f4100735a6f541299d8fb"}, - {file = "mypy-1.13.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bde31fc887c213e223bbfc34328070996061b0833b0a4cfec53745ed61f3519b"}, - {file = "mypy-1.13.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07de989f89786f62b937851295ed62e51774722e5444a27cecca993fc3f9cd74"}, - {file = "mypy-1.13.0-cp38-cp38-win_amd64.whl", hash = "sha256:4bde84334fbe19bad704b3f5b78c4abd35ff1026f8ba72b29de70dda0916beb6"}, - {file = "mypy-1.13.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0246bcb1b5de7f08f2826451abd947bf656945209b140d16ed317f65a17dc7dc"}, - {file = "mypy-1.13.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7f5b7deae912cf8b77e990b9280f170381fdfbddf61b4ef80927edd813163732"}, - {file = "mypy-1.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7029881ec6ffb8bc233a4fa364736789582c738217b133f1b55967115288a2bc"}, - {file = "mypy-1.13.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3e38b980e5681f28f033f3be86b099a247b13c491f14bb8b1e1e134d23bb599d"}, - {file = "mypy-1.13.0-cp39-cp39-win_amd64.whl", hash = "sha256:a6789be98a2017c912ae6ccb77ea553bbaf13d27605d2ca20a76dfbced631b24"}, - {file = "mypy-1.13.0-py3-none-any.whl", hash = "sha256:9c250883f9fd81d212e0952c92dbfcc96fc237f4b7c92f56ac81fd48460b3e5a"}, - {file = "mypy-1.13.0.tar.gz", hash = "sha256:0291a61b6fbf3e6673e3405cfcc0e7650bebc7939659fdca2702958038bd835e"}, + {file = "mypy-1.18.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c1eab0cf6294dafe397c261a75f96dc2c31bffe3b944faa24db5def4e2b0f77c"}, + {file = "mypy-1.18.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7a780ca61fc239e4865968ebc5240bb3bf610ef59ac398de9a7421b54e4a207e"}, + {file = "mypy-1.18.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:448acd386266989ef11662ce3c8011fd2a7b632e0ec7d61a98edd8e27472225b"}, + {file = "mypy-1.18.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f9e171c465ad3901dc652643ee4bffa8e9fef4d7d0eece23b428908c77a76a66"}, + {file = "mypy-1.18.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:592ec214750bc00741af1f80cbf96b5013d81486b7bb24cb052382c19e40b428"}, + {file = "mypy-1.18.2-cp310-cp310-win_amd64.whl", hash = "sha256:7fb95f97199ea11769ebe3638c29b550b5221e997c63b14ef93d2e971606ebed"}, + {file = "mypy-1.18.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:807d9315ab9d464125aa9fcf6d84fde6e1dc67da0b6f80e7405506b8ac72bc7f"}, + {file = "mypy-1.18.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:776bb00de1778caf4db739c6e83919c1d85a448f71979b6a0edd774ea8399341"}, + {file = "mypy-1.18.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1379451880512ffce14505493bd9fe469e0697543717298242574882cf8cdb8d"}, + {file = "mypy-1.18.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1331eb7fd110d60c24999893320967594ff84c38ac6d19e0a76c5fd809a84c86"}, + {file = "mypy-1.18.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3ca30b50a51e7ba93b00422e486cbb124f1c56a535e20eff7b2d6ab72b3b2e37"}, + {file = "mypy-1.18.2-cp311-cp311-win_amd64.whl", hash = "sha256:664dc726e67fa54e14536f6e1224bcfce1d9e5ac02426d2326e2bb4e081d1ce8"}, + {file = "mypy-1.18.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:33eca32dd124b29400c31d7cf784e795b050ace0e1f91b8dc035672725617e34"}, + {file = "mypy-1.18.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a3c47adf30d65e89b2dcd2fa32f3aeb5e94ca970d2c15fcb25e297871c8e4764"}, + {file = "mypy-1.18.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d6c838e831a062f5f29d11c9057c6009f60cb294fea33a98422688181fe2893"}, + {file = "mypy-1.18.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01199871b6110a2ce984bde85acd481232d17413868c9807e95c1b0739a58914"}, + {file = "mypy-1.18.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a2afc0fa0b0e91b4599ddfe0f91e2c26c2b5a5ab263737e998d6817874c5f7c8"}, + {file = "mypy-1.18.2-cp312-cp312-win_amd64.whl", hash = "sha256:d8068d0afe682c7c4897c0f7ce84ea77f6de953262b12d07038f4d296d547074"}, + {file = "mypy-1.18.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:07b8b0f580ca6d289e69209ec9d3911b4a26e5abfde32228a288eb79df129fcc"}, + {file = "mypy-1.18.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ed4482847168439651d3feee5833ccedbf6657e964572706a2adb1f7fa4dfe2e"}, + {file = "mypy-1.18.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c3ad2afadd1e9fea5cf99a45a822346971ede8685cc581ed9cd4d42eaf940986"}, + {file = "mypy-1.18.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a431a6f1ef14cf8c144c6b14793a23ec4eae3db28277c358136e79d7d062f62d"}, + {file = "mypy-1.18.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7ab28cc197f1dd77a67e1c6f35cd1f8e8b73ed2217e4fc005f9e6a504e46e7ba"}, + {file = "mypy-1.18.2-cp313-cp313-win_amd64.whl", hash = "sha256:0e2785a84b34a72ba55fb5daf079a1003a34c05b22238da94fcae2bbe46f3544"}, + {file = "mypy-1.18.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:62f0e1e988ad41c2a110edde6c398383a889d95b36b3e60bcf155f5164c4fdce"}, + {file = "mypy-1.18.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:8795a039bab805ff0c1dfdb8cd3344642c2b99b8e439d057aba30850b8d3423d"}, + {file = "mypy-1.18.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6ca1e64b24a700ab5ce10133f7ccd956a04715463d30498e64ea8715236f9c9c"}, + {file = "mypy-1.18.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d924eef3795cc89fecf6bedc6ed32b33ac13e8321344f6ddbf8ee89f706c05cb"}, + {file = "mypy-1.18.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:20c02215a080e3a2be3aa50506c67242df1c151eaba0dcbc1e4e557922a26075"}, + {file = "mypy-1.18.2-cp314-cp314-win_amd64.whl", hash = "sha256:749b5f83198f1ca64345603118a6f01a4e99ad4bf9d103ddc5a3200cc4614adf"}, + {file = "mypy-1.18.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:25a9c8fb67b00599f839cf472713f54249a62efd53a54b565eb61956a7e3296b"}, + {file = "mypy-1.18.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c2b9c7e284ee20e7598d6f42e13ca40b4928e6957ed6813d1ab6348aa3f47133"}, + {file = "mypy-1.18.2-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d6985ed057513e344e43a26cc1cd815c7a94602fb6a3130a34798625bc2f07b6"}, + {file = "mypy-1.18.2-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:22f27105f1525ec024b5c630c0b9f36d5c1cc4d447d61fe51ff4bd60633f47ac"}, + {file = "mypy-1.18.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:030c52d0ea8144e721e49b1f68391e39553d7451f0c3f8a7565b59e19fcb608b"}, + {file = "mypy-1.18.2-cp39-cp39-win_amd64.whl", hash = "sha256:aa5e07ac1a60a253445797e42b8b2963c9675563a94f11291ab40718b016a7a0"}, + {file = "mypy-1.18.2-py3-none-any.whl", hash = "sha256:22a1748707dd62b58d2ae53562ffc4d7f8bcc727e8ac7cbc69c053ddc874d47e"}, + {file = "mypy-1.18.2.tar.gz", hash = "sha256:06a398102a5f203d7477b2923dda3634c36727fa5c237d8f859ef90c42a9924b"}, ] [package.dependencies] -mypy-extensions = ">=1.0.0" +mypy_extensions = ">=1.0.0" +pathspec = ">=0.9.0" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} -typing-extensions = ">=4.6.0" +typing_extensions = ">=4.6.0" [package.extras] dmypy = ["psutil (>=4.0)"] @@ -1016,4 +1023,4 @@ test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-it [metadata] lock-version = "2.1" python-versions = "^3.9" -content-hash = "9d1af0f906dd5be7a7016cea5daa198a608ad3aa7c70969d672ea0c993a61b9e" +content-hash = "57769f5739287e97c684d13bdd40535ec92de6a1d6844e907c3736b2595aa203" diff --git a/pyproject.toml b/pyproject.toml index cc2d7399..367331ce 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,7 +31,7 @@ certifi = ">=2022.5.18,<2026.0.0" [tool.poetry.dev-dependencies] black = "^24.8.0" -mypy = "^1.13" +mypy = "^1.18" types-urllib3 = "^1.26.25" Sphinx = "^7.1.2" sphinx-rtd-theme = "^3.0.2" From 154061d0da7f3108fdc74c71e9d456f5a52a190e Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Thu, 16 Oct 2025 05:47:24 -0700 Subject: [PATCH 17/46] Adds support for ETF Global endpoints (#940) --- polygon/rest/__init__.py | 2 + polygon/rest/etf_global.py | 282 ++++++++++++++++++++++++ polygon/rest/models/etf_global.py | 351 ++++++++++++++++++++++++++++++ 3 files changed, 635 insertions(+) create mode 100644 polygon/rest/etf_global.py create mode 100644 polygon/rest/models/etf_global.py diff --git a/polygon/rest/__init__.py b/polygon/rest/__init__.py index db26bbca..ef51769b 100644 --- a/polygon/rest/__init__.py +++ b/polygon/rest/__init__.py @@ -3,6 +3,7 @@ from .financials import FinancialsClient from .benzinga import BenzingaClient from .economy import EconomyClient +from .etf_global import EtfGlobalClient from .tmx import TmxClient from .trades import TradesClient from .quotes import QuotesClient @@ -32,6 +33,7 @@ class RESTClient( FinancialsClient, BenzingaClient, EconomyClient, + EtfGlobalClient, TmxClient, TradesClient, QuotesClient, diff --git a/polygon/rest/etf_global.py b/polygon/rest/etf_global.py new file mode 100644 index 00000000..9da19539 --- /dev/null +++ b/polygon/rest/etf_global.py @@ -0,0 +1,282 @@ +from typing import Optional, Any, Dict, List, Union, Iterator +from urllib3 import HTTPResponse +from datetime import datetime, date + +from .base import BaseClient +from .models.etf_global import ( + EtfGlobalAnalytics, + EtfGlobalConstituent, + EtfGlobalFundFlow, + EtfGlobalProfile, + EtfGlobalTaxonomy, +) +from .models.common import Sort +from .models.request import RequestOptionBuilder + + +class EtfGlobalClient(BaseClient): + """ + Client for the ETF Global REST Endpoints + (aligned with the paths from /etf-global/v1/...) + """ + + def get_etf_global_analytics( + self, + composite_ticker: Optional[str] = None, + composite_ticker_any_of: Optional[str] = None, + composite_ticker_gt: Optional[str] = None, + composite_ticker_gte: Optional[str] = None, + composite_ticker_lt: Optional[str] = None, + composite_ticker_lte: Optional[str] = None, + processed_date: Optional[Union[str, date]] = None, + processed_date_gt: Optional[Union[str, date]] = None, + processed_date_gte: Optional[Union[str, date]] = None, + processed_date_lt: Optional[Union[str, date]] = None, + processed_date_lte: Optional[Union[str, date]] = None, + effective_date: Optional[Union[str, date]] = None, + effective_date_gt: Optional[Union[str, date]] = None, + effective_date_gte: Optional[Union[str, date]] = None, + effective_date_lt: Optional[Union[str, date]] = None, + effective_date_lte: Optional[Union[str, date]] = None, + risk_total_score: Optional[float] = None, + risk_total_score_gt: Optional[float] = None, + risk_total_score_gte: Optional[float] = None, + risk_total_score_lt: Optional[float] = None, + risk_total_score_lte: Optional[float] = None, + reward_score: Optional[float] = None, + reward_score_gt: Optional[float] = None, + reward_score_gte: Optional[float] = None, + reward_score_lt: Optional[float] = None, + reward_score_lte: Optional[float] = None, + quant_total_score: Optional[float] = None, + quant_total_score_gt: Optional[float] = None, + quant_total_score_gte: Optional[float] = None, + quant_total_score_lt: Optional[float] = None, + quant_total_score_lte: Optional[float] = None, + quant_grade: Optional[str] = None, + quant_grade_any_of: Optional[str] = None, + quant_grade_gt: Optional[str] = None, + quant_grade_gte: Optional[str] = None, + quant_grade_lt: Optional[str] = None, + quant_grade_lte: Optional[str] = None, + quant_composite_technical: Optional[float] = None, + quant_composite_technical_gt: Optional[float] = None, + quant_composite_technical_gte: Optional[float] = None, + quant_composite_technical_lt: Optional[float] = None, + quant_composite_technical_lte: Optional[float] = None, + quant_composite_sentiment: Optional[float] = None, + quant_composite_sentiment_gt: Optional[float] = None, + quant_composite_sentiment_gte: Optional[float] = None, + quant_composite_sentiment_lt: Optional[float] = None, + quant_composite_sentiment_lte: Optional[float] = None, + quant_composite_behavioral: Optional[float] = None, + quant_composite_behavioral_gt: Optional[float] = None, + quant_composite_behavioral_gte: Optional[float] = None, + quant_composite_behavioral_lt: Optional[float] = None, + quant_composite_behavioral_lte: Optional[float] = None, + quant_composite_fundamental: Optional[float] = None, + quant_composite_fundamental_gt: Optional[float] = None, + quant_composite_fundamental_gte: Optional[float] = None, + quant_composite_fundamental_lt: Optional[float] = None, + quant_composite_fundamental_lte: Optional[float] = None, + quant_composite_global: Optional[float] = None, + quant_composite_global_gt: Optional[float] = None, + quant_composite_global_gte: Optional[float] = None, + quant_composite_global_lt: Optional[float] = None, + quant_composite_global_lte: Optional[float] = None, + quant_composite_quality: Optional[float] = None, + quant_composite_quality_gt: Optional[float] = None, + quant_composite_quality_gte: Optional[float] = None, + quant_composite_quality_lt: Optional[float] = None, + quant_composite_quality_lte: Optional[float] = None, + limit: Optional[int] = None, + sort: Optional[Union[str, Sort]] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[Iterator[EtfGlobalAnalytics], HTTPResponse]: + """ + Endpoint: GET /etf-global/v1/analytics + """ + url = "/etf-global/v1/analytics" + return self._paginate( + path=url, + params=self._get_params(self.get_etf_global_analytics, locals()), + raw=raw, + deserializer=EtfGlobalAnalytics.from_dict, + options=options, + ) + + def get_etf_global_constituents( + self, + composite_ticker: Optional[str] = None, + composite_ticker_any_of: Optional[str] = None, + composite_ticker_gt: Optional[str] = None, + composite_ticker_gte: Optional[str] = None, + composite_ticker_lt: Optional[str] = None, + composite_ticker_lte: Optional[str] = None, + constituent_ticker: Optional[str] = None, + constituent_ticker_any_of: Optional[str] = None, + constituent_ticker_gt: Optional[str] = None, + constituent_ticker_gte: Optional[str] = None, + constituent_ticker_lt: Optional[str] = None, + constituent_ticker_lte: Optional[str] = None, + effective_date: Optional[Union[str, date]] = None, + effective_date_gt: Optional[Union[str, date]] = None, + effective_date_gte: Optional[Union[str, date]] = None, + effective_date_lt: Optional[Union[str, date]] = None, + effective_date_lte: Optional[Union[str, date]] = None, + processed_date: Optional[Union[str, date]] = None, + processed_date_gt: Optional[Union[str, date]] = None, + processed_date_gte: Optional[Union[str, date]] = None, + processed_date_lt: Optional[Union[str, date]] = None, + processed_date_lte: Optional[Union[str, date]] = None, + us_code: Optional[str] = None, + us_code_any_of: Optional[str] = None, + us_code_gt: Optional[str] = None, + us_code_gte: Optional[str] = None, + us_code_lt: Optional[str] = None, + us_code_lte: Optional[str] = None, + isin: Optional[str] = None, + isin_any_of: Optional[str] = None, + isin_gt: Optional[str] = None, + isin_gte: Optional[str] = None, + isin_lt: Optional[str] = None, + isin_lte: Optional[str] = None, + figi: Optional[str] = None, + figi_any_of: Optional[str] = None, + figi_gt: Optional[str] = None, + figi_gte: Optional[str] = None, + figi_lt: Optional[str] = None, + figi_lte: Optional[str] = None, + sedol: Optional[str] = None, + sedol_any_of: Optional[str] = None, + sedol_gt: Optional[str] = None, + sedol_gte: Optional[str] = None, + sedol_lt: Optional[str] = None, + sedol_lte: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[Union[str, Sort]] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[Iterator[EtfGlobalConstituent], HTTPResponse]: + """ + Endpoint: GET /etf-global/v1/constituents + """ + url = "/etf-global/v1/constituents" + return self._paginate( + path=url, + params=self._get_params(self.get_etf_global_constituents, locals()), + raw=raw, + deserializer=EtfGlobalConstituent.from_dict, + options=options, + ) + + def get_etf_global_fund_flows( + self, + processed_date: Optional[Union[str, date]] = None, + processed_date_gt: Optional[Union[str, date]] = None, + processed_date_gte: Optional[Union[str, date]] = None, + processed_date_lt: Optional[Union[str, date]] = None, + processed_date_lte: Optional[Union[str, date]] = None, + effective_date: Optional[Union[str, date]] = None, + effective_date_gt: Optional[Union[str, date]] = None, + effective_date_gte: Optional[Union[str, date]] = None, + effective_date_lt: Optional[Union[str, date]] = None, + effective_date_lte: Optional[Union[str, date]] = None, + composite_ticker: Optional[str] = None, + composite_ticker_any_of: Optional[str] = None, + composite_ticker_gt: Optional[str] = None, + composite_ticker_gte: Optional[str] = None, + composite_ticker_lt: Optional[str] = None, + composite_ticker_lte: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[Union[str, Sort]] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[Iterator[EtfGlobalFundFlow], HTTPResponse]: + """ + Endpoint: GET /etf-global/v1/fund-flows + """ + url = "/etf-global/v1/fund-flows" + return self._paginate( + path=url, + params=self._get_params(self.get_etf_global_fund_flows, locals()), + raw=raw, + deserializer=EtfGlobalFundFlow.from_dict, + options=options, + ) + + def get_etf_global_profiles( + self, + processed_date: Optional[Union[str, date]] = None, + processed_date_gt: Optional[Union[str, date]] = None, + processed_date_gte: Optional[Union[str, date]] = None, + processed_date_lt: Optional[Union[str, date]] = None, + processed_date_lte: Optional[Union[str, date]] = None, + effective_date: Optional[Union[str, date]] = None, + effective_date_gt: Optional[Union[str, date]] = None, + effective_date_gte: Optional[Union[str, date]] = None, + effective_date_lt: Optional[Union[str, date]] = None, + effective_date_lte: Optional[Union[str, date]] = None, + composite_ticker: Optional[str] = None, + composite_ticker_any_of: Optional[str] = None, + composite_ticker_gt: Optional[str] = None, + composite_ticker_gte: Optional[str] = None, + composite_ticker_lt: Optional[str] = None, + composite_ticker_lte: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[Union[str, Sort]] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[Iterator[EtfGlobalProfile], HTTPResponse]: + """ + Endpoint: GET /etf-global/v1/profiles + """ + url = "/etf-global/v1/profiles" + return self._paginate( + path=url, + params=self._get_params(self.get_etf_global_profiles, locals()), + raw=raw, + deserializer=EtfGlobalProfile.from_dict, + options=options, + ) + + def get_etf_global_taxonomies( + self, + processed_date: Optional[Union[str, date]] = None, + processed_date_gt: Optional[Union[str, date]] = None, + processed_date_gte: Optional[Union[str, date]] = None, + processed_date_lt: Optional[Union[str, date]] = None, + processed_date_lte: Optional[Union[str, date]] = None, + effective_date: Optional[Union[str, date]] = None, + effective_date_gt: Optional[Union[str, date]] = None, + effective_date_gte: Optional[Union[str, date]] = None, + effective_date_lt: Optional[Union[str, date]] = None, + effective_date_lte: Optional[Union[str, date]] = None, + composite_ticker: Optional[str] = None, + composite_ticker_any_of: Optional[str] = None, + composite_ticker_gt: Optional[str] = None, + composite_ticker_gte: Optional[str] = None, + composite_ticker_lt: Optional[str] = None, + composite_ticker_lte: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[Union[str, Sort]] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[Iterator[EtfGlobalTaxonomy], HTTPResponse]: + """ + Endpoint: GET /etf-global/v1/taxonomies + """ + url = "/etf-global/v1/taxonomies" + return self._paginate( + path=url, + params=self._get_params(self.get_etf_global_taxonomies, locals()), + raw=raw, + deserializer=EtfGlobalTaxonomy.from_dict, + options=options, + ) diff --git a/polygon/rest/models/etf_global.py b/polygon/rest/models/etf_global.py new file mode 100644 index 00000000..053babe6 --- /dev/null +++ b/polygon/rest/models/etf_global.py @@ -0,0 +1,351 @@ +from typing import Optional, Dict +from ...modelclass import modelclass + + +@modelclass +class EtfGlobalAnalytics: + composite_ticker: Optional[str] = None + effective_date: Optional[str] = None + processed_date: Optional[str] = None + quant_composite_behavioral: Optional[float] = None + quant_composite_fundamental: Optional[float] = None + quant_composite_global: Optional[float] = None + quant_composite_quality: Optional[float] = None + quant_composite_sentiment: Optional[float] = None + quant_composite_technical: Optional[float] = None + quant_fundamental_div: Optional[float] = None + quant_fundamental_pb: Optional[float] = None + quant_fundamental_pcf: Optional[float] = None + quant_fundamental_pe: Optional[float] = None + quant_global_country: Optional[float] = None + quant_global_sector: Optional[float] = None + quant_grade: Optional[str] = None + quant_quality_diversification: Optional[float] = None + quant_quality_firm: Optional[float] = None + quant_quality_liquidity: Optional[float] = None + quant_sentiment_iv: Optional[float] = None + quant_sentiment_pc: Optional[float] = None + quant_sentiment_si: Optional[float] = None + quant_technical_it: Optional[float] = None + quant_technical_lt: Optional[float] = None + quant_technical_st: Optional[float] = None + quant_total_score: Optional[float] = None + reward_score: Optional[float] = None + risk_country: Optional[float] = None + risk_deviation: Optional[float] = None + risk_efficiency: Optional[float] = None + risk_liquidity: Optional[float] = None + risk_structure: Optional[float] = None + risk_total_score: Optional[float] = None + risk_volatility: Optional[float] = None + + @staticmethod + def from_dict(d): + return EtfGlobalAnalytics( + composite_ticker=d.get("composite_ticker"), + effective_date=d.get("effective_date"), + processed_date=d.get("processed_date"), + quant_composite_behavioral=d.get("quant_composite_behavioral"), + quant_composite_fundamental=d.get("quant_composite_fundamental"), + quant_composite_global=d.get("quant_composite_global"), + quant_composite_quality=d.get("quant_composite_quality"), + quant_composite_sentiment=d.get("quant_composite_sentiment"), + quant_composite_technical=d.get("quant_composite_technical"), + quant_fundamental_div=d.get("quant_fundamental_div"), + quant_fundamental_pb=d.get("quant_fundamental_pb"), + quant_fundamental_pcf=d.get("quant_fundamental_pcf"), + quant_fundamental_pe=d.get("quant_fundamental_pe"), + quant_global_country=d.get("quant_global_country"), + quant_global_sector=d.get("quant_global_sector"), + quant_grade=d.get("quant_grade"), + quant_quality_diversification=d.get("quant_quality_diversification"), + quant_quality_firm=d.get("quant_quality_firm"), + quant_quality_liquidity=d.get("quant_quality_liquidity"), + quant_sentiment_iv=d.get("quant_sentiment_iv"), + quant_sentiment_pc=d.get("quant_sentiment_pc"), + quant_sentiment_si=d.get("quant_sentiment_si"), + quant_technical_it=d.get("quant_technical_it"), + quant_technical_lt=d.get("quant_technical_lt"), + quant_technical_st=d.get("quant_technical_st"), + quant_total_score=d.get("quant_total_score"), + reward_score=d.get("reward_score"), + risk_country=d.get("risk_country"), + risk_deviation=d.get("risk_deviation"), + risk_efficiency=d.get("risk_efficiency"), + risk_liquidity=d.get("risk_liquidity"), + risk_structure=d.get("risk_structure"), + risk_total_score=d.get("risk_total_score"), + risk_volatility=d.get("risk_volatility"), + ) + + +@modelclass +class EtfGlobalConstituent: + asset_class: Optional[str] = None + composite_ticker: Optional[str] = None + constituent_name: Optional[str] = None + constituent_ticker: Optional[str] = None + country_of_exchange: Optional[str] = None + currency_traded: Optional[str] = None + effective_date: Optional[str] = None + exchange: Optional[str] = None + figi: Optional[str] = None + isin: Optional[str] = None + market_value: Optional[float] = None + processed_date: Optional[str] = None + security_type: Optional[str] = None + sedol: Optional[str] = None + shares_held: Optional[float] = None + us_code: Optional[str] = None + weight: Optional[float] = None + + @staticmethod + def from_dict(d): + return EtfGlobalConstituent( + asset_class=d.get("asset_class"), + composite_ticker=d.get("composite_ticker"), + constituent_name=d.get("constituent_name"), + constituent_ticker=d.get("constituent_ticker"), + country_of_exchange=d.get("country_of_exchange"), + currency_traded=d.get("currency_traded"), + effective_date=d.get("effective_date"), + exchange=d.get("exchange"), + figi=d.get("figi"), + isin=d.get("isin"), + market_value=d.get("market_value"), + processed_date=d.get("processed_date"), + security_type=d.get("security_type"), + sedol=d.get("sedol"), + shares_held=d.get("shares_held"), + us_code=d.get("us_code"), + weight=d.get("weight"), + ) + + +@modelclass +class EtfGlobalFundFlow: + composite_ticker: Optional[str] = None + effective_date: Optional[str] = None + fund_flow: Optional[float] = None + nav: Optional[float] = None + processed_date: Optional[str] = None + shares_outstanding: Optional[float] = None + + @staticmethod + def from_dict(d): + return EtfGlobalFundFlow( + composite_ticker=d.get("composite_ticker"), + effective_date=d.get("effective_date"), + fund_flow=d.get("fund_flow"), + nav=d.get("nav"), + processed_date=d.get("processed_date"), + shares_outstanding=d.get("shares_outstanding"), + ) + + +@modelclass +class EtfGlobalProfile: + administrator: Optional[str] = None + advisor: Optional[str] = None + asset_class: Optional[str] = None + aum: Optional[float] = None + avg_daily_trading_volume: Optional[float] = None + bid_ask_spread: Optional[float] = None + call_volume: Optional[float] = None + category: Optional[str] = None + composite_ticker: Optional[str] = None + coupon_exposure: Optional[Dict[str, float]] = None + creation_fee: Optional[float] = None + creation_unit_size: Optional[float] = None + currency_exposure: Optional[Dict[str, float]] = None + custodian: Optional[str] = None + description: Optional[str] = None + development_class: Optional[str] = None + discount_premium: Optional[float] = None + distribution_frequency: Optional[str] = None + distributor: Optional[str] = None + effective_date: Optional[str] = None + fee_waivers: Optional[float] = None + fiscal_year_end: Optional[str] = None + focus: Optional[str] = None + futures_commission_merchant: Optional[str] = None + geographic_exposure: Optional[Dict[str, float]] = None + inception_date: Optional[str] = None + industry_exposure: Optional[Dict[str, float]] = None + industry_group_exposure: Optional[Dict[str, float]] = None + issuer: Optional[str] = None + lead_market_maker: Optional[str] = None + leverage_style: Optional[str] = None + levered_amount: Optional[float] = None + listing_exchange: Optional[str] = None + management_classification: Optional[str] = None + management_fee: Optional[float] = None + maturity_exposure: Optional[Dict[str, float]] = None + net_expenses: Optional[float] = None + num_holdings: Optional[float] = None + options_available: Optional[int] = None + options_volume: Optional[float] = None + other_expenses: Optional[float] = None + portfolio_manager: Optional[str] = None + primary_benchmark: Optional[str] = None + processed_date: Optional[str] = None + product_type: Optional[str] = None + put_call_ratio: Optional[float] = None + put_volume: Optional[float] = None + region: Optional[str] = None + sector_exposure: Optional[Dict[str, float]] = None + short_interest: Optional[float] = None + subadvisor: Optional[str] = None + subindustry_exposure: Optional[Dict[str, float]] = None + tax_classification: Optional[str] = None + total_expenses: Optional[float] = None + transfer_agent: Optional[str] = None + trustee: Optional[str] = None + + @staticmethod + def from_dict(d): + return EtfGlobalProfile( + administrator=d.get("administrator"), + advisor=d.get("advisor"), + asset_class=d.get("asset_class"), + aum=d.get("aum"), + avg_daily_trading_volume=d.get("avg_daily_trading_volume"), + bid_ask_spread=d.get("bid_ask_spread"), + call_volume=d.get("call_volume"), + category=d.get("category"), + composite_ticker=d.get("composite_ticker"), + coupon_exposure=d.get("coupon_exposure"), + creation_fee=d.get("creation_fee"), + creation_unit_size=d.get("creation_unit_size"), + currency_exposure=d.get("currency_exposure"), + custodian=d.get("custodian"), + description=d.get("description"), + development_class=d.get("development_class"), + discount_premium=d.get("discount_premium"), + distribution_frequency=d.get("distribution_frequency"), + distributor=d.get("distributor"), + effective_date=d.get("effective_date"), + fee_waivers=d.get("fee_waivers"), + fiscal_year_end=d.get("fiscal_year_end"), + focus=d.get("focus"), + futures_commission_merchant=d.get("futures_commission_merchant"), + geographic_exposure=d.get("geographic_exposure"), + inception_date=d.get("inception_date"), + industry_exposure=d.get("industry_exposure"), + industry_group_exposure=d.get("industry_group_exposure"), + issuer=d.get("issuer"), + lead_market_maker=d.get("lead_market_maker"), + leverage_style=d.get("leverage_style"), + levered_amount=d.get("levered_amount"), + listing_exchange=d.get("listing_exchange"), + management_classification=d.get("management_classification"), + management_fee=d.get("management_fee"), + maturity_exposure=d.get("maturity_exposure"), + net_expenses=d.get("net_expenses"), + num_holdings=d.get("num_holdings"), + options_available=d.get("options_available"), + options_volume=d.get("options_volume"), + other_expenses=d.get("other_expenses"), + portfolio_manager=d.get("portfolio_manager"), + primary_benchmark=d.get("primary_benchmark"), + processed_date=d.get("processed_date"), + product_type=d.get("product_type"), + put_call_ratio=d.get("put_call_ratio"), + put_volume=d.get("put_volume"), + region=d.get("region"), + sector_exposure=d.get("sector_exposure"), + short_interest=d.get("short_interest"), + subadvisor=d.get("subadvisor"), + subindustry_exposure=d.get("subindustry_exposure"), + tax_classification=d.get("tax_classification"), + total_expenses=d.get("total_expenses"), + transfer_agent=d.get("transfer_agent"), + trustee=d.get("trustee"), + ) + + +@modelclass +class EtfGlobalTaxonomy: + asset_class: Optional[str] = None + category: Optional[str] = None + composite_ticker: Optional[str] = None + country: Optional[str] = None + credit_quality_rating: Optional[str] = None + description: Optional[str] = None + development_class: Optional[str] = None + duration: Optional[str] = None + effective_date: Optional[str] = None + esg: Optional[str] = None + exposure_mechanism: Optional[str] = None + factor: Optional[str] = None + focus: Optional[str] = None + hedge_reset: Optional[str] = None + holdings_disclosure_frequency: Optional[str] = None + inception_date: Optional[str] = None + isin: Optional[str] = None + issuer: Optional[str] = None + leverage_reset: Optional[str] = None + leverage_style: Optional[str] = None + levered_amount: Optional[float] = None + management_classification: Optional[str] = None + management_style: Optional[str] = None + maturity: Optional[str] = None + objective: Optional[str] = None + primary_benchmark: Optional[str] = None + processed_date: Optional[str] = None + product_type: Optional[str] = None + rebalance_frequency: Optional[str] = None + reconstitution_frequency: Optional[str] = None + region: Optional[str] = None + secondary_objective: Optional[str] = None + selection_methodology: Optional[str] = None + selection_universe: Optional[str] = None + strategic_focus: Optional[str] = None + targeted_focus: Optional[str] = None + tax_classification: Optional[str] = None + us_code: Optional[str] = None + weighting_methodology: Optional[str] = None + + @staticmethod + def from_dict(d): + return EtfGlobalTaxonomy( + asset_class=d.get("asset_class"), + category=d.get("category"), + composite_ticker=d.get("composite_ticker"), + country=d.get("country"), + credit_quality_rating=d.get("credit_quality_rating"), + description=d.get("description"), + development_class=d.get("development_class"), + duration=d.get("duration"), + effective_date=d.get("effective_date"), + esg=d.get("esg"), + exposure_mechanism=d.get("exposure_mechanism"), + factor=d.get("factor"), + focus=d.get("focus"), + hedge_reset=d.get("hedge_reset"), + holdings_disclosure_frequency=d.get("holdings_disclosure_frequency"), + inception_date=d.get("inception_date"), + isin=d.get("isin"), + issuer=d.get("issuer"), + leverage_reset=d.get("leverage_reset"), + leverage_style=d.get("leverage_style"), + levered_amount=d.get("levered_amount"), + management_classification=d.get("management_classification"), + management_style=d.get("management_style"), + maturity=d.get("maturity"), + objective=d.get("objective"), + primary_benchmark=d.get("primary_benchmark"), + processed_date=d.get("processed_date"), + product_type=d.get("product_type"), + rebalance_frequency=d.get("rebalance_frequency"), + reconstitution_frequency=d.get("reconstitution_frequency"), + region=d.get("region"), + secondary_objective=d.get("secondary_objective"), + selection_methodology=d.get("selection_methodology"), + selection_universe=d.get("selection_universe"), + strategic_focus=d.get("strategic_focus"), + targeted_focus=d.get("targeted_focus"), + tax_classification=d.get("tax_classification"), + us_code=d.get("us_code"), + weighting_methodology=d.get("weighting_methodology"), + ) From 531f64ba5aa71826b3cbf5c43084f16fa7a65740 Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Thu, 16 Oct 2025 05:50:39 -0700 Subject: [PATCH 18/46] Add support for futures snapshot endpoint (#939) --- polygon/rest/models/futures.py | 51 ++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/polygon/rest/models/futures.py b/polygon/rest/models/futures.py index bfaf690f..1c87922f 100644 --- a/polygon/rest/models/futures.py +++ b/polygon/rest/models/futures.py @@ -265,8 +265,21 @@ class FuturesSnapshotMinute: last_updated: Optional[int] = None low: Optional[float] = None open: Optional[float] = None + timeframe: Optional[str] = None volume: Optional[float] = None + @staticmethod + def from_dict(d): + return FuturesSnapshotMinute( + close=d.get("close"), + high=d.get("high"), + last_updated=d.get("last_updated"), + low=d.get("low"), + open=d.get("open"), + timeframe=d.get("timeframe"), + volume=d.get("volume"), + ) + @modelclass class FuturesSnapshotQuote: @@ -277,6 +290,20 @@ class FuturesSnapshotQuote: bid_size: Optional[int] = None bid_timestamp: Optional[int] = None last_updated: Optional[int] = None + timeframe: Optional[str] = None + + @staticmethod + def from_dict(d): + return FuturesSnapshotQuote( + ask=d.get("ask"), + ask_size=d.get("ask_size"), + ask_timestamp=d.get("ask_timestamp"), + bid=d.get("bid"), + bid_size=d.get("bid_size"), + bid_timestamp=d.get("bid_timestamp"), + last_updated=d.get("last_updated"), + timeframe=d.get("timeframe"), + ) @modelclass @@ -284,6 +311,16 @@ class FuturesSnapshotTrade: last_updated: Optional[int] = None price: Optional[float] = None size: Optional[int] = None + timeframe: Optional[str] = None + + @staticmethod + def from_dict(d): + return FuturesSnapshotTrade( + last_updated=d.get("last_updated"), + price=d.get("price"), + size=d.get("size"), + timeframe=d.get("timeframe"), + ) @modelclass @@ -298,6 +335,20 @@ class FuturesSnapshotSession: settlement_price: Optional[float] = None volume: Optional[float] = None + @staticmethod + def from_dict(d): + return FuturesSnapshotSession( + change=d.get("change"), + change_percent=d.get("change_percent"), + close=d.get("close"), + high=d.get("high"), + low=d.get("low"), + open=d.get("open"), + previous_settlement=d.get("previous_settlement"), + settlement_price=d.get("settlement_price"), + volume=d.get("volume"), + ) + @modelclass class FuturesSnapshot: From 599f05f4fb6fc94b39c8bbd814cfdc40da03692c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Oct 2025 09:30:21 -0700 Subject: [PATCH 19/46] Bump types-setuptools from 75.8.0.20250110 to 80.9.0.20250822 (#942) Bumps [types-setuptools](https://github.com/typeshed-internal/stub_uploader) from 75.8.0.20250110 to 80.9.0.20250822. - [Commits](https://github.com/typeshed-internal/stub_uploader/commits) --- updated-dependencies: - dependency-name: types-setuptools dependency-version: 80.9.0.20250822 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 12 ++++++------ pyproject.toml | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/poetry.lock b/poetry.lock index f967b71d..2e96d717 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.2.0 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.2.1 and should not be changed by hand. [[package]] name = "alabaster" @@ -860,14 +860,14 @@ files = [ [[package]] name = "types-setuptools" -version = "75.8.0.20250110" +version = "80.9.0.20250822" description = "Typing stubs for setuptools" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "types_setuptools-75.8.0.20250110-py3-none-any.whl", hash = "sha256:a9f12980bbf9bcdc23ecd80755789085bad6bfce4060c2275bc2b4ca9f2bc480"}, - {file = "types_setuptools-75.8.0.20250110.tar.gz", hash = "sha256:96f7ec8bbd6e0a54ea180d66ad68ad7a1d7954e7281a710ea2de75e355545271"}, + {file = "types_setuptools-80.9.0.20250822-py3-none-any.whl", hash = "sha256:53bf881cb9d7e46ed12c76ef76c0aaf28cfe6211d3fab12e0b83620b1a8642c3"}, + {file = "types_setuptools-80.9.0.20250822.tar.gz", hash = "sha256:070ea7716968ec67a84c7f7768d9952ff24d28b65b6594797a464f1b3066f965"}, ] [[package]] @@ -1023,4 +1023,4 @@ test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-it [metadata] lock-version = "2.1" python-versions = "^3.9" -content-hash = "57769f5739287e97c684d13bdd40535ec92de6a1d6844e907c3736b2595aa203" +content-hash = "efc82a896b08be1a5c5f4182c5ee6c60df4a260724d5f469071cc958512bf46a" diff --git a/pyproject.toml b/pyproject.toml index 367331ce..cbf3b5d0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,7 +38,7 @@ sphinx-rtd-theme = "^3.0.2" # keep this in sync with docs/requirements.txt for readthedocs.org sphinx-autodoc-typehints = "^2.0.1" types-certifi = "^2021.10.8" -types-setuptools = "^75.8.0" +types-setuptools = "^80.9.0" pook = "^2.0.1" orjson = "^3.10.15" From ae99f9d527d7909973a2f6d7a25bbb7c194f4510 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Oct 2025 09:47:57 -0700 Subject: [PATCH 20/46] Bump sphinx from 7.1.2 to 7.4.7 (#943) Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 7.1.2 to 7.4.7. - [Release notes](https://github.com/sphinx-doc/sphinx/releases) - [Changelog](https://github.com/sphinx-doc/sphinx/blob/v7.4.7/CHANGES.rst) - [Commits](https://github.com/sphinx-doc/sphinx/compare/v7.1.2...v7.4.7) --- updated-dependencies: - dependency-name: sphinx dependency-version: 7.4.7 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 136 ++++++++++++++++++++++++------------------------- pyproject.toml | 2 +- 2 files changed, 68 insertions(+), 70 deletions(-) diff --git a/poetry.lock b/poetry.lock index 2e96d717..bee58d16 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2,14 +2,14 @@ [[package]] name = "alabaster" -version = "0.7.12" -description = "A configurable sidebar-enabled Sphinx theme" +version = "0.7.16" +description = "A light, configurable Sphinx theme" optional = false -python-versions = "*" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "alabaster-0.7.12-py2.py3-none-any.whl", hash = "sha256:446438bdcca0e05bd45ea2de1668c1d9b032e1a9154c2c259092d77031ddd359"}, - {file = "alabaster-0.7.12.tar.gz", hash = "sha256:a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02"}, + {file = "alabaster-0.7.16-py3-none-any.whl", hash = "sha256:b46733c07dce03ae4e150330b975c75737fa60f0a7c591b6c8bf4928a28e2c92"}, + {file = "alabaster-0.7.16.tar.gz", hash = "sha256:75a8b99c28a5dad50dd7f8ccdd447a121ddb3892da9e53d1ca5cca3106d58d65"}, ] [[package]] @@ -31,19 +31,19 @@ tests = ["cloudpickle ; platform_python_implementation == \"CPython\"", "coverag tests-no-zope = ["cloudpickle ; platform_python_implementation == \"CPython\"", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins"] [[package]] -name = "Babel" -version = "2.11.0" +name = "babel" +version = "2.17.0" description = "Internationalization utilities" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "Babel-2.11.0-py3-none-any.whl", hash = "sha256:1ad3eca1c885218f6dce2ab67291178944f810a10a9b5f3cb8382a5a232b64fe"}, - {file = "Babel-2.11.0.tar.gz", hash = "sha256:5ef4b3226b0180dedded4229651c8b0e1a3a6a2837d45a073272f313e4cf97f6"}, + {file = "babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2"}, + {file = "babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d"}, ] -[package.dependencies] -pytz = ">=2015.7" +[package.extras] +dev = ["backports.zoneinfo ; python_version < \"3.9\"", "freezegun (>=1.0,<2.0)", "jinja2 (>=3.0)", "pytest (>=6.0)", "pytest-cov", "pytz", "setuptools", "tzdata ; sys_platform == \"win32\""] [[package]] name = "black" @@ -149,14 +149,14 @@ files = [ [[package]] name = "docutils" -version = "0.18.1" +version = "0.21.2" description = "Docutils -- Python Documentation Utilities" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "docutils-0.18.1-py2.py3-none-any.whl", hash = "sha256:23010f129180089fbcd3bc08cfefccb3b890b0050e1ca00c867036e9d161b98c"}, - {file = "docutils-0.18.1.tar.gz", hash = "sha256:679987caf361a7539d76e584cbeddc311e3aee937877c87346f31debc63e9d06"}, + {file = "docutils-0.21.2-py3-none-any.whl", hash = "sha256:dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2"}, + {file = "docutils-0.21.2.tar.gz", hash = "sha256:3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f"}, ] [[package]] @@ -201,24 +201,28 @@ files = [ [[package]] name = "importlib-metadata" -version = "5.1.0" +version = "8.7.0" description = "Read metadata from Python packages" optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" groups = ["dev"] markers = "python_version == \"3.9\"" files = [ - {file = "importlib_metadata-5.1.0-py3-none-any.whl", hash = "sha256:d84d17e21670ec07990e1044a99efe8d615d860fd176fc29ef5c306068fda313"}, - {file = "importlib_metadata-5.1.0.tar.gz", hash = "sha256:d5059f9f1e8e41f80e9c56c2ee58811450c31984dfa625329ffd7c0dad88a73b"}, + {file = "importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd"}, + {file = "importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000"}, ] [package.dependencies] -zipp = ">=0.5" +zipp = ">=3.20" [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=2.2)"] perf = ["ipython"] -testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3) ; python_version < \"3.9\"", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7) ; platform_python_implementation != \"PyPy\"", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8 ; python_version < \"3.12\"", "pytest-mypy (>=0.9.1) ; platform_python_implementation != \"PyPy\"", "pytest-perf (>=0.9.2)"] +test = ["flufl.flake8", "importlib_resources (>=1.3) ; python_version < \"3.9\"", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] +type = ["pytest-mypy"] [[package]] name = "jinja2" @@ -544,18 +548,18 @@ xmltodict = ">=0.11.0" [[package]] name = "pygments" -version = "2.15.0" +version = "2.19.2" description = "Pygments is a syntax highlighting package written in Python." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "Pygments-2.15.0-py3-none-any.whl", hash = "sha256:77a3299119af881904cd5ecd1ac6a66214b6e9bed1f2db16993b54adede64094"}, - {file = "Pygments-2.15.0.tar.gz", hash = "sha256:f7e36cffc4c517fbc252861b9a6e4644ca0e5abadf9a113c72d1358ad09b9500"}, + {file = "pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b"}, + {file = "pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887"}, ] [package.extras] -plugins = ["importlib-metadata ; python_version < \"3.8\""] +windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pyrsistent" @@ -589,18 +593,6 @@ files = [ {file = "pyrsistent-0.19.2.tar.gz", hash = "sha256:bfa0351be89c9fcbcb8c9879b826f4353be10f58f8a677efab0c017bf7137ec2"}, ] -[[package]] -name = "pytz" -version = "2022.6" -description = "World timezone definitions, modern and historical" -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "pytz-2022.6-py2.py3-none-any.whl", hash = "sha256:222439474e9c98fced559f1709d89e6c9cbf8d79c794ff3eb9f8800064291427"}, - {file = "pytz-2022.6.tar.gz", hash = "sha256:e89512406b793ca39f5971bc999cc538ce125c0e51c27941bef4568b460095e2"}, -] - [[package]] name = "requests" version = "2.32.4" @@ -649,39 +641,40 @@ files = [ [[package]] name = "sphinx" -version = "7.1.2" +version = "7.4.7" description = "Python documentation generator" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "sphinx-7.1.2-py3-none-any.whl", hash = "sha256:d170a81825b2fcacb6dfd5a0d7f578a053e45d3f2b153fecc948c37344eb4cbe"}, - {file = "sphinx-7.1.2.tar.gz", hash = "sha256:780f4d32f1d7d1126576e0e5ecc19dc32ab76cd24e950228dcf7b1f6d3d9e22f"}, + {file = "sphinx-7.4.7-py3-none-any.whl", hash = "sha256:c2419e2135d11f1951cd994d6eb18a1835bd8fdd8429f9ca375dc1f3281bd239"}, + {file = "sphinx-7.4.7.tar.gz", hash = "sha256:242f92a7ea7e6c5b406fdc2615413890ba9f699114a9c09192d7dfead2ee9cfe"}, ] [package.dependencies] -alabaster = ">=0.7,<0.8" -babel = ">=2.9" -colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} -docutils = ">=0.18.1,<0.21" +alabaster = ">=0.7.14,<0.8.0" +babel = ">=2.13" +colorama = {version = ">=0.4.6", markers = "sys_platform == \"win32\""} +docutils = ">=0.20,<0.22" imagesize = ">=1.3" -importlib-metadata = {version = ">=4.8", markers = "python_version < \"3.10\""} -Jinja2 = ">=3.0" -packaging = ">=21.0" -Pygments = ">=2.13" -requests = ">=2.25.0" -snowballstemmer = ">=2.0" +importlib-metadata = {version = ">=6.0", markers = "python_version < \"3.10\""} +Jinja2 = ">=3.1" +packaging = ">=23.0" +Pygments = ">=2.17" +requests = ">=2.30.0" +snowballstemmer = ">=2.2" sphinxcontrib-applehelp = "*" sphinxcontrib-devhelp = "*" sphinxcontrib-htmlhelp = ">=2.0.0" sphinxcontrib-jsmath = "*" sphinxcontrib-qthelp = "*" -sphinxcontrib-serializinghtml = ">=1.1.5" +sphinxcontrib-serializinghtml = ">=1.1.9" +tomli = {version = ">=2", markers = "python_version < \"3.11\""} [package.extras] docs = ["sphinxcontrib-websupport"] -lint = ["docutils-stubs", "flake8 (>=3.5.0)", "flake8-simplify", "isort", "mypy (>=0.990)", "ruff", "sphinx-lint", "types-requests"] -test = ["cython", "filelock", "html5lib", "pytest (>=4.6)"] +lint = ["flake8 (>=6.0)", "importlib-metadata (>=6.0)", "mypy (==1.10.1)", "pytest (>=6.0)", "ruff (==0.5.2)", "sphinx-lint (>=0.9)", "tomli (>=2)", "types-docutils (==0.21.0.20240711)", "types-requests (>=2.30.0)"] +test = ["cython (>=3.0)", "defusedxml (>=0.7.1)", "pytest (>=8.0)", "setuptools (>=70.0)", "typing_extensions (>=4.9)"] [[package]] name = "sphinx-autodoc-typehints" @@ -819,18 +812,19 @@ test = ["pytest"] [[package]] name = "sphinxcontrib-serializinghtml" -version = "1.1.5" -description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)." +version = "2.0.0" +description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)" optional = false -python-versions = ">=3.5" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"}, - {file = "sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd"}, + {file = "sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl", hash = "sha256:6e2cb0eef194e10c27ec0023bfeb25badbbb5868244cf5bc5bdc04e4464bf331"}, + {file = "sphinxcontrib_serializinghtml-2.0.0.tar.gz", hash = "sha256:e9d912827f872c029017a53f0ef2180b327c3f7fd23c87229f7a8e8b70031d4d"}, ] [package.extras] -lint = ["docutils-stubs", "flake8", "mypy"] +lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] +standalone = ["Sphinx (>=5)"] test = ["pytest"] [[package]] @@ -1005,22 +999,26 @@ files = [ [[package]] name = "zipp" -version = "3.19.1" +version = "3.23.0" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] markers = "python_version == \"3.9\"" files = [ - {file = "zipp-3.19.1-py3-none-any.whl", hash = "sha256:2828e64edb5386ea6a52e7ba7cdb17bb30a73a858f5eb6eb93d8d36f5ea26091"}, - {file = "zipp-3.19.1.tar.gz", hash = "sha256:35427f6d5594f4acf82d25541438348c26736fa9b3afa2754bcd63cdb99d8e8f"}, + {file = "zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e"}, + {file = "zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166"}, ] [package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] +cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more_itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] +type = ["pytest-mypy"] [metadata] lock-version = "2.1" python-versions = "^3.9" -content-hash = "efc82a896b08be1a5c5f4182c5ee6c60df4a260724d5f469071cc958512bf46a" +content-hash = "94372eb0516b78c9a6c53dd92d9efa9b0b359f4ec74cedacb9985bcdebde9bda" diff --git a/pyproject.toml b/pyproject.toml index cbf3b5d0..053ff64e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,7 +33,7 @@ certifi = ">=2022.5.18,<2026.0.0" black = "^24.8.0" mypy = "^1.18" types-urllib3 = "^1.26.25" -Sphinx = "^7.1.2" +Sphinx = "^7.4.7" sphinx-rtd-theme = "^3.0.2" # keep this in sync with docs/requirements.txt for readthedocs.org sphinx-autodoc-typehints = "^2.0.1" From 07282ee6830a5d629099c28fd32e909f19204d9d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Oct 2025 10:01:28 -0700 Subject: [PATCH 21/46] Bump orjson from 3.10.15 to 3.11.3 (#944) Bumps [orjson](https://github.com/ijl/orjson) from 3.10.15 to 3.11.3. - [Release notes](https://github.com/ijl/orjson/releases) - [Changelog](https://github.com/ijl/orjson/blob/master/CHANGELOG.md) - [Commits](https://github.com/ijl/orjson/compare/3.10.15...3.11.3) --- updated-dependencies: - dependency-name: orjson dependency-version: 3.11.3 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 168 +++++++++++++++++++++++++------------------------ pyproject.toml | 2 +- 2 files changed, 87 insertions(+), 83 deletions(-) diff --git a/poetry.lock b/poetry.lock index bee58d16..70807c92 100644 --- a/poetry.lock +++ b/poetry.lock @@ -402,91 +402,95 @@ six = ">=1.8.0" [[package]] name = "orjson" -version = "3.10.15" +version = "3.11.3" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "orjson-3.10.15-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:552c883d03ad185f720d0c09583ebde257e41b9521b74ff40e08b7dec4559c04"}, - {file = "orjson-3.10.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:616e3e8d438d02e4854f70bfdc03a6bcdb697358dbaa6bcd19cbe24d24ece1f8"}, - {file = "orjson-3.10.15-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7c2c79fa308e6edb0ffab0a31fd75a7841bf2a79a20ef08a3c6e3b26814c8ca8"}, - {file = "orjson-3.10.15-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cb85490aa6bf98abd20607ab5c8324c0acb48d6da7863a51be48505646c814"}, - {file = "orjson-3.10.15-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:763dadac05e4e9d2bc14938a45a2d0560549561287d41c465d3c58aec818b164"}, - {file = "orjson-3.10.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a330b9b4734f09a623f74a7490db713695e13b67c959713b78369f26b3dee6bf"}, - {file = "orjson-3.10.15-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a61a4622b7ff861f019974f73d8165be1bd9a0855e1cad18ee167acacabeb061"}, - {file = "orjson-3.10.15-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:acd271247691574416b3228db667b84775c497b245fa275c6ab90dc1ffbbd2b3"}, - {file = "orjson-3.10.15-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:e4759b109c37f635aa5c5cc93a1b26927bfde24b254bcc0e1149a9fada253d2d"}, - {file = "orjson-3.10.15-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:9e992fd5cfb8b9f00bfad2fd7a05a4299db2bbe92e6440d9dd2fab27655b3182"}, - {file = "orjson-3.10.15-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f95fb363d79366af56c3f26b71df40b9a583b07bbaaf5b317407c4d58497852e"}, - {file = "orjson-3.10.15-cp310-cp310-win32.whl", hash = "sha256:f9875f5fea7492da8ec2444839dcc439b0ef298978f311103d0b7dfd775898ab"}, - {file = "orjson-3.10.15-cp310-cp310-win_amd64.whl", hash = "sha256:17085a6aa91e1cd70ca8533989a18b5433e15d29c574582f76f821737c8d5806"}, - {file = "orjson-3.10.15-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:c4cc83960ab79a4031f3119cc4b1a1c627a3dc09df125b27c4201dff2af7eaa6"}, - {file = "orjson-3.10.15-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ddbeef2481d895ab8be5185f2432c334d6dec1f5d1933a9c83014d188e102cef"}, - {file = "orjson-3.10.15-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9e590a0477b23ecd5b0ac865b1b907b01b3c5535f5e8a8f6ab0e503efb896334"}, - {file = "orjson-3.10.15-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a6be38bd103d2fd9bdfa31c2720b23b5d47c6796bcb1d1b598e3924441b4298d"}, - {file = "orjson-3.10.15-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ff4f6edb1578960ed628a3b998fa54d78d9bb3e2eb2cfc5c2a09732431c678d0"}, - {file = "orjson-3.10.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0482b21d0462eddd67e7fce10b89e0b6ac56570424662b685a0d6fccf581e13"}, - {file = "orjson-3.10.15-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bb5cc3527036ae3d98b65e37b7986a918955f85332c1ee07f9d3f82f3a6899b5"}, - {file = "orjson-3.10.15-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d569c1c462912acdd119ccbf719cf7102ea2c67dd03b99edcb1a3048651ac96b"}, - {file = "orjson-3.10.15-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:1e6d33efab6b71d67f22bf2962895d3dc6f82a6273a965fab762e64fa90dc399"}, - {file = "orjson-3.10.15-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:c33be3795e299f565681d69852ac8c1bc5c84863c0b0030b2b3468843be90388"}, - {file = "orjson-3.10.15-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:eea80037b9fae5339b214f59308ef0589fc06dc870578b7cce6d71eb2096764c"}, - {file = "orjson-3.10.15-cp311-cp311-win32.whl", hash = "sha256:d5ac11b659fd798228a7adba3e37c010e0152b78b1982897020a8e019a94882e"}, - {file = "orjson-3.10.15-cp311-cp311-win_amd64.whl", hash = "sha256:cf45e0214c593660339ef63e875f32ddd5aa3b4adc15e662cdb80dc49e194f8e"}, - {file = "orjson-3.10.15-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9d11c0714fc85bfcf36ada1179400862da3288fc785c30e8297844c867d7505a"}, - {file = "orjson-3.10.15-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dba5a1e85d554e3897fa9fe6fbcff2ed32d55008973ec9a2b992bd9a65d2352d"}, - {file = "orjson-3.10.15-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7723ad949a0ea502df656948ddd8b392780a5beaa4c3b5f97e525191b102fff0"}, - {file = "orjson-3.10.15-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6fd9bc64421e9fe9bd88039e7ce8e58d4fead67ca88e3a4014b143cec7684fd4"}, - {file = "orjson-3.10.15-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dadba0e7b6594216c214ef7894c4bd5f08d7c0135f4dd0145600be4fbcc16767"}, - {file = "orjson-3.10.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b48f59114fe318f33bbaee8ebeda696d8ccc94c9e90bc27dbe72153094e26f41"}, - {file = "orjson-3.10.15-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:035fb83585e0f15e076759b6fedaf0abb460d1765b6a36f48018a52858443514"}, - {file = "orjson-3.10.15-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d13b7fe322d75bf84464b075eafd8e7dd9eae05649aa2a5354cfa32f43c59f17"}, - {file = "orjson-3.10.15-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:7066b74f9f259849629e0d04db6609db4cf5b973248f455ba5d3bd58a4daaa5b"}, - {file = "orjson-3.10.15-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:88dc3f65a026bd3175eb157fea994fca6ac7c4c8579fc5a86fc2114ad05705b7"}, - {file = "orjson-3.10.15-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b342567e5465bd99faa559507fe45e33fc76b9fb868a63f1642c6bc0735ad02a"}, - {file = "orjson-3.10.15-cp312-cp312-win32.whl", hash = "sha256:0a4f27ea5617828e6b58922fdbec67b0aa4bb844e2d363b9244c47fa2180e665"}, - {file = "orjson-3.10.15-cp312-cp312-win_amd64.whl", hash = "sha256:ef5b87e7aa9545ddadd2309efe6824bd3dd64ac101c15dae0f2f597911d46eaa"}, - {file = "orjson-3.10.15-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:bae0e6ec2b7ba6895198cd981b7cca95d1487d0147c8ed751e5632ad16f031a6"}, - {file = "orjson-3.10.15-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f93ce145b2db1252dd86af37d4165b6faa83072b46e3995ecc95d4b2301b725a"}, - {file = "orjson-3.10.15-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7c203f6f969210128af3acae0ef9ea6aab9782939f45f6fe02d05958fe761ef9"}, - {file = "orjson-3.10.15-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8918719572d662e18b8af66aef699d8c21072e54b6c82a3f8f6404c1f5ccd5e0"}, - {file = "orjson-3.10.15-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f71eae9651465dff70aa80db92586ad5b92df46a9373ee55252109bb6b703307"}, - {file = "orjson-3.10.15-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e117eb299a35f2634e25ed120c37c641398826c2f5a3d3cc39f5993b96171b9e"}, - {file = "orjson-3.10.15-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:13242f12d295e83c2955756a574ddd6741c81e5b99f2bef8ed8d53e47a01e4b7"}, - {file = "orjson-3.10.15-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7946922ada8f3e0b7b958cc3eb22cfcf6c0df83d1fe5521b4a100103e3fa84c8"}, - {file = "orjson-3.10.15-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:b7155eb1623347f0f22c38c9abdd738b287e39b9982e1da227503387b81b34ca"}, - {file = "orjson-3.10.15-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:208beedfa807c922da4e81061dafa9c8489c6328934ca2a562efa707e049e561"}, - {file = "orjson-3.10.15-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eca81f83b1b8c07449e1d6ff7074e82e3fd6777e588f1a6632127f286a968825"}, - {file = "orjson-3.10.15-cp313-cp313-win32.whl", hash = "sha256:c03cd6eea1bd3b949d0d007c8d57049aa2b39bd49f58b4b2af571a5d3833d890"}, - {file = "orjson-3.10.15-cp313-cp313-win_amd64.whl", hash = "sha256:fd56a26a04f6ba5fb2045b0acc487a63162a958ed837648c5781e1fe3316cfbf"}, - {file = "orjson-3.10.15-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:5e8afd6200e12771467a1a44e5ad780614b86abb4b11862ec54861a82d677746"}, - {file = "orjson-3.10.15-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da9a18c500f19273e9e104cca8c1f0b40a6470bcccfc33afcc088045d0bf5ea6"}, - {file = "orjson-3.10.15-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb00b7bfbdf5d34a13180e4805d76b4567025da19a197645ca746fc2fb536586"}, - {file = "orjson-3.10.15-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:33aedc3d903378e257047fee506f11e0833146ca3e57a1a1fb0ddb789876c1e1"}, - {file = "orjson-3.10.15-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd0099ae6aed5eb1fc84c9eb72b95505a3df4267e6962eb93cdd5af03be71c98"}, - {file = "orjson-3.10.15-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c864a80a2d467d7786274fce0e4f93ef2a7ca4ff31f7fc5634225aaa4e9e98c"}, - {file = "orjson-3.10.15-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c25774c9e88a3e0013d7d1a6c8056926b607a61edd423b50eb5c88fd7f2823ae"}, - {file = "orjson-3.10.15-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:e78c211d0074e783d824ce7bb85bf459f93a233eb67a5b5003498232ddfb0e8a"}, - {file = "orjson-3.10.15-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:43e17289ffdbbac8f39243916c893d2ae41a2ea1a9cbb060a56a4d75286351ae"}, - {file = "orjson-3.10.15-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:781d54657063f361e89714293c095f506c533582ee40a426cb6489c48a637b81"}, - {file = "orjson-3.10.15-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:6875210307d36c94873f553786a808af2788e362bd0cf4c8e66d976791e7b528"}, - {file = "orjson-3.10.15-cp38-cp38-win32.whl", hash = "sha256:305b38b2b8f8083cc3d618927d7f424349afce5975b316d33075ef0f73576b60"}, - {file = "orjson-3.10.15-cp38-cp38-win_amd64.whl", hash = "sha256:5dd9ef1639878cc3efffed349543cbf9372bdbd79f478615a1c633fe4e4180d1"}, - {file = "orjson-3.10.15-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:ffe19f3e8d68111e8644d4f4e267a069ca427926855582ff01fc012496d19969"}, - {file = "orjson-3.10.15-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d433bf32a363823863a96561a555227c18a522a8217a6f9400f00ddc70139ae2"}, - {file = "orjson-3.10.15-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:da03392674f59a95d03fa5fb9fe3a160b0511ad84b7a3914699ea5a1b3a38da2"}, - {file = "orjson-3.10.15-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3a63bb41559b05360ded9132032239e47983a39b151af1201f07ec9370715c82"}, - {file = "orjson-3.10.15-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3766ac4702f8f795ff3fa067968e806b4344af257011858cc3d6d8721588b53f"}, - {file = "orjson-3.10.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a1c73dcc8fadbd7c55802d9aa093b36878d34a3b3222c41052ce6b0fc65f8e8"}, - {file = "orjson-3.10.15-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b299383825eafe642cbab34be762ccff9fd3408d72726a6b2a4506d410a71ab3"}, - {file = "orjson-3.10.15-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:abc7abecdbf67a173ef1316036ebbf54ce400ef2300b4e26a7b843bd446c2480"}, - {file = "orjson-3.10.15-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:3614ea508d522a621384c1d6639016a5a2e4f027f3e4a1c93a51867615d28829"}, - {file = "orjson-3.10.15-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:295c70f9dc154307777ba30fe29ff15c1bcc9dfc5c48632f37d20a607e9ba85a"}, - {file = "orjson-3.10.15-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:63309e3ff924c62404923c80b9e2048c1f74ba4b615e7584584389ada50ed428"}, - {file = "orjson-3.10.15-cp39-cp39-win32.whl", hash = "sha256:a2f708c62d026fb5340788ba94a55c23df4e1869fec74be455e0b2f5363b8507"}, - {file = "orjson-3.10.15-cp39-cp39-win_amd64.whl", hash = "sha256:efcf6c735c3d22ef60c4aa27a5238f1a477df85e9b15f2142f9d669beb2d13fd"}, - {file = "orjson-3.10.15.tar.gz", hash = "sha256:05ca7fe452a2e9d8d9d706a2984c95b9c2ebc5db417ce0b7a49b91d50642a23e"}, + {file = "orjson-3.11.3-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:29cb1f1b008d936803e2da3d7cba726fc47232c45df531b29edf0b232dd737e7"}, + {file = "orjson-3.11.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97dceed87ed9139884a55db8722428e27bd8452817fbf1869c58b49fecab1120"}, + {file = "orjson-3.11.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:58533f9e8266cb0ac298e259ed7b4d42ed3fa0b78ce76860626164de49e0d467"}, + {file = "orjson-3.11.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c212cfdd90512fe722fa9bd620de4d46cda691415be86b2e02243242ae81873"}, + {file = "orjson-3.11.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ff835b5d3e67d9207343effb03760c00335f8b5285bfceefd4dc967b0e48f6a"}, + {file = "orjson-3.11.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5aa4682912a450c2db89cbd92d356fef47e115dffba07992555542f344d301b"}, + {file = "orjson-3.11.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7d18dd34ea2e860553a579df02041845dee0af8985dff7f8661306f95504ddf"}, + {file = "orjson-3.11.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d8b11701bc43be92ea42bd454910437b355dfb63696c06fe953ffb40b5f763b4"}, + {file = "orjson-3.11.3-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:90368277087d4af32d38bd55f9da2ff466d25325bf6167c8f382d8ee40cb2bbc"}, + {file = "orjson-3.11.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fd7ff459fb393358d3a155d25b275c60b07a2c83dcd7ea962b1923f5a1134569"}, + {file = "orjson-3.11.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f8d902867b699bcd09c176a280b1acdab57f924489033e53d0afe79817da37e6"}, + {file = "orjson-3.11.3-cp310-cp310-win32.whl", hash = "sha256:bb93562146120bb51e6b154962d3dadc678ed0fce96513fa6bc06599bb6f6edc"}, + {file = "orjson-3.11.3-cp310-cp310-win_amd64.whl", hash = "sha256:976c6f1975032cc327161c65d4194c549f2589d88b105a5e3499429a54479770"}, + {file = "orjson-3.11.3-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9d2ae0cc6aeb669633e0124531f342a17d8e97ea999e42f12a5ad4adaa304c5f"}, + {file = "orjson-3.11.3-cp311-cp311-macosx_15_0_arm64.whl", hash = "sha256:ba21dbb2493e9c653eaffdc38819b004b7b1b246fb77bfc93dc016fe664eac91"}, + {file = "orjson-3.11.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00f1a271e56d511d1569937c0447d7dce5a99a33ea0dec76673706360a051904"}, + {file = "orjson-3.11.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b67e71e47caa6680d1b6f075a396d04fa6ca8ca09aafb428731da9b3ea32a5a6"}, + {file = "orjson-3.11.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d7d012ebddffcce8c85734a6d9e5f08180cd3857c5f5a3ac70185b43775d043d"}, + {file = "orjson-3.11.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd759f75d6b8d1b62012b7f5ef9461d03c804f94d539a5515b454ba3a6588038"}, + {file = "orjson-3.11.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6890ace0809627b0dff19cfad92d69d0fa3f089d3e359a2a532507bb6ba34efb"}, + {file = "orjson-3.11.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9d4a5e041ae435b815e568537755773d05dac031fee6a57b4ba70897a44d9d2"}, + {file = "orjson-3.11.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2d68bf97a771836687107abfca089743885fb664b90138d8761cce61d5625d55"}, + {file = "orjson-3.11.3-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:bfc27516ec46f4520b18ef645864cee168d2a027dbf32c5537cb1f3e3c22dac1"}, + {file = "orjson-3.11.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f66b001332a017d7945e177e282a40b6997056394e3ed7ddb41fb1813b83e824"}, + {file = "orjson-3.11.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:212e67806525d2561efbfe9e799633b17eb668b8964abed6b5319b2f1cfbae1f"}, + {file = "orjson-3.11.3-cp311-cp311-win32.whl", hash = "sha256:6e8e0c3b85575a32f2ffa59de455f85ce002b8bdc0662d6b9c2ed6d80ab5d204"}, + {file = "orjson-3.11.3-cp311-cp311-win_amd64.whl", hash = "sha256:6be2f1b5d3dc99a5ce5ce162fc741c22ba9f3443d3dd586e6a1211b7bc87bc7b"}, + {file = "orjson-3.11.3-cp311-cp311-win_arm64.whl", hash = "sha256:fafb1a99d740523d964b15c8db4eabbfc86ff29f84898262bf6e3e4c9e97e43e"}, + {file = "orjson-3.11.3-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:8c752089db84333e36d754c4baf19c0e1437012242048439c7e80eb0e6426e3b"}, + {file = "orjson-3.11.3-cp312-cp312-macosx_15_0_arm64.whl", hash = "sha256:9b8761b6cf04a856eb544acdd82fc594b978f12ac3602d6374a7edb9d86fd2c2"}, + {file = "orjson-3.11.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b13974dc8ac6ba22feaa867fc19135a3e01a134b4f7c9c28162fed4d615008a"}, + {file = "orjson-3.11.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f83abab5bacb76d9c821fd5c07728ff224ed0e52d7a71b7b3de822f3df04e15c"}, + {file = "orjson-3.11.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e6fbaf48a744b94091a56c62897b27c31ee2da93d826aa5b207131a1e13d4064"}, + {file = "orjson-3.11.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bc779b4f4bba2847d0d2940081a7b6f7b5877e05408ffbb74fa1faf4a136c424"}, + {file = "orjson-3.11.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bd4b909ce4c50faa2192da6bb684d9848d4510b736b0611b6ab4020ea6fd2d23"}, + {file = "orjson-3.11.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:524b765ad888dc5518bbce12c77c2e83dee1ed6b0992c1790cc5fb49bb4b6667"}, + {file = "orjson-3.11.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:84fd82870b97ae3cdcea9d8746e592b6d40e1e4d4527835fc520c588d2ded04f"}, + {file = "orjson-3.11.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:fbecb9709111be913ae6879b07bafd4b0785b44c1eb5cac8ac76da048b3885a1"}, + {file = "orjson-3.11.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9dba358d55aee552bd868de348f4736ca5a4086d9a62e2bfbbeeb5629fe8b0cc"}, + {file = "orjson-3.11.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:eabcf2e84f1d7105f84580e03012270c7e97ecb1fb1618bda395061b2a84a049"}, + {file = "orjson-3.11.3-cp312-cp312-win32.whl", hash = "sha256:3782d2c60b8116772aea8d9b7905221437fdf53e7277282e8d8b07c220f96cca"}, + {file = "orjson-3.11.3-cp312-cp312-win_amd64.whl", hash = "sha256:79b44319268af2eaa3e315b92298de9a0067ade6e6003ddaef72f8e0bedb94f1"}, + {file = "orjson-3.11.3-cp312-cp312-win_arm64.whl", hash = "sha256:0e92a4e83341ef79d835ca21b8bd13e27c859e4e9e4d7b63defc6e58462a3710"}, + {file = "orjson-3.11.3-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:af40c6612fd2a4b00de648aa26d18186cd1322330bd3a3cc52f87c699e995810"}, + {file = "orjson-3.11.3-cp313-cp313-macosx_15_0_arm64.whl", hash = "sha256:9f1587f26c235894c09e8b5b7636a38091a9e6e7fe4531937534749c04face43"}, + {file = "orjson-3.11.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:61dcdad16da5bb486d7227a37a2e789c429397793a6955227cedbd7252eb5a27"}, + {file = "orjson-3.11.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:11c6d71478e2cbea0a709e8a06365fa63da81da6498a53e4c4f065881d21ae8f"}, + {file = "orjson-3.11.3-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff94112e0098470b665cb0ed06efb187154b63649403b8d5e9aedeb482b4548c"}, + {file = "orjson-3.11.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae8b756575aaa2a855a75192f356bbda11a89169830e1439cfb1a3e1a6dde7be"}, + {file = "orjson-3.11.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c9416cc19a349c167ef76135b2fe40d03cea93680428efee8771f3e9fb66079d"}, + {file = "orjson-3.11.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b822caf5b9752bc6f246eb08124c3d12bf2175b66ab74bac2ef3bbf9221ce1b2"}, + {file = "orjson-3.11.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:414f71e3bdd5573893bf5ecdf35c32b213ed20aa15536fe2f588f946c318824f"}, + {file = "orjson-3.11.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:828e3149ad8815dc14468f36ab2a4b819237c155ee1370341b91ea4c8672d2ee"}, + {file = "orjson-3.11.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ac9e05f25627ffc714c21f8dfe3a579445a5c392a9c8ae7ba1d0e9fb5333f56e"}, + {file = "orjson-3.11.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e44fbe4000bd321d9f3b648ae46e0196d21577cf66ae684a96ff90b1f7c93633"}, + {file = "orjson-3.11.3-cp313-cp313-win32.whl", hash = "sha256:2039b7847ba3eec1f5886e75e6763a16e18c68a63efc4b029ddf994821e2e66b"}, + {file = "orjson-3.11.3-cp313-cp313-win_amd64.whl", hash = "sha256:29be5ac4164aa8bdcba5fa0700a3c9c316b411d8ed9d39ef8a882541bd452fae"}, + {file = "orjson-3.11.3-cp313-cp313-win_arm64.whl", hash = "sha256:18bd1435cb1f2857ceb59cfb7de6f92593ef7b831ccd1b9bfb28ca530e539dce"}, + {file = "orjson-3.11.3-cp314-cp314-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:cf4b81227ec86935568c7edd78352a92e97af8da7bd70bdfdaa0d2e0011a1ab4"}, + {file = "orjson-3.11.3-cp314-cp314-macosx_15_0_arm64.whl", hash = "sha256:bc8bc85b81b6ac9fc4dae393a8c159b817f4c2c9dee5d12b773bddb3b95fc07e"}, + {file = "orjson-3.11.3-cp314-cp314-manylinux_2_34_aarch64.whl", hash = "sha256:88dcfc514cfd1b0de038443c7b3e6a9797ffb1b3674ef1fd14f701a13397f82d"}, + {file = "orjson-3.11.3-cp314-cp314-manylinux_2_34_x86_64.whl", hash = "sha256:d61cd543d69715d5fc0a690c7c6f8dcc307bc23abef9738957981885f5f38229"}, + {file = "orjson-3.11.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:2b7b153ed90ababadbef5c3eb39549f9476890d339cf47af563aea7e07db2451"}, + {file = "orjson-3.11.3-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:7909ae2460f5f494fecbcd10613beafe40381fd0316e35d6acb5f3a05bfda167"}, + {file = "orjson-3.11.3-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:2030c01cbf77bc67bee7eef1e7e31ecf28649353987775e3583062c752da0077"}, + {file = "orjson-3.11.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:a0169ebd1cbd94b26c7a7ad282cf5c2744fce054133f959e02eb5265deae1872"}, + {file = "orjson-3.11.3-cp314-cp314-win32.whl", hash = "sha256:0c6d7328c200c349e3a4c6d8c83e0a5ad029bdc2d417f234152bf34842d0fc8d"}, + {file = "orjson-3.11.3-cp314-cp314-win_amd64.whl", hash = "sha256:317bbe2c069bbc757b1a2e4105b64aacd3bc78279b66a6b9e51e846e4809f804"}, + {file = "orjson-3.11.3-cp314-cp314-win_arm64.whl", hash = "sha256:e8f6a7a27d7b7bec81bd5924163e9af03d49bbb63013f107b48eb5d16db711bc"}, + {file = "orjson-3.11.3-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:56afaf1e9b02302ba636151cfc49929c1bb66b98794291afd0e5f20fecaf757c"}, + {file = "orjson-3.11.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:913f629adef31d2d350d41c051ce7e33cf0fd06a5d1cb28d49b1899b23b903aa"}, + {file = "orjson-3.11.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e0a23b41f8f98b4e61150a03f83e4f0d566880fe53519d445a962929a4d21045"}, + {file = "orjson-3.11.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3d721fee37380a44f9d9ce6c701b3960239f4fb3d5ceea7f31cbd43882edaa2f"}, + {file = "orjson-3.11.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73b92a5b69f31b1a58c0c7e31080aeaec49c6e01b9522e71ff38d08f15aa56de"}, + {file = "orjson-3.11.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d2489b241c19582b3f1430cc5d732caefc1aaf378d97e7fb95b9e56bed11725f"}, + {file = "orjson-3.11.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c5189a5dab8b0312eadaf9d58d3049b6a52c454256493a557405e77a3d67ab7f"}, + {file = "orjson-3.11.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:9d8787bdfbb65a85ea76d0e96a3b1bed7bf0fbcb16d40408dc1172ad784a49d2"}, + {file = "orjson-3.11.3-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:8e531abd745f51f8035e207e75e049553a86823d189a51809c078412cefb399a"}, + {file = "orjson-3.11.3-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:8ab962931015f170b97a3dd7bd933399c1bae8ed8ad0fb2a7151a5654b6941c7"}, + {file = "orjson-3.11.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:124d5ba71fee9c9902c4a7baa9425e663f7f0aecf73d31d54fe3dd357d62c1a7"}, + {file = "orjson-3.11.3-cp39-cp39-win32.whl", hash = "sha256:22724d80ee5a815a44fc76274bb7ba2e7464f5564aacb6ecddaa9970a83e3225"}, + {file = "orjson-3.11.3-cp39-cp39-win_amd64.whl", hash = "sha256:215c595c792a87d4407cb72dd5e0f6ee8e694ceeb7f9102b533c5a9bf2a916bb"}, + {file = "orjson-3.11.3.tar.gz", hash = "sha256:1c0603b1d2ffcd43a411d64797a19556ef76958aef1c182f22dc30860152a98a"}, ] [[package]] @@ -1021,4 +1025,4 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.1" python-versions = "^3.9" -content-hash = "94372eb0516b78c9a6c53dd92d9efa9b0b359f4ec74cedacb9985bcdebde9bda" +content-hash = "8862e5f182dcc8b07b2c3ebff198187fcb1c4d17895071592b83c772ad84b980" diff --git a/pyproject.toml b/pyproject.toml index 053ff64e..08c2b4c1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ sphinx-autodoc-typehints = "^2.0.1" types-certifi = "^2021.10.8" types-setuptools = "^80.9.0" pook = "^2.0.1" -orjson = "^3.10.15" +orjson = "^3.11.3" [build-system] requires = ["poetry-core>=1.0.0"] From a3356d8940337d9e9307dd89ade3f2743de0d5bd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Oct 2025 10:08:27 -0700 Subject: [PATCH 22/46] Bump pook from 2.0.1 to 2.1.4 (#945) Bumps [pook](https://github.com/h2non/pook) from 2.0.1 to 2.1.4. - [Release notes](https://github.com/h2non/pook/releases) - [Changelog](https://github.com/h2non/pook/blob/master/History.rst) - [Commits](https://github.com/h2non/pook/compare/v2.0.1...v2.1.4) --- updated-dependencies: - dependency-name: pook dependency-version: 2.1.4 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 10 +++++----- pyproject.toml | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/poetry.lock b/poetry.lock index 70807c92..75ed4a28 100644 --- a/poetry.lock +++ b/poetry.lock @@ -535,14 +535,14 @@ test = ["appdirs (==1.4.4)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-mock [[package]] name = "pook" -version = "2.0.1" +version = "2.1.4" description = "HTTP traffic mocking and expectations made easy" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pook-2.0.1-py3-none-any.whl", hash = "sha256:30d73c95e0520f45c1e3889f3bf486e990b6f04b4915aa9daf86cf0d8136b2e1"}, - {file = "pook-2.0.1.tar.gz", hash = "sha256:e04c0e698f256438b4dfbf3ab1b27559f0ec25e42176823167f321f4e8b9c9e4"}, + {file = "pook-2.1.4-py3-none-any.whl", hash = "sha256:3f273ab189874dd775a15c3fa1b1bf89f28b001d2619c5f909e4d3f7df66d36e"}, + {file = "pook-2.1.4.tar.gz", hash = "sha256:2bcbc7d58d1d88b6f2da98c711f5391d5f690292bdd5ff2ccda927576500937a"}, ] [package.dependencies] @@ -1025,4 +1025,4 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.1" python-versions = "^3.9" -content-hash = "8862e5f182dcc8b07b2c3ebff198187fcb1c4d17895071592b83c772ad84b980" +content-hash = "cb904c35dab26d810aa728bd0f813e6a64290bd95915fe9230e8e1c2d7de8251" diff --git a/pyproject.toml b/pyproject.toml index 08c2b4c1..e85f2804 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,7 +39,7 @@ sphinx-rtd-theme = "^3.0.2" sphinx-autodoc-typehints = "^2.0.1" types-certifi = "^2021.10.8" types-setuptools = "^80.9.0" -pook = "^2.0.1" +pook = "^2.1.4" orjson = "^3.11.3" [build-system] From 3bb3d7b62dae47e2d149a1ff172d59bbab1aebf6 Mon Sep 17 00:00:00 2001 From: Roman Zydyk <31843161+romanzdk@users.noreply.github.com> Date: Thu, 23 Oct 2025 16:12:41 +0200 Subject: [PATCH 23/46] Use logging instead of print (#947) Co-authored-by: Roman Zydyk --- polygon/rest/base.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/polygon/rest/base.py b/polygon/rest/base.py index 76cf1430..7501f5ce 100644 --- a/polygon/rest/base.py +++ b/polygon/rest/base.py @@ -113,8 +113,8 @@ def _get( print_headers["Authorization"] = print_headers["Authorization"].replace( self.API_KEY, "REDACTED" ) - print(f"Request URL: {full_url}") - print(f"Request Headers: {print_headers}") + logger.info("Request URL: %s", full_url) + logger.info("Request Headers: %s", print_headers) resp = self.client.request( "GET", @@ -125,7 +125,7 @@ def _get( if self.trace: resp_headers_dict = dict(resp.headers.items()) - print(f"Response Headers: {resp_headers_dict}") + logger.info("Response Headers: %s", resp_headers_dict) if resp.status != 200: raise BadResponse(resp.data.decode("utf-8")) @@ -136,7 +136,7 @@ def _get( try: obj = self._decode(resp) except ValueError as e: - print(f"Error decoding json response: {e}") + logger.error("Error decoding json response: %s", e) return [] if result_key: @@ -222,7 +222,7 @@ def _paginate_iter( try: decoded = self._decode(resp) except ValueError as e: - print(f"Error decoding json response: {e}") + logger.error("Error decoding json response: %s", e) return [] if result_key not in decoded: From d57521c3f05017a8d2658a26a99bc5b2a56f2021 Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Thu, 23 Oct 2025 08:03:10 -0700 Subject: [PATCH 24/46] Update README.md (#948) --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3ca7b71c..768b5ed1 100644 --- a/README.md +++ b/README.md @@ -135,12 +135,12 @@ Sometimes you may find it useful to see the actual request and response details You can activate the debug mode as follows: ```python -client = RESTClient(trace=True) +client = RESTClient(trace=True, verbose=True) ``` ### What Does Debug Mode Do? -When debug mode is enabled, the client will print out useful debugging information for each API request. This includes: the request URL, the headers sent in the request, and the headers received in the response. +When debug mode is enabled, the client will print out useful debugging information for each API request. You need to enable `verbose=True` too so that you log the trace or already have your own logger configured. This includes: the request URL, the headers sent in the request, and the headers received in the response. ### Example Output From 3691d0bd79fa49f143c173f1ecb34d8c40ea6f37 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Oct 2025 09:46:11 -0700 Subject: [PATCH 25/46] Bump orjson from 3.11.3 to 3.11.4 (#949) Bumps [orjson](https://github.com/ijl/orjson) from 3.11.3 to 3.11.4. - [Release notes](https://github.com/ijl/orjson/releases) - [Changelog](https://github.com/ijl/orjson/blob/master/CHANGELOG.md) - [Commits](https://github.com/ijl/orjson/compare/3.11.3...3.11.4) --- updated-dependencies: - dependency-name: orjson dependency-version: 3.11.4 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 174 +++++++++++++++++++++++++------------------------ pyproject.toml | 2 +- 2 files changed, 90 insertions(+), 86 deletions(-) diff --git a/poetry.lock b/poetry.lock index 75ed4a28..c7981022 100644 --- a/poetry.lock +++ b/poetry.lock @@ -402,95 +402,99 @@ six = ">=1.8.0" [[package]] name = "orjson" -version = "3.11.3" +version = "3.11.4" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "orjson-3.11.3-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:29cb1f1b008d936803e2da3d7cba726fc47232c45df531b29edf0b232dd737e7"}, - {file = "orjson-3.11.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97dceed87ed9139884a55db8722428e27bd8452817fbf1869c58b49fecab1120"}, - {file = "orjson-3.11.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:58533f9e8266cb0ac298e259ed7b4d42ed3fa0b78ce76860626164de49e0d467"}, - {file = "orjson-3.11.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c212cfdd90512fe722fa9bd620de4d46cda691415be86b2e02243242ae81873"}, - {file = "orjson-3.11.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ff835b5d3e67d9207343effb03760c00335f8b5285bfceefd4dc967b0e48f6a"}, - {file = "orjson-3.11.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5aa4682912a450c2db89cbd92d356fef47e115dffba07992555542f344d301b"}, - {file = "orjson-3.11.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7d18dd34ea2e860553a579df02041845dee0af8985dff7f8661306f95504ddf"}, - {file = "orjson-3.11.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d8b11701bc43be92ea42bd454910437b355dfb63696c06fe953ffb40b5f763b4"}, - {file = "orjson-3.11.3-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:90368277087d4af32d38bd55f9da2ff466d25325bf6167c8f382d8ee40cb2bbc"}, - {file = "orjson-3.11.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fd7ff459fb393358d3a155d25b275c60b07a2c83dcd7ea962b1923f5a1134569"}, - {file = "orjson-3.11.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f8d902867b699bcd09c176a280b1acdab57f924489033e53d0afe79817da37e6"}, - {file = "orjson-3.11.3-cp310-cp310-win32.whl", hash = "sha256:bb93562146120bb51e6b154962d3dadc678ed0fce96513fa6bc06599bb6f6edc"}, - {file = "orjson-3.11.3-cp310-cp310-win_amd64.whl", hash = "sha256:976c6f1975032cc327161c65d4194c549f2589d88b105a5e3499429a54479770"}, - {file = "orjson-3.11.3-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9d2ae0cc6aeb669633e0124531f342a17d8e97ea999e42f12a5ad4adaa304c5f"}, - {file = "orjson-3.11.3-cp311-cp311-macosx_15_0_arm64.whl", hash = "sha256:ba21dbb2493e9c653eaffdc38819b004b7b1b246fb77bfc93dc016fe664eac91"}, - {file = "orjson-3.11.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00f1a271e56d511d1569937c0447d7dce5a99a33ea0dec76673706360a051904"}, - {file = "orjson-3.11.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b67e71e47caa6680d1b6f075a396d04fa6ca8ca09aafb428731da9b3ea32a5a6"}, - {file = "orjson-3.11.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d7d012ebddffcce8c85734a6d9e5f08180cd3857c5f5a3ac70185b43775d043d"}, - {file = "orjson-3.11.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd759f75d6b8d1b62012b7f5ef9461d03c804f94d539a5515b454ba3a6588038"}, - {file = "orjson-3.11.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6890ace0809627b0dff19cfad92d69d0fa3f089d3e359a2a532507bb6ba34efb"}, - {file = "orjson-3.11.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9d4a5e041ae435b815e568537755773d05dac031fee6a57b4ba70897a44d9d2"}, - {file = "orjson-3.11.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2d68bf97a771836687107abfca089743885fb664b90138d8761cce61d5625d55"}, - {file = "orjson-3.11.3-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:bfc27516ec46f4520b18ef645864cee168d2a027dbf32c5537cb1f3e3c22dac1"}, - {file = "orjson-3.11.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f66b001332a017d7945e177e282a40b6997056394e3ed7ddb41fb1813b83e824"}, - {file = "orjson-3.11.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:212e67806525d2561efbfe9e799633b17eb668b8964abed6b5319b2f1cfbae1f"}, - {file = "orjson-3.11.3-cp311-cp311-win32.whl", hash = "sha256:6e8e0c3b85575a32f2ffa59de455f85ce002b8bdc0662d6b9c2ed6d80ab5d204"}, - {file = "orjson-3.11.3-cp311-cp311-win_amd64.whl", hash = "sha256:6be2f1b5d3dc99a5ce5ce162fc741c22ba9f3443d3dd586e6a1211b7bc87bc7b"}, - {file = "orjson-3.11.3-cp311-cp311-win_arm64.whl", hash = "sha256:fafb1a99d740523d964b15c8db4eabbfc86ff29f84898262bf6e3e4c9e97e43e"}, - {file = "orjson-3.11.3-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:8c752089db84333e36d754c4baf19c0e1437012242048439c7e80eb0e6426e3b"}, - {file = "orjson-3.11.3-cp312-cp312-macosx_15_0_arm64.whl", hash = "sha256:9b8761b6cf04a856eb544acdd82fc594b978f12ac3602d6374a7edb9d86fd2c2"}, - {file = "orjson-3.11.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b13974dc8ac6ba22feaa867fc19135a3e01a134b4f7c9c28162fed4d615008a"}, - {file = "orjson-3.11.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f83abab5bacb76d9c821fd5c07728ff224ed0e52d7a71b7b3de822f3df04e15c"}, - {file = "orjson-3.11.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e6fbaf48a744b94091a56c62897b27c31ee2da93d826aa5b207131a1e13d4064"}, - {file = "orjson-3.11.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bc779b4f4bba2847d0d2940081a7b6f7b5877e05408ffbb74fa1faf4a136c424"}, - {file = "orjson-3.11.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bd4b909ce4c50faa2192da6bb684d9848d4510b736b0611b6ab4020ea6fd2d23"}, - {file = "orjson-3.11.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:524b765ad888dc5518bbce12c77c2e83dee1ed6b0992c1790cc5fb49bb4b6667"}, - {file = "orjson-3.11.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:84fd82870b97ae3cdcea9d8746e592b6d40e1e4d4527835fc520c588d2ded04f"}, - {file = "orjson-3.11.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:fbecb9709111be913ae6879b07bafd4b0785b44c1eb5cac8ac76da048b3885a1"}, - {file = "orjson-3.11.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9dba358d55aee552bd868de348f4736ca5a4086d9a62e2bfbbeeb5629fe8b0cc"}, - {file = "orjson-3.11.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:eabcf2e84f1d7105f84580e03012270c7e97ecb1fb1618bda395061b2a84a049"}, - {file = "orjson-3.11.3-cp312-cp312-win32.whl", hash = "sha256:3782d2c60b8116772aea8d9b7905221437fdf53e7277282e8d8b07c220f96cca"}, - {file = "orjson-3.11.3-cp312-cp312-win_amd64.whl", hash = "sha256:79b44319268af2eaa3e315b92298de9a0067ade6e6003ddaef72f8e0bedb94f1"}, - {file = "orjson-3.11.3-cp312-cp312-win_arm64.whl", hash = "sha256:0e92a4e83341ef79d835ca21b8bd13e27c859e4e9e4d7b63defc6e58462a3710"}, - {file = "orjson-3.11.3-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:af40c6612fd2a4b00de648aa26d18186cd1322330bd3a3cc52f87c699e995810"}, - {file = "orjson-3.11.3-cp313-cp313-macosx_15_0_arm64.whl", hash = "sha256:9f1587f26c235894c09e8b5b7636a38091a9e6e7fe4531937534749c04face43"}, - {file = "orjson-3.11.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:61dcdad16da5bb486d7227a37a2e789c429397793a6955227cedbd7252eb5a27"}, - {file = "orjson-3.11.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:11c6d71478e2cbea0a709e8a06365fa63da81da6498a53e4c4f065881d21ae8f"}, - {file = "orjson-3.11.3-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff94112e0098470b665cb0ed06efb187154b63649403b8d5e9aedeb482b4548c"}, - {file = "orjson-3.11.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae8b756575aaa2a855a75192f356bbda11a89169830e1439cfb1a3e1a6dde7be"}, - {file = "orjson-3.11.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c9416cc19a349c167ef76135b2fe40d03cea93680428efee8771f3e9fb66079d"}, - {file = "orjson-3.11.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b822caf5b9752bc6f246eb08124c3d12bf2175b66ab74bac2ef3bbf9221ce1b2"}, - {file = "orjson-3.11.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:414f71e3bdd5573893bf5ecdf35c32b213ed20aa15536fe2f588f946c318824f"}, - {file = "orjson-3.11.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:828e3149ad8815dc14468f36ab2a4b819237c155ee1370341b91ea4c8672d2ee"}, - {file = "orjson-3.11.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ac9e05f25627ffc714c21f8dfe3a579445a5c392a9c8ae7ba1d0e9fb5333f56e"}, - {file = "orjson-3.11.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e44fbe4000bd321d9f3b648ae46e0196d21577cf66ae684a96ff90b1f7c93633"}, - {file = "orjson-3.11.3-cp313-cp313-win32.whl", hash = "sha256:2039b7847ba3eec1f5886e75e6763a16e18c68a63efc4b029ddf994821e2e66b"}, - {file = "orjson-3.11.3-cp313-cp313-win_amd64.whl", hash = "sha256:29be5ac4164aa8bdcba5fa0700a3c9c316b411d8ed9d39ef8a882541bd452fae"}, - {file = "orjson-3.11.3-cp313-cp313-win_arm64.whl", hash = "sha256:18bd1435cb1f2857ceb59cfb7de6f92593ef7b831ccd1b9bfb28ca530e539dce"}, - {file = "orjson-3.11.3-cp314-cp314-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:cf4b81227ec86935568c7edd78352a92e97af8da7bd70bdfdaa0d2e0011a1ab4"}, - {file = "orjson-3.11.3-cp314-cp314-macosx_15_0_arm64.whl", hash = "sha256:bc8bc85b81b6ac9fc4dae393a8c159b817f4c2c9dee5d12b773bddb3b95fc07e"}, - {file = "orjson-3.11.3-cp314-cp314-manylinux_2_34_aarch64.whl", hash = "sha256:88dcfc514cfd1b0de038443c7b3e6a9797ffb1b3674ef1fd14f701a13397f82d"}, - {file = "orjson-3.11.3-cp314-cp314-manylinux_2_34_x86_64.whl", hash = "sha256:d61cd543d69715d5fc0a690c7c6f8dcc307bc23abef9738957981885f5f38229"}, - {file = "orjson-3.11.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:2b7b153ed90ababadbef5c3eb39549f9476890d339cf47af563aea7e07db2451"}, - {file = "orjson-3.11.3-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:7909ae2460f5f494fecbcd10613beafe40381fd0316e35d6acb5f3a05bfda167"}, - {file = "orjson-3.11.3-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:2030c01cbf77bc67bee7eef1e7e31ecf28649353987775e3583062c752da0077"}, - {file = "orjson-3.11.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:a0169ebd1cbd94b26c7a7ad282cf5c2744fce054133f959e02eb5265deae1872"}, - {file = "orjson-3.11.3-cp314-cp314-win32.whl", hash = "sha256:0c6d7328c200c349e3a4c6d8c83e0a5ad029bdc2d417f234152bf34842d0fc8d"}, - {file = "orjson-3.11.3-cp314-cp314-win_amd64.whl", hash = "sha256:317bbe2c069bbc757b1a2e4105b64aacd3bc78279b66a6b9e51e846e4809f804"}, - {file = "orjson-3.11.3-cp314-cp314-win_arm64.whl", hash = "sha256:e8f6a7a27d7b7bec81bd5924163e9af03d49bbb63013f107b48eb5d16db711bc"}, - {file = "orjson-3.11.3-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:56afaf1e9b02302ba636151cfc49929c1bb66b98794291afd0e5f20fecaf757c"}, - {file = "orjson-3.11.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:913f629adef31d2d350d41c051ce7e33cf0fd06a5d1cb28d49b1899b23b903aa"}, - {file = "orjson-3.11.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e0a23b41f8f98b4e61150a03f83e4f0d566880fe53519d445a962929a4d21045"}, - {file = "orjson-3.11.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3d721fee37380a44f9d9ce6c701b3960239f4fb3d5ceea7f31cbd43882edaa2f"}, - {file = "orjson-3.11.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73b92a5b69f31b1a58c0c7e31080aeaec49c6e01b9522e71ff38d08f15aa56de"}, - {file = "orjson-3.11.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d2489b241c19582b3f1430cc5d732caefc1aaf378d97e7fb95b9e56bed11725f"}, - {file = "orjson-3.11.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c5189a5dab8b0312eadaf9d58d3049b6a52c454256493a557405e77a3d67ab7f"}, - {file = "orjson-3.11.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:9d8787bdfbb65a85ea76d0e96a3b1bed7bf0fbcb16d40408dc1172ad784a49d2"}, - {file = "orjson-3.11.3-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:8e531abd745f51f8035e207e75e049553a86823d189a51809c078412cefb399a"}, - {file = "orjson-3.11.3-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:8ab962931015f170b97a3dd7bd933399c1bae8ed8ad0fb2a7151a5654b6941c7"}, - {file = "orjson-3.11.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:124d5ba71fee9c9902c4a7baa9425e663f7f0aecf73d31d54fe3dd357d62c1a7"}, - {file = "orjson-3.11.3-cp39-cp39-win32.whl", hash = "sha256:22724d80ee5a815a44fc76274bb7ba2e7464f5564aacb6ecddaa9970a83e3225"}, - {file = "orjson-3.11.3-cp39-cp39-win_amd64.whl", hash = "sha256:215c595c792a87d4407cb72dd5e0f6ee8e694ceeb7f9102b533c5a9bf2a916bb"}, - {file = "orjson-3.11.3.tar.gz", hash = "sha256:1c0603b1d2ffcd43a411d64797a19556ef76958aef1c182f22dc30860152a98a"}, + {file = "orjson-3.11.4-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:e3aa2118a3ece0d25489cbe48498de8a5d580e42e8d9979f65bf47900a15aba1"}, + {file = "orjson-3.11.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a69ab657a4e6733133a3dca82768f2f8b884043714e8d2b9ba9f52b6efef5c44"}, + {file = "orjson-3.11.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3740bffd9816fc0326ddc406098a3a8f387e42223f5f455f2a02a9f834ead80c"}, + {file = "orjson-3.11.4-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65fd2f5730b1bf7f350c6dc896173d3460d235c4be007af73986d7cd9a2acd23"}, + {file = "orjson-3.11.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fdc3ae730541086158d549c97852e2eea6820665d4faf0f41bf99df41bc11ea"}, + {file = "orjson-3.11.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e10b4d65901da88845516ce9f7f9736f9638d19a1d483b3883dc0182e6e5edba"}, + {file = "orjson-3.11.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb6a03a678085f64b97f9d4a9ae69376ce91a3a9e9b56a82b1580d8e1d501aff"}, + {file = "orjson-3.11.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:2c82e4f0b1c712477317434761fbc28b044c838b6b1240d895607441412371ac"}, + {file = "orjson-3.11.4-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:d58c166a18f44cc9e2bad03a327dc2d1a3d2e85b847133cfbafd6bfc6719bd79"}, + {file = "orjson-3.11.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:94f206766bf1ea30e1382e4890f763bd1eefddc580e08fec1ccdc20ddd95c827"}, + {file = "orjson-3.11.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:41bf25fb39a34cf8edb4398818523277ee7096689db352036a9e8437f2f3ee6b"}, + {file = "orjson-3.11.4-cp310-cp310-win32.whl", hash = "sha256:fa9627eba4e82f99ca6d29bc967f09aba446ee2b5a1ea728949ede73d313f5d3"}, + {file = "orjson-3.11.4-cp310-cp310-win_amd64.whl", hash = "sha256:23ef7abc7fca96632d8174ac115e668c1e931b8fe4dde586e92a500bf1914dcc"}, + {file = "orjson-3.11.4-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:5e59d23cd93ada23ec59a96f215139753fbfe3a4d989549bcb390f8c00370b39"}, + {file = "orjson-3.11.4-cp311-cp311-macosx_15_0_arm64.whl", hash = "sha256:5c3aedecfc1beb988c27c79d52ebefab93b6c3921dbec361167e6559aba2d36d"}, + {file = "orjson-3.11.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da9e5301f1c2caa2a9a4a303480d79c9ad73560b2e7761de742ab39fe59d9175"}, + {file = "orjson-3.11.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8873812c164a90a79f65368f8f96817e59e35d0cc02786a5356f0e2abed78040"}, + {file = "orjson-3.11.4-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5d7feb0741ebb15204e748f26c9638e6665a5fa93c37a2c73d64f1669b0ddc63"}, + {file = "orjson-3.11.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:01ee5487fefee21e6910da4c2ee9eef005bee568a0879834df86f888d2ffbdd9"}, + {file = "orjson-3.11.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d40d46f348c0321df01507f92b95a377240c4ec31985225a6668f10e2676f9a"}, + {file = "orjson-3.11.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95713e5fc8af84d8edc75b785d2386f653b63d62b16d681687746734b4dfc0be"}, + {file = "orjson-3.11.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ad73ede24f9083614d6c4ca9a85fe70e33be7bf047ec586ee2363bc7418fe4d7"}, + {file = "orjson-3.11.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:842289889de515421f3f224ef9c1f1efb199a32d76d8d2ca2706fa8afe749549"}, + {file = "orjson-3.11.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:3b2427ed5791619851c52a1261b45c233930977e7de8cf36de05636c708fa905"}, + {file = "orjson-3.11.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3c36e524af1d29982e9b190573677ea02781456b2e537d5840e4538a5ec41907"}, + {file = "orjson-3.11.4-cp311-cp311-win32.whl", hash = "sha256:87255b88756eab4a68ec61837ca754e5d10fa8bc47dc57f75cedfeaec358d54c"}, + {file = "orjson-3.11.4-cp311-cp311-win_amd64.whl", hash = "sha256:e2d5d5d798aba9a0e1fede8d853fa899ce2cb930ec0857365f700dffc2c7af6a"}, + {file = "orjson-3.11.4-cp311-cp311-win_arm64.whl", hash = "sha256:6bb6bb41b14c95d4f2702bce9975fda4516f1db48e500102fc4d8119032ff045"}, + {file = "orjson-3.11.4-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:d4371de39319d05d3f482f372720b841c841b52f5385bd99c61ed69d55d9ab50"}, + {file = "orjson-3.11.4-cp312-cp312-macosx_15_0_arm64.whl", hash = "sha256:e41fd3b3cac850eaae78232f37325ed7d7436e11c471246b87b2cd294ec94853"}, + {file = "orjson-3.11.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:600e0e9ca042878c7fdf189cf1b028fe2c1418cc9195f6cb9824eb6ed99cb938"}, + {file = "orjson-3.11.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7bbf9b333f1568ef5da42bc96e18bf30fd7f8d54e9ae066d711056add508e415"}, + {file = "orjson-3.11.4-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4806363144bb6e7297b8e95870e78d30a649fdc4e23fc84daa80c8ebd366ce44"}, + {file = "orjson-3.11.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad355e8308493f527d41154e9053b86a5be892b3b359a5c6d5d95cda23601cb2"}, + {file = "orjson-3.11.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c8a7517482667fb9f0ff1b2f16fe5829296ed7a655d04d68cd9711a4d8a4e708"}, + {file = "orjson-3.11.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97eb5942c7395a171cbfecc4ef6701fc3c403e762194683772df4c54cfbb2210"}, + {file = "orjson-3.11.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:149d95d5e018bdd822e3f38c103b1a7c91f88d38a88aada5c4e9b3a73a244241"}, + {file = "orjson-3.11.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:624f3951181eb46fc47dea3d221554e98784c823e7069edb5dbd0dc826ac909b"}, + {file = "orjson-3.11.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:03bfa548cf35e3f8b3a96c4e8e41f753c686ff3d8e182ce275b1751deddab58c"}, + {file = "orjson-3.11.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:525021896afef44a68148f6ed8a8bf8375553d6066c7f48537657f64823565b9"}, + {file = "orjson-3.11.4-cp312-cp312-win32.whl", hash = "sha256:b58430396687ce0f7d9eeb3dd47761ca7d8fda8e9eb92b3077a7a353a75efefa"}, + {file = "orjson-3.11.4-cp312-cp312-win_amd64.whl", hash = "sha256:c6dbf422894e1e3c80a177133c0dda260f81428f9de16d61041949f6a2e5c140"}, + {file = "orjson-3.11.4-cp312-cp312-win_arm64.whl", hash = "sha256:d38d2bc06d6415852224fcc9c0bfa834c25431e466dc319f0edd56cca81aa96e"}, + {file = "orjson-3.11.4-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:2d6737d0e616a6e053c8b4acc9eccea6b6cce078533666f32d140e4f85002534"}, + {file = "orjson-3.11.4-cp313-cp313-macosx_15_0_arm64.whl", hash = "sha256:afb14052690aa328cc118a8e09f07c651d301a72e44920b887c519b313d892ff"}, + {file = "orjson-3.11.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38aa9e65c591febb1b0aed8da4d469eba239d434c218562df179885c94e1a3ad"}, + {file = "orjson-3.11.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f2cf4dfaf9163b0728d061bebc1e08631875c51cd30bf47cb9e3293bfbd7dcd5"}, + {file = "orjson-3.11.4-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:89216ff3dfdde0e4070932e126320a1752c9d9a758d6a32ec54b3b9334991a6a"}, + {file = "orjson-3.11.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9daa26ca8e97fae0ce8aa5d80606ef8f7914e9b129b6b5df9104266f764ce436"}, + {file = "orjson-3.11.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c8b2769dc31883c44a9cd126560327767f848eb95f99c36c9932f51090bfce9"}, + {file = "orjson-3.11.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1469d254b9884f984026bd9b0fa5bbab477a4bfe558bba6848086f6d43eb5e73"}, + {file = "orjson-3.11.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:68e44722541983614e37117209a194e8c3ad07838ccb3127d96863c95ec7f1e0"}, + {file = "orjson-3.11.4-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:8e7805fda9672c12be2f22ae124dcd7b03928d6c197544fe12174b86553f3196"}, + {file = "orjson-3.11.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:04b69c14615fb4434ab867bf6f38b2d649f6f300af30a6705397e895f7aec67a"}, + {file = "orjson-3.11.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:639c3735b8ae7f970066930e58cf0ed39a852d417c24acd4a25fc0b3da3c39a6"}, + {file = "orjson-3.11.4-cp313-cp313-win32.whl", hash = "sha256:6c13879c0d2964335491463302a6ca5ad98105fc5db3565499dcb80b1b4bd839"}, + {file = "orjson-3.11.4-cp313-cp313-win_amd64.whl", hash = "sha256:09bf242a4af98732db9f9a1ec57ca2604848e16f132e3f72edfd3c5c96de009a"}, + {file = "orjson-3.11.4-cp313-cp313-win_arm64.whl", hash = "sha256:a85f0adf63319d6c1ba06fb0dbf997fced64a01179cf17939a6caca662bf92de"}, + {file = "orjson-3.11.4-cp314-cp314-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:42d43a1f552be1a112af0b21c10a5f553983c2a0938d2bbb8ecd8bc9fb572803"}, + {file = "orjson-3.11.4-cp314-cp314-macosx_15_0_arm64.whl", hash = "sha256:26a20f3fbc6c7ff2cb8e89c4c5897762c9d88cf37330c6a117312365d6781d54"}, + {file = "orjson-3.11.4-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e3f20be9048941c7ffa8fc523ccbd17f82e24df1549d1d1fe9317712d19938e"}, + {file = "orjson-3.11.4-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:aac364c758dc87a52e68e349924d7e4ded348dedff553889e4d9f22f74785316"}, + {file = "orjson-3.11.4-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d5c54a6d76e3d741dcc3f2707f8eeb9ba2a791d3adbf18f900219b62942803b1"}, + {file = "orjson-3.11.4-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f28485bdca8617b79d44627f5fb04336897041dfd9fa66d383a49d09d86798bc"}, + {file = "orjson-3.11.4-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bfc2a484cad3585e4ba61985a6062a4c2ed5c7925db6d39f1fa267c9d166487f"}, + {file = "orjson-3.11.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e34dbd508cb91c54f9c9788923daca129fe5b55c5b4eebe713bf5ed3791280cf"}, + {file = "orjson-3.11.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b13c478fa413d4b4ee606ec8e11c3b2e52683a640b006bb586b3041c2ca5f606"}, + {file = "orjson-3.11.4-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:724ca721ecc8a831b319dcd72cfa370cc380db0bf94537f08f7edd0a7d4e1780"}, + {file = "orjson-3.11.4-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:977c393f2e44845ce1b540e19a786e9643221b3323dae190668a98672d43fb23"}, + {file = "orjson-3.11.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:1e539e382cf46edec157ad66b0b0872a90d829a6b71f17cb633d6c160a223155"}, + {file = "orjson-3.11.4-cp314-cp314-win32.whl", hash = "sha256:d63076d625babab9db5e7836118bdfa086e60f37d8a174194ae720161eb12394"}, + {file = "orjson-3.11.4-cp314-cp314-win_amd64.whl", hash = "sha256:0a54d6635fa3aaa438ae32e8570b9f0de36f3f6562c308d2a2a452e8b0592db1"}, + {file = "orjson-3.11.4-cp314-cp314-win_arm64.whl", hash = "sha256:78b999999039db3cf58f6d230f524f04f75f129ba3d1ca2ed121f8657e575d3d"}, + {file = "orjson-3.11.4-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:405261b0a8c62bcbd8e2931c26fdc08714faf7025f45531541e2b29e544b545b"}, + {file = "orjson-3.11.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:af02ff34059ee9199a3546f123a6ab4c86caf1708c79042caf0820dc290a6d4f"}, + {file = "orjson-3.11.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0b2eba969ea4203c177c7b38b36c69519e6067ee68c34dc37081fac74c796e10"}, + {file = "orjson-3.11.4-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0baa0ea43cfa5b008a28d3c07705cf3ada40e5d347f0f44994a64b1b7b4b5350"}, + {file = "orjson-3.11.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80fd082f5dcc0e94657c144f1b2a3a6479c44ad50be216cf0c244e567f5eae19"}, + {file = "orjson-3.11.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1e3704d35e47d5bee811fb1cbd8599f0b4009b14d451c4c57be5a7e25eb89a13"}, + {file = "orjson-3.11.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:caa447f2b5356779d914658519c874cf3b7629e99e63391ed519c28c8aea4919"}, + {file = "orjson-3.11.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:bba5118143373a86f91dadb8df41d9457498226698ebdf8e11cbb54d5b0e802d"}, + {file = "orjson-3.11.4-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:622463ab81d19ef3e06868b576551587de8e4d518892d1afab71e0fbc1f9cffc"}, + {file = "orjson-3.11.4-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3e0a700c4b82144b72946b6629968df9762552ee1344bfdb767fecdd634fbd5a"}, + {file = "orjson-3.11.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6e18a5c15e764e5f3fc569b47872450b4bcea24f2a6354c0a0e95ad21045d5a9"}, + {file = "orjson-3.11.4-cp39-cp39-win32.whl", hash = "sha256:fb1c37c71cad991ef4d89c7a634b5ffb4447dbd7ae3ae13e8f5ee7f1775e7ab1"}, + {file = "orjson-3.11.4-cp39-cp39-win_amd64.whl", hash = "sha256:e2985ce8b8c42d00492d0ed79f2bd2b6460d00f2fa671dfde4bf2e02f49bf5c6"}, + {file = "orjson-3.11.4.tar.gz", hash = "sha256:39485f4ab4c9b30a3943cfe99e1a213c4776fb69e8abd68f66b83d5a0b0fdc6d"}, ] [[package]] @@ -1025,4 +1029,4 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.1" python-versions = "^3.9" -content-hash = "cb904c35dab26d810aa728bd0f813e6a64290bd95915fe9230e8e1c2d7de8251" +content-hash = "59ac08ceadcebc8c42ba9cd9d0112b64cc6dd7616783e107f0d3e7a510c20f68" diff --git a/pyproject.toml b/pyproject.toml index e85f2804..ce521189 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ sphinx-autodoc-typehints = "^2.0.1" types-certifi = "^2021.10.8" types-setuptools = "^80.9.0" pook = "^2.1.4" -orjson = "^3.11.3" +orjson = "^3.11.4" [build-system] requires = ["poetry-core>=1.0.0"] From dceb9794607443c7e3fd61d76a4d00e9c2d2ca9e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Oct 2025 09:56:08 -0700 Subject: [PATCH 26/46] Bump sphinx-autodoc-typehints from 2.0.1 to 2.3.0 (#950) Bumps [sphinx-autodoc-typehints](https://github.com/tox-dev/sphinx-autodoc-typehints) from 2.0.1 to 2.3.0. - [Release notes](https://github.com/tox-dev/sphinx-autodoc-typehints/releases) - [Commits](https://github.com/tox-dev/sphinx-autodoc-typehints/compare/2.0.1...2.3.0) --- updated-dependencies: - dependency-name: sphinx-autodoc-typehints dependency-version: 2.3.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 14 +++++++------- pyproject.toml | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/poetry.lock b/poetry.lock index c7981022..f2bd9e59 100644 --- a/poetry.lock +++ b/poetry.lock @@ -686,23 +686,23 @@ test = ["cython (>=3.0)", "defusedxml (>=0.7.1)", "pytest (>=8.0)", "setuptools [[package]] name = "sphinx-autodoc-typehints" -version = "2.0.1" +version = "2.3.0" description = "Type hints (PEP 484) support for the Sphinx autodoc extension" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "sphinx_autodoc_typehints-2.0.1-py3-none-any.whl", hash = "sha256:f73ae89b43a799e587e39266672c1075b2ef783aeb382d3ebed77c38a3fc0149"}, - {file = "sphinx_autodoc_typehints-2.0.1.tar.gz", hash = "sha256:60ed1e3b2c970acc0aa6e877be42d48029a9faec7378a17838716cacd8c10b12"}, + {file = "sphinx_autodoc_typehints-2.3.0-py3-none-any.whl", hash = "sha256:3098e2c6d0ba99eacd013eb06861acc9b51c6e595be86ab05c08ee5506ac0c67"}, + {file = "sphinx_autodoc_typehints-2.3.0.tar.gz", hash = "sha256:535c78ed2d6a1bad393ba9f3dfa2602cf424e2631ee207263e07874c38fde084"}, ] [package.dependencies] -sphinx = ">=7.1.2" +sphinx = ">=7.3.5" [package.extras] docs = ["furo (>=2024.1.29)"] numpy = ["nptyping (>=2.5)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.4.2)", "diff-cover (>=8.0.3)", "pytest (>=8.0.1)", "pytest-cov (>=4.1)", "sphobjinv (>=2.3.1)", "typing-extensions (>=4.9)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.4.4)", "defusedxml (>=0.7.1)", "diff-cover (>=9)", "pytest (>=8.1.1)", "pytest-cov (>=5)", "sphobjinv (>=2.3.1)", "typing-extensions (>=4.11)"] [[package]] name = "sphinx-rtd-theme" @@ -1029,4 +1029,4 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.1" python-versions = "^3.9" -content-hash = "59ac08ceadcebc8c42ba9cd9d0112b64cc6dd7616783e107f0d3e7a510c20f68" +content-hash = "6cd34f84eb7069ad668764d49e4966330336b4a9ec1753c69f1ca7d26f152920" diff --git a/pyproject.toml b/pyproject.toml index ce521189..9c384e9f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,7 +36,7 @@ types-urllib3 = "^1.26.25" Sphinx = "^7.4.7" sphinx-rtd-theme = "^3.0.2" # keep this in sync with docs/requirements.txt for readthedocs.org -sphinx-autodoc-typehints = "^2.0.1" +sphinx-autodoc-typehints = "^2.3.0" types-certifi = "^2021.10.8" types-setuptools = "^80.9.0" pook = "^2.1.4" From 082cd98649d833c5a8746dce11d70c0ed7ca1d7a Mon Sep 17 00:00:00 2001 From: Roman Zydyk <31843161+romanzdk@users.noreply.github.com> Date: Thu, 30 Oct 2025 15:38:06 +0100 Subject: [PATCH 27/46] Log request URL with the Response headers (#952) * Use logging instead of print * Add Request URL to the Response headers * Add Request URL to the Response headers --------- Co-authored-by: Roman Zydyk --- polygon/rest/base.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/polygon/rest/base.py b/polygon/rest/base.py index 7501f5ce..4f4b8bc8 100644 --- a/polygon/rest/base.py +++ b/polygon/rest/base.py @@ -125,7 +125,9 @@ def _get( if self.trace: resp_headers_dict = dict(resp.headers.items()) - logger.info("Response Headers: %s", resp_headers_dict) + logger.info( + "Request URL: %s, Response Headers: %s", full_url, resp_headers_dict + ) if resp.status != 200: raise BadResponse(resp.data.decode("utf-8")) From a1a8cd0174a69855c16efa7a4d62ac7821da0685 Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Thu, 30 Oct 2025 14:24:55 -0700 Subject: [PATCH 28/46] Rebrand massive (#953) * Rebrand client to massive.com --- .github/workflows/release.yml | 27 +- {.polygon => .massive}/rest.json | 1668 ++++++++--------- {.polygon => .massive}/rest.py | 4 +- {.polygon => .massive}/websocket.json | 362 ++-- Makefile | 8 +- README.md | 39 +- docs/source/Aggs.rst | 40 +- docs/source/Contracts.rst | 8 +- docs/source/Enums.rst | 28 +- docs/source/Exceptions.rst | 4 +- docs/source/Getting-Started.rst | 18 +- docs/source/Models.rst | 86 +- docs/source/Quotes.rst | 20 +- docs/source/Reference.rst | 78 +- docs/source/Snapshot.rst | 46 +- docs/source/Trades.rst | 18 +- docs/source/WebSocket-Enums.rst | 6 +- docs/source/WebSocket.rst | 20 +- docs/source/conf.py | 8 +- docs/source/index.rst | 4 +- docs/source/vX.rst | 4 +- examples/launchpad/README.md | 8 +- examples/launchpad/launchpad.py | 4 +- examples/rest/bulk_aggs_downloader.py | 8 +- examples/rest/crypto-aggregates_bars.py | 14 +- examples/rest/crypto-conditions.py | 8 +- examples/rest/crypto-daily_open_close.py | 8 +- examples/rest/crypto-exchanges.py | 10 +- examples/rest/crypto-grouped_daily_bars.py | 8 +- .../crypto-last_trade_for_a_crypto_pair.py | 8 +- examples/rest/crypto-market_holidays.py | 10 +- examples/rest/crypto-market_status.py | 8 +- examples/rest/crypto-previous_close.py | 8 +- examples/rest/crypto-snapshots_all_tickers.py | 10 +- .../rest/crypto-snapshots_gainers_losers.py | 10 +- examples/rest/crypto-snapshots_ticker.py | 8 +- .../crypto-snapshots_ticker_full_book_l2.py | 8 +- .../rest/crypto-technical_indicators_ema.py | 8 +- .../rest/crypto-technical_indicators_macd.py | 8 +- .../rest/crypto-technical_indicators_rsi.py | 8 +- .../rest/crypto-technical_indicators_sma.py | 8 +- examples/rest/crypto-tickers.py | 8 +- examples/rest/crypto-trades.py | 8 +- examples/rest/custom-json-get.py | 2 +- examples/rest/demo_correlation_matrix.py | 20 +- examples/rest/economy-treasury_yields.py | 6 +- examples/rest/financials.py | 2 +- examples/rest/forex-aggregates_bars.py | 14 +- examples/rest/forex-conditions.py | 8 +- examples/rest/forex-exchanges.py | 10 +- examples/rest/forex-grouped_daily_bars.py | 8 +- .../forex-last_quote_for_a_currency_pair.py | 8 +- examples/rest/forex-market_holidays.py | 10 +- examples/rest/forex-market_status.py | 8 +- examples/rest/forex-previous_close.py | 8 +- examples/rest/forex-quotes.py | 8 +- .../forex-real-time_currency_conversion.py | 8 +- examples/rest/forex-snapshots_all_tickers.py | 10 +- .../rest/forex-snapshots_gainers_losers.py | 10 +- examples/rest/forex-snapshots_ticker.py | 8 +- .../rest/forex-technical_indicators_ema.py | 8 +- .../rest/forex-technical_indicators_macd.py | 8 +- .../rest/forex-technical_indicators_rsi.py | 8 +- .../rest/forex-technical_indicators_sma.py | 8 +- examples/rest/forex-tickers.py | 8 +- examples/rest/indices-aggregates_bars.py | 14 +- examples/rest/indices-daily_open_close.py | 8 +- examples/rest/indices-market_holidays.py | 10 +- examples/rest/indices-market_status.py | 8 +- examples/rest/indices-previous_close.py | 8 +- examples/rest/indices-snapshots.py | 8 +- .../rest/indices-technical_indicators_ema.py | 8 +- .../rest/indices-technical_indicators_macd.py | 8 +- .../rest/indices-technical_indicators_rsi.py | 8 +- .../rest/indices-technical_indicators_sma.py | 8 +- examples/rest/indices-ticker_types.py | 10 +- examples/rest/indices-tickers.py | 8 +- examples/rest/options-aggregates_bars.py | 14 +- examples/rest/options-conditions.py | 8 +- examples/rest/options-contract.py | 8 +- examples/rest/options-contracts.py | 8 +- examples/rest/options-daily_open_close.py | 8 +- examples/rest/options-exchanges.py | 10 +- examples/rest/options-last_trade.py | 8 +- examples/rest/options-market_holidays.py | 10 +- examples/rest/options-market_status.py | 8 +- examples/rest/options-previous_close.py | 8 +- examples/rest/options-quotes.py | 8 +- .../rest/options-snapshots_option_contract.py | 8 +- .../rest/options-snapshots_options_chain.py | 8 +- .../rest/options-technical_indicators_ema.py | 8 +- .../rest/options-technical_indicators_macd.py | 8 +- .../rest/options-technical_indicators_rsi.py | 8 +- .../rest/options-technical_indicators_sma.py | 8 +- examples/rest/options-ticker_details.py | 8 +- examples/rest/options-ticker_news.py | 10 +- examples/rest/options-tickers.py | 8 +- examples/rest/options-trades.py | 8 +- examples/rest/raw-get.py | 4 +- examples/rest/raw-list.py | 4 +- examples/rest/simple-get.py | 4 +- examples/rest/simple-list.py | 2 +- examples/rest/stocks-aggregates_bars.py | 14 +- examples/rest/stocks-aggregates_bars_extra.py | 12 +- .../rest/stocks-aggregates_bars_highcharts.py | 10 +- examples/rest/stocks-conditions.py | 8 +- examples/rest/stocks-daily_open_close.py | 8 +- examples/rest/stocks-dividends.py | 8 +- examples/rest/stocks-exchanges.py | 10 +- examples/rest/stocks-grouped_daily_bars.py | 8 +- examples/rest/stocks-ipos.py | 6 +- examples/rest/stocks-last_quote.py | 8 +- examples/rest/stocks-last_trade.py | 8 +- examples/rest/stocks-market_holidays.py | 10 +- examples/rest/stocks-market_status.py | 8 +- examples/rest/stocks-previous_close.py | 8 +- examples/rest/stocks-quotes.py | 8 +- examples/rest/stocks-related_companies.py | 6 +- examples/rest/stocks-short_interest.py | 6 +- examples/rest/stocks-short_volume.py | 6 +- examples/rest/stocks-snapshots_all.py | 10 +- .../rest/stocks-snapshots_gainers_losers.py | 10 +- examples/rest/stocks-snapshots_ticker.py | 8 +- examples/rest/stocks-stock_financials.py | 8 +- examples/rest/stocks-stock_splits.py | 8 +- .../rest/stocks-technical_indicators_ema.py | 8 +- .../rest/stocks-technical_indicators_macd.py | 8 +- .../rest/stocks-technical_indicators_rsi.py | 8 +- .../rest/stocks-technical_indicators_sma.py | 8 +- examples/rest/stocks-ticker_details.py | 8 +- examples/rest/stocks-ticker_events.py | 8 +- examples/rest/stocks-ticker_news.py | 10 +- examples/rest/stocks-ticker_types.py | 8 +- examples/rest/stocks-tickers.py | 8 +- examples/rest/stocks-trades.py | 8 +- examples/rest/stocks-trades_extra.py | 10 +- examples/rest/universal-snapshot.py | 10 +- .../async_websocket_rest_handler.py | 12 +- .../async_websocket_rest_handler/readme.md | 4 +- examples/tools/docker/Dockerfile | 6 +- examples/tools/docker/app.py | 8 +- examples/tools/docker/readme.md | 18 +- .../exchange-heatmap.py | 2 +- .../flatfiles-stock-trades/exchanges-seen.py | 2 +- .../tools/flatfiles-stock-trades/readme.md | 8 +- .../flatfiles-stock-trades/top-10-tickers.py | 2 +- .../trades-histogram.py | 2 +- examples/tools/hunting-anomalies/README.md | 20 +- .../hunting-anomalies/gui-lookup-table.py | 6 +- examples/tools/related-companies/readme.md | 10 +- .../related-companies-demo.py | 2 +- .../treemap/polygon_sic_code_data_gatherer.py | 6 +- examples/tools/treemap/readme.md | 22 +- examples/tools/treemap/treemap_server.py | 6 +- examples/websocket/aggs.py | 4 +- examples/websocket/async.py | 4 +- examples/websocket/crypto.py | 4 +- examples/websocket/custom-json.py | 4 +- examples/websocket/fmv.py | 4 +- examples/websocket/forex.py | 4 +- examples/websocket/indices.py | 4 +- examples/websocket/latency.py | 4 +- examples/websocket/launchpad-ws.py | 6 +- examples/websocket/options-ws.py | 10 +- examples/websocket/raw.py | 2 +- examples/websocket/simple.py | 4 +- examples/websocket/stocks-ws.py | 10 +- examples/websocket/stocks-ws_extra.py | 12 +- {polygon => massive}/__init__.py | 0 {polygon => massive}/exceptions.py | 0 {polygon => massive}/logging.py | 0 {polygon => massive}/modelclass.py | 0 {polygon => massive}/rest/__init__.py | 4 +- {polygon => massive}/rest/aggs.py | 0 {polygon => massive}/rest/base.py | 6 +- {polygon => massive}/rest/benzinga.py | 0 {polygon => massive}/rest/economy.py | 0 {polygon => massive}/rest/etf_global.py | 0 {polygon => massive}/rest/financials.py | 0 {polygon => massive}/rest/futures.py | 0 {polygon => massive}/rest/indicators.py | 4 +- {polygon => massive}/rest/models/__init__.py | 0 {polygon => massive}/rest/models/aggs.py | 0 {polygon => massive}/rest/models/benzinga.py | 0 {polygon => massive}/rest/models/common.py | 6 +- .../rest/models/conditions.py | 2 +- {polygon => massive}/rest/models/contracts.py | 0 {polygon => massive}/rest/models/dividends.py | 0 {polygon => massive}/rest/models/economy.py | 0 .../rest/models/etf_global.py | 0 {polygon => massive}/rest/models/exchanges.py | 2 +- .../rest/models/financials.py | 0 {polygon => massive}/rest/models/futures.py | 0 .../rest/models/indicators.py | 0 {polygon => massive}/rest/models/markets.py | 0 {polygon => massive}/rest/models/quotes.py | 0 {polygon => massive}/rest/models/request.py | 20 +- {polygon => massive}/rest/models/snapshot.py | 0 {polygon => massive}/rest/models/splits.py | 0 {polygon => massive}/rest/models/summaries.py | 0 {polygon => massive}/rest/models/tickers.py | 0 {polygon => massive}/rest/models/tmx.py | 0 {polygon => massive}/rest/models/trades.py | 0 {polygon => massive}/rest/quotes.py | 2 +- {polygon => massive}/rest/reference.py | 10 +- {polygon => massive}/rest/snapshot.py | 10 +- {polygon => massive}/rest/summaries.py | 4 +- {polygon => massive}/rest/tmx.py | 0 {polygon => massive}/rest/trades.py | 0 {polygon => massive}/rest/vX.py | 0 {polygon => massive}/websocket/__init__.py | 4 +- .../websocket/models/__init__.py | 0 .../websocket/models/common.py | 36 +- .../websocket/models/models.py | 0 pyproject.toml | 18 +- test_rest/base.py | 2 +- ...adjusted=true×tamp.gt=2022-08-18.json | 2 +- ...amp=1483958600&expand_underlying=true.json | 4 +- ...05000%2CC%3AEURUSD%2CX%3ABTCUSD%2CAPx.json | 8 +- .../mocks/v2/reference/news&ticker=NFLX.json | 4 +- test_rest/mocks/v3/quotes/AAPL.json | 2 +- .../mocks/v3/reference/options/contracts.json | 2 +- test_rest/mocks/v3/reference/tickers.json | 2 +- .../tickers/AAPL&date=2020-10-01.json | 4 +- .../mocks/v3/reference/tickers/AAPL.json | 4 +- test_rest/mocks/vX/reference/financials.json | 4 +- test_rest/models/test_requests.py | 48 +- test_rest/test_aggs.py | 2 +- test_rest/test_conditions.py | 2 +- test_rest/test_contracts.py | 2 +- test_rest/test_dividends.py | 2 +- test_rest/test_exchanges.py | 2 +- test_rest/test_indicators.py | 8 +- test_rest/test_markets.py | 2 +- test_rest/test_modelclass.py | 2 +- test_rest/test_quotes.py | 2 +- test_rest/test_snapshots.py | 2 +- test_rest/test_splits.py | 2 +- test_rest/test_summaries.py | 10 +- test_rest/test_tickers.py | 10 +- test_rest/test_trades.py | 2 +- test_websocket/base_ws.py | 2 +- test_websocket/test_conn.py | 4 +- 243 files changed, 1985 insertions(+), 1965 deletions(-) rename {.polygon => .massive}/rest.json (95%) rename {.polygon => .massive}/rest.py (52%) rename {.polygon => .massive}/websocket.json (93%) rename {polygon => massive}/__init__.py (100%) rename {polygon => massive}/exceptions.py (100%) rename {polygon => massive}/logging.py (100%) rename {polygon => massive}/modelclass.py (100%) rename {polygon => massive}/rest/__init__.py (97%) rename {polygon => massive}/rest/aggs.py (100%) rename {polygon => massive}/rest/base.py (97%) rename {polygon => massive}/rest/benzinga.py (100%) rename {polygon => massive}/rest/economy.py (100%) rename {polygon => massive}/rest/etf_global.py (100%) rename {polygon => massive}/rest/financials.py (100%) rename {polygon => massive}/rest/futures.py (100%) rename {polygon => massive}/rest/indicators.py (99%) rename {polygon => massive}/rest/models/__init__.py (100%) rename {polygon => massive}/rest/models/aggs.py (100%) rename {polygon => massive}/rest/models/benzinga.py (100%) rename {polygon => massive}/rest/models/common.py (89%) rename {polygon => massive}/rest/models/conditions.py (97%) rename {polygon => massive}/rest/models/contracts.py (100%) rename {polygon => massive}/rest/models/dividends.py (100%) rename {polygon => massive}/rest/models/economy.py (100%) rename {polygon => massive}/rest/models/etf_global.py (100%) rename {polygon => massive}/rest/models/exchanges.py (88%) rename {polygon => massive}/rest/models/financials.py (100%) rename {polygon => massive}/rest/models/futures.py (100%) rename {polygon => massive}/rest/models/indicators.py (100%) rename {polygon => massive}/rest/models/markets.py (100%) rename {polygon => massive}/rest/models/quotes.py (100%) rename {polygon => massive}/rest/models/request.py (84%) rename {polygon => massive}/rest/models/snapshot.py (100%) rename {polygon => massive}/rest/models/splits.py (100%) rename {polygon => massive}/rest/models/summaries.py (100%) rename {polygon => massive}/rest/models/tickers.py (100%) rename {polygon => massive}/rest/models/tmx.py (100%) rename {polygon => massive}/rest/models/trades.py (100%) rename {polygon => massive}/rest/quotes.py (99%) rename {polygon => massive}/rest/reference.py (98%) rename {polygon => massive}/rest/snapshot.py (97%) rename {polygon => massive}/rest/summaries.py (88%) rename {polygon => massive}/rest/tmx.py (100%) rename {polygon => massive}/rest/trades.py (100%) rename {polygon => massive}/rest/vX.py (100%) rename {polygon => massive}/websocket/__init__.py (99%) rename {polygon => massive}/websocket/models/__init__.py (100%) rename {polygon => massive}/websocket/models/common.py (52%) rename {polygon => massive}/websocket/models/models.py (100%) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c906b0d3..097bc930 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -6,20 +6,41 @@ on: permissions: contents: read jobs: - test: + release: runs-on: ubuntu-latest name: Release to PyPi steps: - uses: actions/checkout@v3 + - name: Fetch all branches + run: git fetch --prune --unshallow + - name: Check if commit is on allowed branch + run: | + if git branch -r --contains ${{ github.sha }} | grep -Eq 'origin/master|origin/polygon-lts'; then + echo "Allowed branch" + else + echo "Commit not on master or polygon-lts; skipping" + exit 1 + fi - name: Setup Python uses: actions/setup-python@v3 with: python-version: "3.10" - name: Setup Poetry uses: abatilo/actions-poetry@v2 + - name: Get package name + id: package + run: echo "name=$(poetry run python -c 'import toml; print(toml.load(\"pyproject.toml\")[\"tool\"][\"poetry\"][\"name\"])')" >> $GITHUB_OUTPUT - name: Configure Poetry - run: poetry config pypi-token.pypi ${{ secrets.POETRY_HTTP_BASIC_PYPI_PASSWORD }} - - name: Install pypi deps + run: | + if [ "${{ steps.package.outputs.name }}" == "polygon-api-client" ]; then + poetry config pypi-token.pypi ${{ secrets.POETRY_HTTP_BASIC_PYPI_PASSWORD }} + elif [ "${{ steps.package.outputs.name }}" == "massive" ]; then + poetry config pypi-token.pypi ${{ secrets.POETRY_HTTP_BASIC_PYPI_PASSWORD_MASSIVE }} + else + echo "Unknown package name: ${{ steps.package.outputs.name }}; skipping publish" + exit 1 + fi + - name: Install deps run: poetry install - name: Get tag id: tag diff --git a/.polygon/rest.json b/.massive/rest.json similarity index 95% rename from .polygon/rest.json rename to .massive/rest.json index 425d2c2d..3d088556 100644 --- a/.polygon/rest.json +++ b/.massive/rest.json @@ -21,7 +21,7 @@ } }, "AggregateLimitMax50000": { - "description": "Limits the number of base aggregates queried to create the aggregate results. Max 50000 and Default 5000.\nRead more about how limit is used to calculate aggregate results in our article on\nAggregate Data API Improvements.\n", + "description": "Limits the number of base aggregates queried to create the aggregate results. Max 50000 and Default 5000.\nRead more about how limit is used to calculate aggregate results in our article on\nAggregate Data API Improvements.\n", "example": 120, "in": "query", "name": "limit", @@ -285,7 +285,7 @@ "AskExchangeId": { "allOf": [ { - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" }, { @@ -305,7 +305,7 @@ "BidExchangeId": { "allOf": [ { - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" }, { @@ -443,7 +443,7 @@ "type": "array" }, "type": { - "description": "The type or class of the security. (Full List of Ticker Types)", + "description": "The type or class of the security. (Full List of Ticker Types)", "type": "string" }, "updated": { @@ -461,7 +461,7 @@ "ConditionTypeMap": { "properties": { "condition": { - "description": "Polygon.io's mapping for condition codes. For more information, see our Trade Conditions Glossary.\n", + "description": "Massive.com's mapping for condition codes. For more information, see our Trade Conditions Glossary.\n", "type": "string" } }, @@ -470,7 +470,7 @@ "Conditions": { "description": "A list of condition codes.\n", "items": { - "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://polygon.io/docs/get_v3_reference_conditions)\nfor a mapping to exchange conditions.\n", + "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://massive.com/docs/get_v3_reference_conditions)\nfor a mapping to exchange conditions.\n", "type": "integer" }, "type": "array" @@ -483,7 +483,7 @@ "items": { "properties": { "id": { - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" }, "market": { @@ -603,7 +603,7 @@ "c": { "description": "A list of condition codes.\n", "items": { - "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://polygon.io/docs/get_v3_reference_conditions)\nfor a mapping to exchange conditions.\n", + "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://massive.com/docs/get_v3_reference_conditions)\nfor a mapping to exchange conditions.\n", "type": "integer" }, "type": "array" @@ -627,7 +627,7 @@ "type": "integer" }, "x": { - "description": "The exchange that this crypto trade happened on. \nSee Exchanges for a mapping of exchanges to IDs.\n", + "description": "The exchange that this crypto trade happened on. \nSee Exchanges for a mapping of exchanges to IDs.\n", "type": "integer" } }, @@ -660,13 +660,13 @@ "conditions": { "description": "A list of condition codes.\n", "items": { - "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://polygon.io/docs/get_v3_reference_conditions)\nfor a mapping to exchange conditions.\n", + "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://massive.com/docs/get_v3_reference_conditions)\nfor a mapping to exchange conditions.\n", "type": "integer" }, "type": "array" }, "exchange": { - "description": "The exchange that this crypto trade happened on. \nSee Exchanges for a mapping of exchanges to IDs.\n", + "description": "The exchange that this crypto trade happened on. \nSee Exchanges for a mapping of exchanges to IDs.\n", "type": "integer" }, "price": { @@ -716,7 +716,7 @@ "c": { "description": "A list of condition codes.\n", "items": { - "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://polygon.io/docs/get_v3_reference_conditions)\nfor a mapping to exchange conditions.\n", + "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://massive.com/docs/get_v3_reference_conditions)\nfor a mapping to exchange conditions.\n", "type": "integer" }, "type": "array" @@ -740,7 +740,7 @@ "type": "integer" }, "x": { - "description": "The exchange that this crypto trade happened on. \nSee Exchanges for a mapping of exchanges to IDs.\n", + "description": "The exchange that this crypto trade happened on. \nSee Exchanges for a mapping of exchanges to IDs.\n", "type": "integer" } }, @@ -776,7 +776,7 @@ "c": { "description": "A list of condition codes.\n", "items": { - "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://polygon.io/docs/get_v3_reference_conditions)\nfor a mapping to exchange conditions.\n", + "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://massive.com/docs/get_v3_reference_conditions)\nfor a mapping to exchange conditions.\n", "type": "integer" }, "type": "array" @@ -800,7 +800,7 @@ "type": "integer" }, "x": { - "description": "The exchange that this crypto trade happened on. \nSee Exchanges for a mapping of exchanges to IDs.\n", + "description": "The exchange that this crypto trade happened on. \nSee Exchanges for a mapping of exchanges to IDs.\n", "type": "integer" } }, @@ -934,7 +934,7 @@ "type": "object" }, "fmv": { - "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.", + "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.", "format": "double", "type": "number" }, @@ -970,7 +970,7 @@ "type": "integer" }, "x": { - "description": "The exchange that this crypto trade happened on. \nSee Exchanges for a mapping of exchanges to IDs.\n", + "description": "The exchange that this crypto trade happened on. \nSee Exchanges for a mapping of exchanges to IDs.\n", "type": "integer" } }, @@ -1252,7 +1252,7 @@ "type": "object" }, "fmv": { - "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.", + "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.", "format": "double", "type": "number" }, @@ -1288,7 +1288,7 @@ "type": "integer" }, "x": { - "description": "The exchange that this crypto trade happened on. \nSee Exchanges for a mapping of exchanges to IDs.\n", + "description": "The exchange that this crypto trade happened on. \nSee Exchanges for a mapping of exchanges to IDs.\n", "type": "integer" } }, @@ -1443,7 +1443,7 @@ "c": { "description": "A list of condition codes.\n", "items": { - "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://polygon.io/docs/get_v3_reference_conditions)\nfor a mapping to exchange conditions.\n", + "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://massive.com/docs/get_v3_reference_conditions)\nfor a mapping to exchange conditions.\n", "type": "integer" }, "type": "array" @@ -1467,7 +1467,7 @@ "type": "integer" }, "x": { - "description": "The exchange that this crypto trade happened on. \nSee Exchanges for a mapping of exchanges to IDs.\n", + "description": "The exchange that this crypto trade happened on. \nSee Exchanges for a mapping of exchanges to IDs.\n", "type": "integer" } }, @@ -1482,7 +1482,7 @@ "type": "object" }, "CryptoTradeExchange": { - "description": "The exchange that this crypto trade happened on. \nSee Exchanges for a mapping of exchanges to IDs.\n", + "description": "The exchange that this crypto trade happened on. \nSee Exchanges for a mapping of exchanges to IDs.\n", "type": "integer" }, "Date": { @@ -1501,7 +1501,7 @@ "items": { "properties": { "code": { - "description": "A unique identifier for the exchange internal to Polygon.io. This is not an industry code or ISO standard.", + "description": "A unique identifier for the exchange internal to Massive.com. This is not an industry code or ISO standard.", "type": "string" }, "id": { @@ -1534,7 +1534,7 @@ "type": "array" }, "ExchangeId": { - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" }, "Financial": { @@ -2020,7 +2020,7 @@ "type": "object" }, "Fmv": { - "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.", + "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.", "format": "double", "type": "number" }, @@ -2053,7 +2053,7 @@ "type": "number" }, "exchange": { - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" }, "timestamp": { @@ -2083,7 +2083,7 @@ "type": "object" }, "ForexExchangeId": { - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" }, "ForexGroupedResults": { @@ -2187,7 +2187,7 @@ "type": "integer" }, "x": { - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" } }, @@ -2226,7 +2226,7 @@ "type": "number" }, "exchange": { - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" }, "timestamp": { @@ -2431,7 +2431,7 @@ "type": "object" }, "fmv": { - "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.", + "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.", "format": "double", "type": "number" }, @@ -2626,7 +2626,7 @@ "type": "object" }, "fmv": { - "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.", + "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.", "format": "double", "type": "number" }, @@ -2876,7 +2876,7 @@ "type": "object" }, "Indicators": { - "description": "The indicators. For more information, see our glossary of [Conditions and\nIndicators](https://polygon.io/glossary/us/stocks/conditions-indicators).\n", + "description": "The indicators. For more information, see our glossary of [Conditions and\nIndicators](https://massive.com/glossary/us/stocks/conditions-indicators).\n", "items": { "description": "The indicator code.\n", "type": "integer" @@ -3927,7 +3927,7 @@ "type": "object" }, "fmv": { - "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.", + "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.", "format": "double", "type": "number" }, @@ -3994,7 +3994,7 @@ "type": "integer" }, "x": { - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" } }, @@ -4197,7 +4197,7 @@ "type": "object" }, "fmv": { - "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.", + "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.", "format": "double", "type": "number" }, @@ -4264,7 +4264,7 @@ "type": "integer" }, "x": { - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" } }, @@ -4560,7 +4560,7 @@ "X": { "allOf": [ { - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" }, { @@ -4571,13 +4571,13 @@ "c": { "description": "A list of condition codes.\n", "items": { - "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://polygon.io/docs/get_v3_reference_conditions)\nfor a mapping to exchange conditions.\n", + "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://massive.com/docs/get_v3_reference_conditions)\nfor a mapping to exchange conditions.\n", "type": "integer" }, "type": "array" }, "i": { - "description": "The indicators. For more information, see our glossary of [Conditions and\nIndicators](https://polygon.io/glossary/us/stocks/conditions-indicators).\n", + "description": "The indicators. For more information, see our glossary of [Conditions and\nIndicators](https://massive.com/glossary/us/stocks/conditions-indicators).\n", "items": { "description": "The indicator code.\n", "type": "integer" @@ -4596,7 +4596,7 @@ "x": { "allOf": [ { - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" }, { @@ -4676,7 +4676,7 @@ "X": { "allOf": [ { - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" }, { @@ -4687,13 +4687,13 @@ "c": { "description": "A list of condition codes.\n", "items": { - "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://polygon.io/docs/get_v3_reference_conditions)\nfor a mapping to exchange conditions.\n", + "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://massive.com/docs/get_v3_reference_conditions)\nfor a mapping to exchange conditions.\n", "type": "integer" }, "type": "array" }, "i": { - "description": "The indicators. For more information, see our glossary of [Conditions and\nIndicators](https://polygon.io/glossary/us/stocks/conditions-indicators).\n", + "description": "The indicators. For more information, see our glossary of [Conditions and\nIndicators](https://massive.com/glossary/us/stocks/conditions-indicators).\n", "items": { "description": "The indicator code.\n", "type": "integer" @@ -4712,7 +4712,7 @@ "x": { "allOf": [ { - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" }, { @@ -4785,7 +4785,7 @@ "c": { "description": "A list of condition codes.\n", "items": { - "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://polygon.io/docs/get_v3_reference_conditions)\nfor a mapping to exchange conditions.\n", + "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://massive.com/docs/get_v3_reference_conditions)\nfor a mapping to exchange conditions.\n", "type": "integer" }, "type": "array" @@ -4813,7 +4813,7 @@ "type": "number" }, "x": { - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" }, "z": { @@ -4878,7 +4878,7 @@ "c": { "description": "A list of condition codes.\n", "items": { - "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://polygon.io/docs/get_v3_reference_conditions)\nfor a mapping to exchange conditions.\n", + "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://massive.com/docs/get_v3_reference_conditions)\nfor a mapping to exchange conditions.\n", "type": "integer" }, "type": "array" @@ -4906,7 +4906,7 @@ "type": "number" }, "x": { - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" }, "z": { @@ -5180,7 +5180,7 @@ }, "info": { "description": "The future of fintech.", - "title": "Polygon API", + "title": "Massive API", "version": "1.0.0" }, "openapi": "3.0.3", @@ -5272,7 +5272,7 @@ "description": "The amount to convert.", "format": "double", "type": "number", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "*float64" } }, @@ -5289,15 +5289,15 @@ "type": "number" }, "exchange": { - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" }, "timestamp": { "description": "The Unix millisecond timestamp.", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "IMilliseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } } }, @@ -5308,7 +5308,7 @@ "bid" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "LastQuoteCurrencies" } }, @@ -5358,11 +5358,11 @@ "tags": [ "fx:conversion" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "NBBO data", "name": "nbbo" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Forex data", "name": "fx" } @@ -5490,7 +5490,7 @@ "c": { "description": "A list of condition codes.\n", "items": { - "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://polygon.io/docs/get_v3_reference_conditions)\nfor a mapping to exchange conditions.\n", + "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://massive.com/docs/get_v3_reference_conditions)\nfor a mapping to exchange conditions.\n", "type": "integer" }, "type": "array" @@ -5514,7 +5514,7 @@ "type": "integer" }, "x": { - "description": "The exchange that this crypto trade happened on. \nSee Exchanges for a mapping of exchanges to IDs.\n", + "description": "The exchange that this crypto trade happened on. \nSee Exchanges for a mapping of exchanges to IDs.\n", "type": "integer" } }, @@ -5554,18 +5554,18 @@ "tags": [ "crypto:trades" ], - "x-polygon-deprecation": { + "x-massive-deprecation": { "date": 1654056060000, "replaces": { "name": "Trades v3", "path": "get_v3_trades__cryptoticker" } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Trade data", "name": "trades" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Crypto data", "name": "crypto" } @@ -5711,7 +5711,7 @@ "type": "integer" }, "x": { - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" } }, @@ -5749,18 +5749,18 @@ "tags": [ "fx:trades" ], - "x-polygon-deprecation": { + "x-massive-deprecation": { "date": 1654056060000, "replaces": { "name": "Quotes (BBO) v3", "path": "get_v3_quotes__fxticker" } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "NBBO data", "name": "nbbo" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Forex data", "name": "fx" } @@ -5780,7 +5780,7 @@ "schema": { "type": "string" }, - "x-polygon-go-id": "Ticker" + "x-massive-go-id": "Ticker" }, { "description": "Query by timestamp. Either a date with the format YYYY-MM-DD or a millisecond timestamp.", @@ -5789,7 +5789,7 @@ "schema": { "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, @@ -5909,11 +5909,11 @@ "content": { "application/json": { "example": { - "next_url": "https://api.polygon.io/v1/indicators/ema/X:BTCUSD?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", + "next_url": "https://api.massive.com/v1/indicators/ema/X:BTCUSD?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3", "results": { "underlying": { - "url": "https://api.polygon.io/v2/aggs/ticker/X:BTCUSD/range/1/day/2003-01-01/2022-07-25" + "url": "https://api.massive.com/v2/aggs/ticker/X:BTCUSD/range/1/day/2003-01-01/2022-07-25" }, "values": [ { @@ -5996,9 +5996,9 @@ "n" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Aggregate", - "path": "github.com/polygon-io/go-lib-models/v2/globals" + "path": "github.com/massive-com/go-lib-models/v2/globals" } }, "type": "array" @@ -6017,16 +6017,16 @@ "description": "The Unix Msec timestamp from the last aggregate used in this calculation.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "IMicroseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "value": { "description": "The indicator value for this period.", "format": "float", "type": "number", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "*float64" } } @@ -6037,7 +6037,7 @@ } }, "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "EMAResults" } }, @@ -6063,16 +6063,16 @@ "tags": [ "crypto:aggregates" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Crypto data", "name": "crypto" } }, - "x-polygon-ignore": true + "x-massive-ignore": true }, "/v1/indicators/ema/{fxTicker}": { "get": { @@ -6088,7 +6088,7 @@ "schema": { "type": "string" }, - "x-polygon-go-id": "Ticker" + "x-massive-go-id": "Ticker" }, { "description": "Query by timestamp. Either a date with the format YYYY-MM-DD or a millisecond timestamp.", @@ -6097,7 +6097,7 @@ "schema": { "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, @@ -6227,11 +6227,11 @@ "content": { "application/json": { "example": { - "next_url": "https://api.polygon.io/v1/indicators/ema/C:USDAUD?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", + "next_url": "https://api.massive.com/v1/indicators/ema/C:USDAUD?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3", "results": { "underlying": { - "url": "https://api.polygon.io/v2/aggs/ticker/C:USDAUD/range/1/day/2003-01-01/2022-07-25" + "url": "https://api.massive.com/v2/aggs/ticker/C:USDAUD/range/1/day/2003-01-01/2022-07-25" }, "values": [ { @@ -6314,9 +6314,9 @@ "n" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Aggregate", - "path": "github.com/polygon-io/go-lib-models/v2/globals" + "path": "github.com/massive-com/go-lib-models/v2/globals" } }, "type": "array" @@ -6335,16 +6335,16 @@ "description": "The Unix Msec timestamp from the last aggregate used in this calculation.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "IMicroseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "value": { "description": "The indicator value for this period.", "format": "float", "type": "number", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "*float64" } } @@ -6355,7 +6355,7 @@ } }, "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "EMAResults" } }, @@ -6381,16 +6381,16 @@ "tags": [ "fx:aggregates" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Forex data", "name": "fx" } }, - "x-polygon-ignore": true + "x-massive-ignore": true }, "/v1/indicators/ema/{indicesTicker}": { "get": { @@ -6406,7 +6406,7 @@ "schema": { "type": "string" }, - "x-polygon-go-id": "Ticker" + "x-massive-go-id": "Ticker" }, { "description": "Query by timestamp. Either a date with the format YYYY-MM-DD or a millisecond timestamp.", @@ -6415,7 +6415,7 @@ "schema": { "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, @@ -6545,11 +6545,11 @@ "content": { "application/json": { "example": { - "next_url": "https://api.polygon.io/v1/indicators/ema/I:NDX?cursor=YWRqdXN0ZWQ9dHJ1ZSZhcD0lN0IlMjJ2JTIyJTNBMCUyQyUyMm8lMjIlM0EwJTJDJTIyYyUyMiUzQTE1MDg0Ljk5OTM4OTgyMDAzJTJDJTIyaCUyMiUzQTAlMkMlMjJsJTIyJTNBMCUyQyUyMnQlMjIlM0ExNjg3MjE5MjAwMDAwJTdEJmFzPSZleHBhbmRfdW5kZXJseWluZz1mYWxzZSZsaW1pdD0xJm9yZGVyPWRlc2Mmc2VyaWVzX3R5cGU9Y2xvc2UmdGltZXNwYW49ZGF5JnRpbWVzdGFtcC5sdD0xNjg3MjM3MjAwMDAwJndpbmRvdz01MA", + "next_url": "https://api.massive.com/v1/indicators/ema/I:NDX?cursor=YWRqdXN0ZWQ9dHJ1ZSZhcD0lN0IlMjJ2JTIyJTNBMCUyQyUyMm8lMjIlM0EwJTJDJTIyYyUyMiUzQTE1MDg0Ljk5OTM4OTgyMDAzJTJDJTIyaCUyMiUzQTAlMkMlMjJsJTIyJTNBMCUyQyUyMnQlMjIlM0ExNjg3MjE5MjAwMDAwJTdEJmFzPSZleHBhbmRfdW5kZXJseWluZz1mYWxzZSZsaW1pdD0xJm9yZGVyPWRlc2Mmc2VyaWVzX3R5cGU9Y2xvc2UmdGltZXNwYW49ZGF5JnRpbWVzdGFtcC5sdD0xNjg3MjM3MjAwMDAwJndpbmRvdz01MA", "request_id": "b9201816341441eed663a90443c0623a", "results": { "underlying": { - "url": "https://api.polygon.io/v2/aggs/ticker/I:NDX/range/1/day/1678338000000/1687366449650?limit=226&sort=desc" + "url": "https://api.massive.com/v2/aggs/ticker/I:NDX/range/1/day/1678338000000/1687366449650?limit=226&sort=desc" }, "values": [ { @@ -6632,9 +6632,9 @@ "n" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Aggregate", - "path": "github.com/polygon-io/go-lib-models/v2/globals" + "path": "github.com/massive-com/go-lib-models/v2/globals" } }, "type": "array" @@ -6653,16 +6653,16 @@ "description": "The Unix Msec timestamp from the last aggregate used in this calculation.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "IMicroseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "value": { "description": "The indicator value for this period.", "format": "float", "type": "number", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "*float64" } } @@ -6673,7 +6673,7 @@ } }, "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "EMAResults" } }, @@ -6693,17 +6693,17 @@ "tags": [ "indices:aggregates" ], - "x-polygon-entitlement-allowed-limited-tickers": true, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-allowed-limited-tickers": true, + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Indices data", "name": "indices" } }, - "x-polygon-ignore": true + "x-massive-ignore": true }, "/v1/indicators/ema/{optionsTicker}": { "get": { @@ -6719,7 +6719,7 @@ "schema": { "type": "string" }, - "x-polygon-go-id": "Ticker" + "x-massive-go-id": "Ticker" }, { "description": "Query by timestamp. Either a date with the format YYYY-MM-DD or a millisecond timestamp.", @@ -6728,7 +6728,7 @@ "schema": { "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, @@ -6858,11 +6858,11 @@ "content": { "application/json": { "example": { - "next_url": "https://api.polygon.io/v1/indicators/ema/O:SPY241220P00720000?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", + "next_url": "https://api.massive.com/v1/indicators/ema/O:SPY241220P00720000?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3", "results": { "underlying": { - "url": "https://api.polygon.io/v2/aggs/ticker/O:SPY241220P00720000/range/1/day/2003-01-01/2022-07-25" + "url": "https://api.massive.com/v2/aggs/ticker/O:SPY241220P00720000/range/1/day/2003-01-01/2022-07-25" }, "values": [ { @@ -6945,9 +6945,9 @@ "n" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Aggregate", - "path": "github.com/polygon-io/go-lib-models/v2/globals" + "path": "github.com/massive-com/go-lib-models/v2/globals" } }, "type": "array" @@ -6966,16 +6966,16 @@ "description": "The Unix Msec timestamp from the last aggregate used in this calculation.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "IMicroseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "value": { "description": "The indicator value for this period.", "format": "float", "type": "number", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "*float64" } } @@ -6986,7 +6986,7 @@ } }, "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "EMAResults" } }, @@ -7012,16 +7012,16 @@ "tags": [ "options:aggregates" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Options data", "name": "options" } }, - "x-polygon-ignore": true + "x-massive-ignore": true }, "/v1/indicators/ema/{stockTicker}": { "get": { @@ -7037,7 +7037,7 @@ "schema": { "type": "string" }, - "x-polygon-go-id": "Ticker" + "x-massive-go-id": "Ticker" }, { "description": "Query by timestamp. Either a date with the format YYYY-MM-DD or a millisecond timestamp.", @@ -7046,7 +7046,7 @@ "schema": { "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, @@ -7176,11 +7176,11 @@ "content": { "application/json": { "example": { - "next_url": "https://api.polygon.io/v1/indicators/ema/AAPL?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", + "next_url": "https://api.massive.com/v1/indicators/ema/AAPL?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3", "results": { "underlying": { - "url": "https://api.polygon.io/v2/aggs/ticker/AAPL/range/1/day/2003-01-01/2022-07-25" + "url": "https://api.massive.com/v2/aggs/ticker/AAPL/range/1/day/2003-01-01/2022-07-25" }, "values": [ { @@ -7263,9 +7263,9 @@ "n" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Aggregate", - "path": "github.com/polygon-io/go-lib-models/v2/globals" + "path": "github.com/massive-com/go-lib-models/v2/globals" } }, "type": "array" @@ -7284,16 +7284,16 @@ "description": "The Unix Msec timestamp from the last aggregate used in this calculation.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "IMicroseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "value": { "description": "The indicator value for this period.", "format": "float", "type": "number", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "*float64" } } @@ -7304,7 +7304,7 @@ } }, "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "EMAResults" } }, @@ -7330,11 +7330,11 @@ "tags": [ "stocks:aggregates" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Stocks data", "name": "stocks" } @@ -7354,7 +7354,7 @@ "schema": { "type": "string" }, - "x-polygon-go-id": "Ticker" + "x-massive-go-id": "Ticker" }, { "description": "Query by timestamp. Either a date with the format YYYY-MM-DD or a millisecond timestamp.", @@ -7363,7 +7363,7 @@ "schema": { "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, @@ -7503,11 +7503,11 @@ "content": { "application/json": { "example": { - "next_url": "https://api.polygon.io/v1/indicators/macd/X:BTCUSD?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", + "next_url": "https://api.massive.com/v1/indicators/macd/X:BTCUSD?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3", "results": { "underlying": { - "url": "https://api.polygon.io/v2/aggs/ticker/X:BTCUSD/range/1/day/2003-01-01/2022-07-25" + "url": "https://api.massive.com/v2/aggs/ticker/X:BTCUSD/range/1/day/2003-01-01/2022-07-25" }, "values": [ { @@ -7598,9 +7598,9 @@ "n" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Aggregate", - "path": "github.com/polygon-io/go-lib-models/v2/globals" + "path": "github.com/massive-com/go-lib-models/v2/globals" } }, "type": "array" @@ -7619,7 +7619,7 @@ "description": "The indicator value for this period.", "format": "float", "type": "number", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "*float64" } }, @@ -7627,7 +7627,7 @@ "description": "The indicator value for this period.", "format": "float", "type": "number", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "*float64" } }, @@ -7635,16 +7635,16 @@ "description": "The Unix Msec timestamp from the last aggregate used in this calculation.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "IMicroseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "value": { "description": "The indicator value for this period.", "format": "float", "type": "number", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "*float64" } } @@ -7655,7 +7655,7 @@ } }, "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "MACDResults" } }, @@ -7681,16 +7681,16 @@ "tags": [ "crypto:aggregates" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Crypto data", "name": "crypto" } }, - "x-polygon-ignore": true + "x-massive-ignore": true }, "/v1/indicators/macd/{fxTicker}": { "get": { @@ -7706,7 +7706,7 @@ "schema": { "type": "string" }, - "x-polygon-go-id": "Ticker" + "x-massive-go-id": "Ticker" }, { "description": "Query by timestamp. Either a date with the format YYYY-MM-DD or a millisecond timestamp.", @@ -7715,7 +7715,7 @@ "schema": { "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, @@ -7865,11 +7865,11 @@ "content": { "application/json": { "example": { - "next_url": "https://api.polygon.io/v1/indicators/macd/C:USDAUD?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", + "next_url": "https://api.massive.com/v1/indicators/macd/C:USDAUD?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3", "results": { "underlying": { - "url": "https://api.polygon.io/v2/aggs/ticker/C:USDAUD/range/1/day/2003-01-01/2022-07-25" + "url": "https://api.massive.com/v2/aggs/ticker/C:USDAUD/range/1/day/2003-01-01/2022-07-25" }, "values": [ { @@ -7960,9 +7960,9 @@ "n" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Aggregate", - "path": "github.com/polygon-io/go-lib-models/v2/globals" + "path": "github.com/massive-com/go-lib-models/v2/globals" } }, "type": "array" @@ -7981,7 +7981,7 @@ "description": "The indicator value for this period.", "format": "float", "type": "number", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "*float64" } }, @@ -7989,7 +7989,7 @@ "description": "The indicator value for this period.", "format": "float", "type": "number", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "*float64" } }, @@ -7997,16 +7997,16 @@ "description": "The Unix Msec timestamp from the last aggregate used in this calculation.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "IMicroseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "value": { "description": "The indicator value for this period.", "format": "float", "type": "number", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "*float64" } } @@ -8017,7 +8017,7 @@ } }, "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "MACDResults" } }, @@ -8043,16 +8043,16 @@ "tags": [ "fx:aggregates" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Forex data", "name": "fx" } }, - "x-polygon-ignore": true + "x-massive-ignore": true }, "/v1/indicators/macd/{indicesTicker}": { "get": { @@ -8068,7 +8068,7 @@ "schema": { "type": "string" }, - "x-polygon-go-id": "Ticker" + "x-massive-go-id": "Ticker" }, { "description": "Query by timestamp. Either a date with the format YYYY-MM-DD or a millisecond timestamp.", @@ -8077,7 +8077,7 @@ "schema": { "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, @@ -8227,11 +8227,11 @@ "content": { "application/json": { "example": { - "next_url": "https://api.polygon.io/v1/indicators/macd/I:NDX?cursor=YWRqdXN0ZWQ9dHJ1ZSZhcD0lN0IlMjJ2JTIyJTNBMCUyQyUyMm8lMjIlM0EwJTJDJTIyYyUyMiUzQTE1MDg0Ljk5OTM4OTgyMDAzJTJDJTIyaCUyMiUzQTAlMkMlMjJsJTIyJTNBMCUyQyUyMnQlMjIlM0ExNjg3MTUwODAwMDAwJTdEJmFzPSZleHBhbmRfdW5kZXJseWluZz1mYWxzZSZsaW1pdD0yJmxvbmdfd2luZG93PTI2Jm9yZGVyPWRlc2Mmc2VyaWVzX3R5cGU9Y2xvc2Umc2hvcnRfd2luZG93PTEyJnNpZ25hbF93aW5kb3c9OSZ0aW1lc3Bhbj1kYXkmdGltZXN0YW1wLmx0PTE2ODcyMTkyMDAwMDA", + "next_url": "https://api.massive.com/v1/indicators/macd/I:NDX?cursor=YWRqdXN0ZWQ9dHJ1ZSZhcD0lN0IlMjJ2JTIyJTNBMCUyQyUyMm8lMjIlM0EwJTJDJTIyYyUyMiUzQTE1MDg0Ljk5OTM4OTgyMDAzJTJDJTIyaCUyMiUzQTAlMkMlMjJsJTIyJTNBMCUyQyUyMnQlMjIlM0ExNjg3MTUwODAwMDAwJTdEJmFzPSZleHBhbmRfdW5kZXJseWluZz1mYWxzZSZsaW1pdD0yJmxvbmdfd2luZG93PTI2Jm9yZGVyPWRlc2Mmc2VyaWVzX3R5cGU9Y2xvc2Umc2hvcnRfd2luZG93PTEyJnNpZ25hbF93aW5kb3c9OSZ0aW1lc3Bhbj1kYXkmdGltZXN0YW1wLmx0PTE2ODcyMTkyMDAwMDA", "request_id": "2eeda0be57e83cbc64cc8d1a74e84dbd", "results": { "underlying": { - "url": "https://api.polygon.io/v2/aggs/ticker/I:NDX/range/1/day/1678338000000/1687366537196?limit=121&sort=desc" + "url": "https://api.massive.com/v2/aggs/ticker/I:NDX/range/1/day/1678338000000/1687366537196?limit=121&sort=desc" }, "values": [ { @@ -8322,9 +8322,9 @@ "n" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Aggregate", - "path": "github.com/polygon-io/go-lib-models/v2/globals" + "path": "github.com/massive-com/go-lib-models/v2/globals" } }, "type": "array" @@ -8343,7 +8343,7 @@ "description": "The indicator value for this period.", "format": "float", "type": "number", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "*float64" } }, @@ -8351,7 +8351,7 @@ "description": "The indicator value for this period.", "format": "float", "type": "number", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "*float64" } }, @@ -8359,16 +8359,16 @@ "description": "The Unix Msec timestamp from the last aggregate used in this calculation.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "IMicroseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "value": { "description": "The indicator value for this period.", "format": "float", "type": "number", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "*float64" } } @@ -8379,7 +8379,7 @@ } }, "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "MACDResults" } }, @@ -8399,17 +8399,17 @@ "tags": [ "indices:aggregates" ], - "x-polygon-entitlement-allowed-limited-tickers": true, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-allowed-limited-tickers": true, + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Indices data", "name": "indices" } }, - "x-polygon-ignore": true + "x-massive-ignore": true }, "/v1/indicators/macd/{optionsTicker}": { "get": { @@ -8425,7 +8425,7 @@ "schema": { "type": "string" }, - "x-polygon-go-id": "Ticker" + "x-massive-go-id": "Ticker" }, { "description": "Query by timestamp. Either a date with the format YYYY-MM-DD or a millisecond timestamp.", @@ -8434,7 +8434,7 @@ "schema": { "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, @@ -8584,11 +8584,11 @@ "content": { "application/json": { "example": { - "next_url": "https://api.polygon.io/v1/indicators/macd/O:SPY241220P00720000?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", + "next_url": "https://api.massive.com/v1/indicators/macd/O:SPY241220P00720000?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3", "results": { "underlying": { - "url": "https://api.polygon.io/v2/aggs/ticker/O:SPY241220P00720000/range/1/day/2003-01-01/2022-07-25" + "url": "https://api.massive.com/v2/aggs/ticker/O:SPY241220P00720000/range/1/day/2003-01-01/2022-07-25" }, "values": [ { @@ -8679,9 +8679,9 @@ "n" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Aggregate", - "path": "github.com/polygon-io/go-lib-models/v2/globals" + "path": "github.com/massive-com/go-lib-models/v2/globals" } }, "type": "array" @@ -8700,7 +8700,7 @@ "description": "The indicator value for this period.", "format": "float", "type": "number", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "*float64" } }, @@ -8708,7 +8708,7 @@ "description": "The indicator value for this period.", "format": "float", "type": "number", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "*float64" } }, @@ -8716,16 +8716,16 @@ "description": "The Unix Msec timestamp from the last aggregate used in this calculation.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "IMicroseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "value": { "description": "The indicator value for this period.", "format": "float", "type": "number", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "*float64" } } @@ -8736,7 +8736,7 @@ } }, "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "MACDResults" } }, @@ -8762,16 +8762,16 @@ "tags": [ "options:aggregates" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Options data", "name": "options" } }, - "x-polygon-ignore": true + "x-massive-ignore": true }, "/v1/indicators/macd/{stockTicker}": { "get": { @@ -8787,7 +8787,7 @@ "schema": { "type": "string" }, - "x-polygon-go-id": "Ticker" + "x-massive-go-id": "Ticker" }, { "description": "Query by timestamp. Either a date with the format YYYY-MM-DD or a millisecond timestamp.", @@ -8796,7 +8796,7 @@ "schema": { "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, @@ -8946,11 +8946,11 @@ "content": { "application/json": { "example": { - "next_url": "https://api.polygon.io/v1/indicators/macd/AAPL?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", + "next_url": "https://api.massive.com/v1/indicators/macd/AAPL?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3", "results": { "underlying": { - "url": "https://api.polygon.io/v2/aggs/ticker/AAPL/range/1/day/2003-01-01/2022-07-25" + "url": "https://api.massive.com/v2/aggs/ticker/AAPL/range/1/day/2003-01-01/2022-07-25" }, "values": [ { @@ -9041,9 +9041,9 @@ "n" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Aggregate", - "path": "github.com/polygon-io/go-lib-models/v2/globals" + "path": "github.com/massive-com/go-lib-models/v2/globals" } }, "type": "array" @@ -9062,7 +9062,7 @@ "description": "The indicator value for this period.", "format": "float", "type": "number", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "*float64" } }, @@ -9070,7 +9070,7 @@ "description": "The indicator value for this period.", "format": "float", "type": "number", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "*float64" } }, @@ -9078,16 +9078,16 @@ "description": "The Unix Msec timestamp from the last aggregate used in this calculation.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "IMicroseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "value": { "description": "The indicator value for this period.", "format": "float", "type": "number", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "*float64" } } @@ -9098,7 +9098,7 @@ } }, "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "MACDResults" } }, @@ -9124,11 +9124,11 @@ "tags": [ "stocks:aggregates" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Stocks data", "name": "stocks" } @@ -9148,7 +9148,7 @@ "schema": { "type": "string" }, - "x-polygon-go-id": "Ticker" + "x-massive-go-id": "Ticker" }, { "description": "Query by timestamp. Either a date with the format YYYY-MM-DD or a millisecond timestamp.", @@ -9157,7 +9157,7 @@ "schema": { "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, @@ -9277,11 +9277,11 @@ "content": { "application/json": { "example": { - "next_url": "https://api.polygon.io/v1/indicators/rsi/X:BTCUSD?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", + "next_url": "https://api.massive.com/v1/indicators/rsi/X:BTCUSD?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3", "results": { "underlying": { - "url": "https://api.polygon.io/v2/aggs/ticker/X:BTCUSD/range/1/day/2003-01-01/2022-07-25" + "url": "https://api.massive.com/v2/aggs/ticker/X:BTCUSD/range/1/day/2003-01-01/2022-07-25" }, "values": [ { @@ -9364,9 +9364,9 @@ "n" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Aggregate", - "path": "github.com/polygon-io/go-lib-models/v2/globals" + "path": "github.com/massive-com/go-lib-models/v2/globals" } }, "type": "array" @@ -9385,16 +9385,16 @@ "description": "The Unix Msec timestamp from the last aggregate used in this calculation.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "IMicroseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "value": { "description": "The indicator value for this period.", "format": "float", "type": "number", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "*float64" } } @@ -9405,7 +9405,7 @@ } }, "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "RSIResults" } }, @@ -9431,16 +9431,16 @@ "tags": [ "crypto:aggregates" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Crypto data", "name": "crypto" } }, - "x-polygon-ignore": true + "x-massive-ignore": true }, "/v1/indicators/rsi/{fxTicker}": { "get": { @@ -9456,7 +9456,7 @@ "schema": { "type": "string" }, - "x-polygon-go-id": "Ticker" + "x-massive-go-id": "Ticker" }, { "description": "Query by timestamp. Either a date with the format YYYY-MM-DD or a millisecond timestamp.", @@ -9465,7 +9465,7 @@ "schema": { "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, @@ -9595,11 +9595,11 @@ "content": { "application/json": { "example": { - "next_url": "https://api.polygon.io/v1/indicators/rsi/C:USDAUD?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", + "next_url": "https://api.massive.com/v1/indicators/rsi/C:USDAUD?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3", "results": { "underlying": { - "url": "https://api.polygon.io/v2/aggs/ticker/C:USDAUD/range/1/day/2003-01-01/2022-07-25" + "url": "https://api.massive.com/v2/aggs/ticker/C:USDAUD/range/1/day/2003-01-01/2022-07-25" }, "values": [ { @@ -9682,9 +9682,9 @@ "n" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Aggregate", - "path": "github.com/polygon-io/go-lib-models/v2/globals" + "path": "github.com/massive-com/go-lib-models/v2/globals" } }, "type": "array" @@ -9703,16 +9703,16 @@ "description": "The Unix Msec timestamp from the last aggregate used in this calculation.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "IMicroseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "value": { "description": "The indicator value for this period.", "format": "float", "type": "number", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "*float64" } } @@ -9723,7 +9723,7 @@ } }, "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "RSIResults" } }, @@ -9749,16 +9749,16 @@ "tags": [ "fx:aggregates" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Forex data", "name": "fx" } }, - "x-polygon-ignore": true + "x-massive-ignore": true }, "/v1/indicators/rsi/{indicesTicker}": { "get": { @@ -9774,7 +9774,7 @@ "schema": { "type": "string" }, - "x-polygon-go-id": "Ticker" + "x-massive-go-id": "Ticker" }, { "description": "Query by timestamp. Either a date with the format YYYY-MM-DD or a millisecond timestamp.", @@ -9783,7 +9783,7 @@ "schema": { "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, @@ -9913,11 +9913,11 @@ "content": { "application/json": { "example": { - "next_url": "https://api.polygon.io/v1/indicators/rsi/I:NDX?cursor=YWRqdXN0ZWQ9dHJ1ZSZhcD0lN0IlMjJ2JTIyJTNBMCUyQyUyMm8lMjIlM0EwJTJDJTIyYyUyMiUzQTE1MDg0Ljk5OTM4OTgyMDAzJTJDJTIyaCUyMiUzQTAlMkMlMjJsJTIyJTNBMCUyQyUyMnQlMjIlM0ExNjg3MjE5MjAwMDAwJTdEJmFzPSZleHBhbmRfdW5kZXJseWluZz1mYWxzZSZsaW1pdD0xJm9yZGVyPWRlc2Mmc2VyaWVzX3R5cGU9Y2xvc2UmdGltZXNwYW49ZGF5JnRpbWVzdGFtcC5sdD0xNjg3MjM3MjAwMDAwJndpbmRvdz0xNA", + "next_url": "https://api.massive.com/v1/indicators/rsi/I:NDX?cursor=YWRqdXN0ZWQ9dHJ1ZSZhcD0lN0IlMjJ2JTIyJTNBMCUyQyUyMm8lMjIlM0EwJTJDJTIyYyUyMiUzQTE1MDg0Ljk5OTM4OTgyMDAzJTJDJTIyaCUyMiUzQTAlMkMlMjJsJTIyJTNBMCUyQyUyMnQlMjIlM0ExNjg3MjE5MjAwMDAwJTdEJmFzPSZleHBhbmRfdW5kZXJseWluZz1mYWxzZSZsaW1pdD0xJm9yZGVyPWRlc2Mmc2VyaWVzX3R5cGU9Y2xvc2UmdGltZXNwYW49ZGF5JnRpbWVzdGFtcC5sdD0xNjg3MjM3MjAwMDAwJndpbmRvdz0xNA", "request_id": "28a8417f521f98e1d08f6ed7d1fbcad3", "results": { "underlying": { - "url": "https://api.polygon.io/v2/aggs/ticker/I:NDX/range/1/day/1678338000000/1687366658253?limit=66&sort=desc" + "url": "https://api.massive.com/v2/aggs/ticker/I:NDX/range/1/day/1678338000000/1687366658253?limit=66&sort=desc" }, "values": [ { @@ -10000,9 +10000,9 @@ "n" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Aggregate", - "path": "github.com/polygon-io/go-lib-models/v2/globals" + "path": "github.com/massive-com/go-lib-models/v2/globals" } }, "type": "array" @@ -10021,16 +10021,16 @@ "description": "The Unix Msec timestamp from the last aggregate used in this calculation.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "IMicroseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "value": { "description": "The indicator value for this period.", "format": "float", "type": "number", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "*float64" } } @@ -10041,7 +10041,7 @@ } }, "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "RSIResults" } }, @@ -10061,17 +10061,17 @@ "tags": [ "indices:aggregates" ], - "x-polygon-entitlement-allowed-limited-tickers": true, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-allowed-limited-tickers": true, + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Indices data", "name": "indices" } }, - "x-polygon-ignore": true + "x-massive-ignore": true }, "/v1/indicators/rsi/{optionsTicker}": { "get": { @@ -10087,7 +10087,7 @@ "schema": { "type": "string" }, - "x-polygon-go-id": "Ticker" + "x-massive-go-id": "Ticker" }, { "description": "Query by timestamp. Either a date with the format YYYY-MM-DD or a millisecond timestamp.", @@ -10096,7 +10096,7 @@ "schema": { "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, @@ -10226,11 +10226,11 @@ "content": { "application/json": { "example": { - "next_url": "https://api.polygon.io/v1/indicators/rsi/O:SPY241220P00720000?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", + "next_url": "https://api.massive.com/v1/indicators/rsi/O:SPY241220P00720000?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3", "results": { "underlying": { - "url": "https://api.polygon.io/v2/aggs/ticker/O:SPY241220P00720000/range/1/day/2003-01-01/2022-07-25" + "url": "https://api.massive.com/v2/aggs/ticker/O:SPY241220P00720000/range/1/day/2003-01-01/2022-07-25" }, "values": [ { @@ -10313,9 +10313,9 @@ "n" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Aggregate", - "path": "github.com/polygon-io/go-lib-models/v2/globals" + "path": "github.com/massive-com/go-lib-models/v2/globals" } }, "type": "array" @@ -10334,16 +10334,16 @@ "description": "The Unix Msec timestamp from the last aggregate used in this calculation.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "IMicroseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "value": { "description": "The indicator value for this period.", "format": "float", "type": "number", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "*float64" } } @@ -10354,7 +10354,7 @@ } }, "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "RSIResults" } }, @@ -10380,16 +10380,16 @@ "tags": [ "options:aggregates" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Options data", "name": "options" } }, - "x-polygon-ignore": true + "x-massive-ignore": true }, "/v1/indicators/rsi/{stockTicker}": { "get": { @@ -10405,7 +10405,7 @@ "schema": { "type": "string" }, - "x-polygon-go-id": "Ticker" + "x-massive-go-id": "Ticker" }, { "description": "Query by timestamp. Either a date with the format YYYY-MM-DD or a millisecond timestamp.", @@ -10414,7 +10414,7 @@ "schema": { "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, @@ -10544,11 +10544,11 @@ "content": { "application/json": { "example": { - "next_url": "https://api.polygon.io/v1/indicators/rsi/AAPL?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", + "next_url": "https://api.massive.com/v1/indicators/rsi/AAPL?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3", "results": { "underlying": { - "url": "https://api.polygon.io/v2/aggs/ticker/AAPL/range/1/day/2003-01-01/2022-07-25" + "url": "https://api.massive.com/v2/aggs/ticker/AAPL/range/1/day/2003-01-01/2022-07-25" }, "values": [ { @@ -10631,9 +10631,9 @@ "n" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Aggregate", - "path": "github.com/polygon-io/go-lib-models/v2/globals" + "path": "github.com/massive-com/go-lib-models/v2/globals" } }, "type": "array" @@ -10652,16 +10652,16 @@ "description": "The Unix Msec timestamp from the last aggregate used in this calculation.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "IMicroseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "value": { "description": "The indicator value for this period.", "format": "float", "type": "number", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "*float64" } } @@ -10672,7 +10672,7 @@ } }, "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "RSIResults" } }, @@ -10698,11 +10698,11 @@ "tags": [ "stocks:aggregates" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Stocks data", "name": "stocks" } @@ -10722,7 +10722,7 @@ "schema": { "type": "string" }, - "x-polygon-go-id": "Ticker" + "x-massive-go-id": "Ticker" }, { "description": "Query by timestamp. Either a date with the format YYYY-MM-DD or a millisecond timestamp.", @@ -10731,7 +10731,7 @@ "schema": { "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, @@ -10851,7 +10851,7 @@ "content": { "application/json": { "example": { - "next_url": "https://api.polygon.io/v1/indicators/sma/X:BTCUSD?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", + "next_url": "https://api.massive.com/v1/indicators/sma/X:BTCUSD?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3", "results": { "underlying": { @@ -10877,7 +10877,7 @@ "vw": 74.7026 } ], - "url": "https://api.polygon.io/v2/aggs/ticker/X:BTCUSD/range/1/day/2003-01-01/2022-07-25" + "url": "https://api.massive.com/v2/aggs/ticker/X:BTCUSD/range/1/day/2003-01-01/2022-07-25" }, "values": [ { @@ -10960,9 +10960,9 @@ "n" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Aggregate", - "path": "github.com/polygon-io/go-lib-models/v2/globals" + "path": "github.com/massive-com/go-lib-models/v2/globals" } }, "type": "array" @@ -10981,16 +10981,16 @@ "description": "The Unix Msec timestamp from the last aggregate used in this calculation.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "IMicroseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "value": { "description": "The indicator value for this period.", "format": "float", "type": "number", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "*float64" } } @@ -11001,7 +11001,7 @@ } }, "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "SMAResults" } }, @@ -11027,16 +11027,16 @@ "tags": [ "crypto:aggregates" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Crypto data", "name": "crypto" } }, - "x-polygon-ignore": true + "x-massive-ignore": true }, "/v1/indicators/sma/{fxTicker}": { "get": { @@ -11052,7 +11052,7 @@ "schema": { "type": "string" }, - "x-polygon-go-id": "Ticker" + "x-massive-go-id": "Ticker" }, { "description": "Query by timestamp. Either a date with the format YYYY-MM-DD or a millisecond timestamp.", @@ -11061,7 +11061,7 @@ "schema": { "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, @@ -11191,7 +11191,7 @@ "content": { "application/json": { "example": { - "next_url": "https://api.polygon.io/v1/indicators/sma/C:USDAUD?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", + "next_url": "https://api.massive.com/v1/indicators/sma/C:USDAUD?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3", "results": { "underlying": { @@ -11217,7 +11217,7 @@ "vw": 74.7026 } ], - "url": "https://api.polygon.io/v2/aggs/ticker/C:USDAUD/range/1/day/2003-01-01/2022-07-25" + "url": "https://api.massive.com/v2/aggs/ticker/C:USDAUD/range/1/day/2003-01-01/2022-07-25" }, "values": [ { @@ -11300,9 +11300,9 @@ "n" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Aggregate", - "path": "github.com/polygon-io/go-lib-models/v2/globals" + "path": "github.com/massive-com/go-lib-models/v2/globals" } }, "type": "array" @@ -11321,16 +11321,16 @@ "description": "The Unix Msec timestamp from the last aggregate used in this calculation.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "IMicroseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "value": { "description": "The indicator value for this period.", "format": "float", "type": "number", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "*float64" } } @@ -11341,7 +11341,7 @@ } }, "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "SMAResults" } }, @@ -11367,16 +11367,16 @@ "tags": [ "fx:aggregates" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Forex data", "name": "fx" } }, - "x-polygon-ignore": true + "x-massive-ignore": true }, "/v1/indicators/sma/{indicesTicker}": { "get": { @@ -11392,7 +11392,7 @@ "schema": { "type": "string" }, - "x-polygon-go-id": "Ticker" + "x-massive-go-id": "Ticker" }, { "description": "Query by timestamp. Either a date with the format YYYY-MM-DD or a millisecond timestamp.", @@ -11401,7 +11401,7 @@ "schema": { "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, @@ -11531,11 +11531,11 @@ "content": { "application/json": { "example": { - "next_url": "https://api.polygon.io/v1/indicators/sma/I:NDX?cursor=YWRqdXN0ZWQ9dHJ1ZSZhcD0lN0IlMjJ2JTIyJTNBMCUyQyUyMm8lMjIlM0EwJTJDJTIyYyUyMiUzQTE1MDg0Ljk5OTM4OTgyMDAzJTJDJTIyaCUyMiUzQTAlMkMlMjJsJTIyJTNBMCUyQyUyMnQlMjIlM0ExNjg3MjE5MjAwMDAwJTdEJmFzPSZleHBhbmRfdW5kZXJseWluZz1mYWxzZSZsaW1pdD0xJm9yZGVyPWRlc2Mmc2VyaWVzX3R5cGU9Y2xvc2UmdGltZXNwYW49ZGF5JnRpbWVzdGFtcC5sdD0xNjg3MjM3MjAwMDAwJndpbmRvdz01Mw", + "next_url": "https://api.massive.com/v1/indicators/sma/I:NDX?cursor=YWRqdXN0ZWQ9dHJ1ZSZhcD0lN0IlMjJ2JTIyJTNBMCUyQyUyMm8lMjIlM0EwJTJDJTIyYyUyMiUzQTE1MDg0Ljk5OTM4OTgyMDAzJTJDJTIyaCUyMiUzQTAlMkMlMjJsJTIyJTNBMCUyQyUyMnQlMjIlM0ExNjg3MjE5MjAwMDAwJTdEJmFzPSZleHBhbmRfdW5kZXJseWluZz1mYWxzZSZsaW1pdD0xJm9yZGVyPWRlc2Mmc2VyaWVzX3R5cGU9Y2xvc2UmdGltZXNwYW49ZGF5JnRpbWVzdGFtcC5sdD0xNjg3MjM3MjAwMDAwJndpbmRvdz01Mw", "request_id": "4cae270008cb3f947e3f92c206e3888a", "results": { "underlying": { - "url": "https://api.polygon.io/v2/aggs/ticker/I:NDX/range/1/day/1678338000000/1687366378997?limit=240&sort=desc" + "url": "https://api.massive.com/v2/aggs/ticker/I:NDX/range/1/day/1678338000000/1687366378997?limit=240&sort=desc" }, "values": [ { @@ -11618,9 +11618,9 @@ "n" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Aggregate", - "path": "github.com/polygon-io/go-lib-models/v2/globals" + "path": "github.com/massive-com/go-lib-models/v2/globals" } }, "type": "array" @@ -11639,16 +11639,16 @@ "description": "The Unix Msec timestamp from the last aggregate used in this calculation.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "IMicroseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "value": { "description": "The indicator value for this period.", "format": "float", "type": "number", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "*float64" } } @@ -11659,7 +11659,7 @@ } }, "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "SMAResults" } }, @@ -11679,17 +11679,17 @@ "tags": [ "indices:aggregates" ], - "x-polygon-entitlement-allowed-limited-tickers": true, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-allowed-limited-tickers": true, + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Indices data", "name": "indices" } }, - "x-polygon-ignore": true + "x-massive-ignore": true }, "/v1/indicators/sma/{optionsTicker}": { "get": { @@ -11705,7 +11705,7 @@ "schema": { "type": "string" }, - "x-polygon-go-id": "Ticker" + "x-massive-go-id": "Ticker" }, { "description": "Query by timestamp. Either a date with the format YYYY-MM-DD or a millisecond timestamp.", @@ -11714,7 +11714,7 @@ "schema": { "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, @@ -11844,7 +11844,7 @@ "content": { "application/json": { "example": { - "next_url": "https://api.polygon.io/v1/indicators/sma/O:SPY241220P00720000?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", + "next_url": "https://api.massive.com/v1/indicators/sma/O:SPY241220P00720000?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3", "results": { "underlying": { @@ -11870,7 +11870,7 @@ "vw": 74.7026 } ], - "url": "https://api.polygon.io/v2/aggs/ticker/O:SPY241220P00720000/range/1/day/2003-01-01/2022-07-25" + "url": "https://api.massive.com/v2/aggs/ticker/O:SPY241220P00720000/range/1/day/2003-01-01/2022-07-25" }, "values": [ { @@ -11953,9 +11953,9 @@ "n" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Aggregate", - "path": "github.com/polygon-io/go-lib-models/v2/globals" + "path": "github.com/massive-com/go-lib-models/v2/globals" } }, "type": "array" @@ -11974,16 +11974,16 @@ "description": "The Unix Msec timestamp from the last aggregate used in this calculation.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "IMicroseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "value": { "description": "The indicator value for this period.", "format": "float", "type": "number", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "*float64" } } @@ -11994,7 +11994,7 @@ } }, "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "SMAResults" } }, @@ -12020,16 +12020,16 @@ "tags": [ "options:aggregates" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Options data", "name": "options" } }, - "x-polygon-ignore": true + "x-massive-ignore": true }, "/v1/indicators/sma/{stockTicker}": { "get": { @@ -12045,7 +12045,7 @@ "schema": { "type": "string" }, - "x-polygon-go-id": "Ticker" + "x-massive-go-id": "Ticker" }, { "description": "Query by timestamp. Either a date with the format YYYY-MM-DD or a millisecond timestamp.", @@ -12054,7 +12054,7 @@ "schema": { "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, @@ -12184,7 +12184,7 @@ "content": { "application/json": { "example": { - "next_url": "https://api.polygon.io/v1/indicators/sma/AAPL?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", + "next_url": "https://api.massive.com/v1/indicators/sma/AAPL?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3", "results": { "underlying": { @@ -12210,7 +12210,7 @@ "vw": 74.7026 } ], - "url": "https://api.polygon.io/v2/aggs/ticker/AAPL/range/1/day/2003-01-01/2022-07-25" + "url": "https://api.massive.com/v2/aggs/ticker/AAPL/range/1/day/2003-01-01/2022-07-25" }, "values": [ { @@ -12293,9 +12293,9 @@ "n" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Aggregate", - "path": "github.com/polygon-io/go-lib-models/v2/globals" + "path": "github.com/massive-com/go-lib-models/v2/globals" } }, "type": "array" @@ -12314,16 +12314,16 @@ "description": "The Unix Msec timestamp from the last aggregate used in this calculation.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "IMicroseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "value": { "description": "The indicator value for this period.", "format": "float", "type": "number", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "*float64" } } @@ -12334,7 +12334,7 @@ } }, "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "SMAResults" } }, @@ -12360,11 +12360,11 @@ "tags": [ "stocks:aggregates" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Stocks data", "name": "stocks" } @@ -12421,17 +12421,17 @@ "conditions": { "description": "A list of condition codes.", "items": { - "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://polygon.io/docs/stocks/get_v3_reference_conditions)\nfor a mapping to exchange conditions.", + "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://massive.com/docs/stocks/get_v3_reference_conditions)\nfor a mapping to exchange conditions.", "format": "int32", "type": "integer" }, "type": "array", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Int32Array" } }, "exchange": { - "description": "The exchange that this crypto trade happened on. \nSee Exchanges for a mapping of exchanges to IDs.", + "description": "The exchange that this crypto trade happened on. \nSee Exchanges for a mapping of exchanges to IDs.", "type": "integer" }, "price": { @@ -12447,9 +12447,9 @@ "timestamp": { "description": "The Unix millisecond timestamp.", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "IMilliseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } } }, @@ -12460,7 +12460,7 @@ "timestamp" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "LastTradeCrypto" } }, @@ -12502,11 +12502,11 @@ "tags": [ "crypto:last:trade" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Trade data", "name": "trades" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Crypto data", "name": "crypto" } @@ -12568,15 +12568,15 @@ "type": "number" }, "exchange": { - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" }, "timestamp": { "description": "The Unix millisecond timestamp.", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "IMilliseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } } }, @@ -12587,7 +12587,7 @@ "timestamp" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "LastQuoteCurrencies" } }, @@ -12629,11 +12629,11 @@ "tags": [ "fx:last:quote" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "NBBO data", "name": "nbbo" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Forex data", "name": "fx" } @@ -12667,7 +12667,7 @@ "afterHours": { "description": "Whether or not the market is in post-market hours.", "type": "boolean", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "*bool" } }, @@ -12683,14 +12683,14 @@ } }, "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Currencies" } }, "earlyHours": { "description": "Whether or not the market is in pre-market hours.", "type": "boolean", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "*bool" } }, @@ -12710,7 +12710,7 @@ } }, "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Exchanges" } }, @@ -12757,7 +12757,7 @@ } }, "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "IndicesGroups" } }, @@ -12781,7 +12781,7 @@ "tags": [ "reference:stocks:market" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Reference data", "name": "reference" } @@ -12860,7 +12860,7 @@ } }, "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "MarketHoliday" } }, @@ -12875,7 +12875,7 @@ "tags": [ "reference:stocks:market" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Reference data", "name": "reference" } @@ -12994,7 +12994,7 @@ "c": { "description": "A list of condition codes.\n", "items": { - "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://polygon.io/docs/get_v3_reference_conditions)\nfor a mapping to exchange conditions.\n", + "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://massive.com/docs/get_v3_reference_conditions)\nfor a mapping to exchange conditions.\n", "type": "integer" }, "type": "array" @@ -13018,7 +13018,7 @@ "type": "integer" }, "x": { - "description": "The exchange that this crypto trade happened on. \nSee Exchanges for a mapping of exchanges to IDs.\n", + "description": "The exchange that this crypto trade happened on. \nSee Exchanges for a mapping of exchanges to IDs.\n", "type": "integer" } }, @@ -13054,7 +13054,7 @@ "c": { "description": "A list of condition codes.\n", "items": { - "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://polygon.io/docs/get_v3_reference_conditions)\nfor a mapping to exchange conditions.\n", + "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://massive.com/docs/get_v3_reference_conditions)\nfor a mapping to exchange conditions.\n", "type": "integer" }, "type": "array" @@ -13078,7 +13078,7 @@ "type": "integer" }, "x": { - "description": "The exchange that this crypto trade happened on. \nSee Exchanges for a mapping of exchanges to IDs.\n", + "description": "The exchange that this crypto trade happened on. \nSee Exchanges for a mapping of exchanges to IDs.\n", "type": "integer" } }, @@ -13128,11 +13128,11 @@ "tags": [ "crypto:open-close" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Crypto data", "name": "crypto" } @@ -13252,12 +13252,12 @@ "tags": [ "stocks:open-close" ], - "x-polygon-entitlement-allowed-limited-tickers": true, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-allowed-limited-tickers": true, + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Indices data", "name": "indices" } @@ -13398,11 +13398,11 @@ "tags": [ "options:open-close" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Options data", "name": "options" } @@ -13543,11 +13543,11 @@ "tags": [ "stocks:open-close" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Stocks data", "name": "stocks" } @@ -13581,7 +13581,7 @@ "pattern": "^[0-9]{8}$", "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, @@ -13595,7 +13595,7 @@ "pattern": "^[0-9]{8}$", "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, @@ -13607,7 +13607,7 @@ "nullable": true, "type": "boolean" }, - "x-polygon-go-id": "HasXBRL" + "x-massive-go-id": "HasXBRL" }, { "description": "Query by entity company name.", @@ -13617,7 +13617,7 @@ "example": "Facebook Inc", "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "search": true } }, @@ -13842,9 +13842,9 @@ "sic" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "SECCompanyData", - "path": "github.com/polygon-io/go-lib-models/v2/globals" + "path": "github.com/massive-com/go-lib-models/v2/globals" } }, "relation": { @@ -13859,9 +13859,9 @@ "relation" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "SECFilingEntity", - "path": "github.com/polygon-io/go-lib-models/v2/globals" + "path": "github.com/massive-com/go-lib-models/v2/globals" } }, "type": "array" @@ -13914,9 +13914,9 @@ "entities" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "SECFiling", - "path": "github.com/polygon-io/go-lib-models/v2/globals" + "path": "github.com/massive-com/go-lib-models/v2/globals" } }, "type": "array" @@ -13942,11 +13942,11 @@ "tags": [ "reference:sec:filings" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Reference data", "name": "reference" }, - "x-polygon-paginate": { + "x-massive-paginate": { "sort": { "default": "filing_date", "enum": [ @@ -13956,7 +13956,7 @@ } } }, - "x-polygon-draft": true + "x-massive-draft": true }, "/v1/reference/sec/filings/{filing_id}": { "get": { @@ -14021,9 +14021,9 @@ "sic" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "SECCompanyData", - "path": "github.com/polygon-io/go-lib-models/v2/globals" + "path": "github.com/massive-com/go-lib-models/v2/globals" } }, "relation": { @@ -14038,9 +14038,9 @@ "relation" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "SECFilingEntity", - "path": "github.com/polygon-io/go-lib-models/v2/globals" + "path": "github.com/massive-com/go-lib-models/v2/globals" } }, "type": "array" @@ -14093,9 +14093,9 @@ "entities" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "SECFiling", - "path": "github.com/polygon-io/go-lib-models/v2/globals" + "path": "github.com/massive-com/go-lib-models/v2/globals" } } }, @@ -14110,12 +14110,12 @@ "tags": [ "reference:sec:filing" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Reference data", "name": "reference" } }, - "x-polygon-draft": true + "x-massive-draft": true }, "/v1/reference/sec/filings/{filing_id}/files": { "get": { @@ -14142,7 +14142,7 @@ "min": 1, "type": "integer" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, @@ -14154,7 +14154,7 @@ "description": "The name for the file.", "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, @@ -14348,9 +14348,9 @@ "source_url" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "SECFilingFile", - "path": "github.com/polygon-io/go-lib-models/v2/globals" + "path": "github.com/massive-com/go-lib-models/v2/globals" } }, "type": "array" @@ -14376,11 +14376,11 @@ "tags": [ "reference:sec:filing:files" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Reference data", "name": "reference" }, - "x-polygon-paginate": { + "x-massive-paginate": { "sort": { "default": "sequence", "enum": [ @@ -14390,7 +14390,7 @@ } } }, - "x-polygon-draft": true + "x-massive-draft": true }, "/v1/reference/sec/filings/{filing_id}/files/{file_id}": { "get": { @@ -14469,9 +14469,9 @@ "source_url" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "SECFilingFile", - "path": "github.com/polygon-io/go-lib-models/v2/globals" + "path": "github.com/massive-com/go-lib-models/v2/globals" } } } @@ -14483,12 +14483,12 @@ "tags": [ "reference:sec:filing:file" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Reference data", "name": "reference" } }, - "x-polygon-draft": true + "x-massive-draft": true }, "/v1/related-companies/{ticker}": { "get": { @@ -14592,7 +14592,7 @@ "tags": [ "reference:related:companies" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Reference data", "name": "reference" } @@ -14604,7 +14604,7 @@ "operationId": "SnapshotSummary", "parameters": [ { - "description": "Comma separated list of tickers. This API currently supports Stocks/Equities, Crypto, Options, and Forex. See the tickers endpoint for more details on supported tickers. If no tickers are passed then no results will be returned.\n\nWarning: The maximum number of characters allowed in a URL are subject to your technology stack.", + "description": "Comma separated list of tickers. This API currently supports Stocks/Equities, Crypto, Options, and Forex. See the tickers endpoint for more details on supported tickers. If no tickers are passed then no results will be returned.\n\nWarning: The maximum number of characters allowed in a URL are subject to your technology stack.", "example": "NCLH,O:SPY250321C00380000,C:EURUSD,X:BTCUSD", "in": "query", "name": "ticker.any_of", @@ -14622,8 +14622,8 @@ "results": [ { "branding": { - "icon_url": "https://api.polygon.io/icon.png", - "logo_url": "https://api.polygon.io/logo.svg" + "icon_url": "https://api.massive.com/icon.png", + "logo_url": "https://api.massive.com/logo.svg" }, "last_updated": 1679597116344223500, "market_status": "closed", @@ -14695,8 +14695,8 @@ }, { "branding": { - "icon_url": "https://api.polygon.io/icon.png", - "logo_url": "https://api.polygon.io/logo.svg" + "icon_url": "https://api.massive.com/icon.png", + "logo_url": "https://api.massive.com/logo.svg" }, "last_updated": 1679597116344223500, "market_status": "open", @@ -14742,7 +14742,7 @@ } }, "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Branding" } }, @@ -14754,9 +14754,9 @@ "description": "The nanosecond timestamp of when this information was updated.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "INanoseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "market_status": { @@ -14795,9 +14795,9 @@ "description": "The contract's expiration date in YYYY-MM-DD format.", "format": "date", "type": "string", - "x-polygon-go-type": { - "name": "IDaysPolygonDateString", - "path": "github.com/polygon-io/ptime" + "x-massive-go-type": { + "name": "IDaysMassiveDateString", + "path": "github.com/massive-com/ptime" } }, "shares_per_contract": { @@ -14824,7 +14824,7 @@ "underlying_ticker" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Options" } }, @@ -14921,7 +14921,7 @@ "previous_close" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Session" } }, @@ -14944,7 +14944,7 @@ "ticker" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "SummaryResult" } }, @@ -14967,11 +14967,11 @@ } }, "summary": "Summaries", - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Stocks data", "name": "stocks" } @@ -15164,11 +15164,11 @@ "tags": [ "crypto:aggregates" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Crypto data", "name": "crypto" } @@ -15361,11 +15361,11 @@ "tags": [ "fx:aggregates" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Forex data", "name": "fx" } @@ -15570,11 +15570,11 @@ "tags": [ "stocks:aggregates" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Stocks data", "name": "stocks" } @@ -15758,11 +15758,11 @@ "tags": [ "crypto:aggregates" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Crypto data", "name": "crypto" } @@ -15854,7 +15854,7 @@ } }, { - "description": "Limits the number of base aggregates queried to create the aggregate results. Max 50000 and Default 5000.\nRead more about how limit is used to calculate aggregate results in our article on\nAggregate Data API Improvements.\n", + "description": "Limits the number of base aggregates queried to create the aggregate results. Max 50000 and Default 5000.\nRead more about how limit is used to calculate aggregate results in our article on\nAggregate Data API Improvements.\n", "example": 120, "in": "query", "name": "limit", @@ -16022,11 +16022,11 @@ "tags": [ "crypto:aggregates" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Crypto data", "name": "crypto" } @@ -16211,11 +16211,11 @@ "tags": [ "fx:aggregates" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Forex data", "name": "fx" } @@ -16307,7 +16307,7 @@ } }, { - "description": "Limits the number of base aggregates queried to create the aggregate results. Max 50000 and Default 5000.\nRead more about how limit is used to calculate aggregate results in our article on\nAggregate Data API Improvements.\n", + "description": "Limits the number of base aggregates queried to create the aggregate results. Max 50000 and Default 5000.\nRead more about how limit is used to calculate aggregate results in our article on\nAggregate Data API Improvements.\n", "example": 120, "in": "query", "name": "limit", @@ -16465,11 +16465,11 @@ "tags": [ "fx:aggregates" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Forex data", "name": "fx" } @@ -16616,12 +16616,12 @@ "tags": [ "indices:aggregates" ], - "x-polygon-entitlement-allowed-limited-tickers": true, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-allowed-limited-tickers": true, + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Indices data", "name": "indices" } @@ -16704,7 +16704,7 @@ } }, { - "description": "Limits the number of base aggregates queried to create the aggregate results. Max 50000 and Default 5000.\nRead more about how limit is used to calculate aggregate results in our article on\nAggregate Data API Improvements.\n", + "description": "Limits the number of base aggregates queried to create the aggregate results. Max 50000 and Default 5000.\nRead more about how limit is used to calculate aggregate results in our article on\nAggregate Data API Improvements.\n", "example": 120, "in": "query", "name": "limit", @@ -16845,12 +16845,12 @@ "tags": [ "indices:aggregates" ], - "x-polygon-entitlement-allowed-limited-tickers": true, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-allowed-limited-tickers": true, + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Indices data", "name": "indices" } @@ -17030,11 +17030,11 @@ "tags": [ "options:aggregates" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Options data", "name": "options" } @@ -17126,7 +17126,7 @@ } }, { - "description": "Limits the number of base aggregates queried to create the aggregate results. Max 50000 and Default 5000.\nRead more about how limit is used to calculate aggregate results in our article on\nAggregate Data API Improvements.\n", + "description": "Limits the number of base aggregates queried to create the aggregate results. Max 50000 and Default 5000.\nRead more about how limit is used to calculate aggregate results in our article on\nAggregate Data API Improvements.\n", "example": 120, "in": "query", "name": "limit", @@ -17295,11 +17295,11 @@ "tags": [ "options:aggregates" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Options data", "name": "options" } @@ -17478,11 +17478,11 @@ "tags": [ "stocks:aggregates" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Stocks data", "name": "stocks" } @@ -17574,7 +17574,7 @@ } }, { - "description": "Limits the number of base aggregates queried to create the aggregate results. Max 50000 and Default 5000.\nRead more about how limit is used to calculate aggregate results in our article on\nAggregate Data API Improvements.\n", + "description": "Limits the number of base aggregates queried to create the aggregate results. Max 50000 and Default 5000.\nRead more about how limit is used to calculate aggregate results in our article on\nAggregate Data API Improvements.\n", "example": 120, "in": "query", "name": "limit", @@ -17589,7 +17589,7 @@ "application/json": { "example": { "adjusted": true, - "next_url": "https://api.polygon.io/v2/aggs/ticker/AAPL/range/1/day/1578114000000/2020-01-10?cursor=bGltaXQ9MiZzb3J0PWFzYw", + "next_url": "https://api.massive.com/v2/aggs/ticker/AAPL/range/1/day/1578114000000/2020-01-10?cursor=bGltaXQ9MiZzb3J0PWFzYw", "queryCount": 2, "request_id": "6a7e466379af0a71039d60cc78e72282", "results": [ @@ -17756,11 +17756,11 @@ "tags": [ "stocks:aggregates" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Stocks data", "name": "stocks" } @@ -17780,7 +17780,7 @@ "schema": { "type": "string" }, - "x-polygon-go-id": "Ticker" + "x-massive-go-id": "Ticker" } ], "responses": { @@ -17826,18 +17826,18 @@ "type": "string" }, "X": { - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" }, "c": { "description": "A list of condition codes.", "items": { - "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://polygon.io/docs/stocks/get_v3_reference_conditions)\nfor a mapping to exchange conditions.", + "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://massive.com/docs/stocks/get_v3_reference_conditions)\nfor a mapping to exchange conditions.", "format": "int32", "type": "integer" }, "type": "array", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Int32Array" } }, @@ -17848,12 +17848,12 @@ "i": { "description": "A list of indicator codes.", "items": { - "description": "The indicator codes. For more information, see our glossary of [Conditions and\nIndicators](https://polygon.io/glossary/us/stocks/conditions-indicators).", + "description": "The indicator codes. For more information, see our glossary of [Conditions and\nIndicators](https://massive.com/glossary/us/stocks/conditions-indicators).", "format": "int32", "type": "integer" }, "type": "array", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Int32Array" } }, @@ -17876,7 +17876,7 @@ "type": "integer" }, "x": { - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" }, "y": { @@ -17895,7 +17895,7 @@ "q" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "LastQuoteResult" } }, @@ -17931,7 +17931,7 @@ "tags": [ "stocks:last:quote" ], - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "description": "Real Time Data", "name": "realtime" @@ -17941,11 +17941,11 @@ "name": "delayed" } ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "NBBO data", "name": "nbbo" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Stocks data", "name": "stocks" } @@ -18005,12 +18005,12 @@ "c": { "description": "A list of condition codes.", "items": { - "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://polygon.io/docs/stocks/get_v3_reference_conditions)\nfor a mapping to exchange conditions.", + "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://massive.com/docs/stocks/get_v3_reference_conditions)\nfor a mapping to exchange conditions.", "format": "int32", "type": "integer" }, "type": "array", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Int32Array" } }, @@ -18050,7 +18050,7 @@ "type": "integer" }, "x": { - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" }, "y": { @@ -18072,7 +18072,7 @@ "x" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "LastTradeResult" } }, @@ -18108,7 +18108,7 @@ "tags": [ "options:last:trade" ], - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "description": "Real Time Data", "name": "realtime" @@ -18118,16 +18118,16 @@ "name": "delayed" } ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Trade data", "name": "trades" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Options data", "name": "options" } }, - "x-polygon-ignore": true + "x-massive-ignore": true }, "/v2/last/trade/{stocksTicker}": { "get": { @@ -18143,7 +18143,7 @@ "schema": { "type": "string" }, - "x-polygon-go-id": "Ticker" + "x-massive-go-id": "Ticker" } ], "responses": { @@ -18185,12 +18185,12 @@ "c": { "description": "A list of condition codes.", "items": { - "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://polygon.io/docs/stocks/get_v3_reference_conditions)\nfor a mapping to exchange conditions.", + "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://massive.com/docs/stocks/get_v3_reference_conditions)\nfor a mapping to exchange conditions.", "format": "int32", "type": "integer" }, "type": "array", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Int32Array" } }, @@ -18230,7 +18230,7 @@ "type": "integer" }, "x": { - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" }, "y": { @@ -18252,7 +18252,7 @@ "x" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "LastTradeResult" } }, @@ -18288,7 +18288,7 @@ "tags": [ "stocks:last:trade" ], - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "description": "Real Time Data", "name": "realtime" @@ -18298,11 +18298,11 @@ "name": "delayed" } ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Trade data", "name": "trades" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Stocks data", "name": "stocks" } @@ -18321,7 +18321,7 @@ "description": "The exchange symbol that this item is traded under.", "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, @@ -18341,7 +18341,7 @@ } ] }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, @@ -18494,7 +18494,7 @@ "application/json": { "example": { "count": 1, - "next_url": "https://api.polygon.io:443/v2/reference/news?cursor=eyJsaW1pdCI6MSwic29ydCI6InB1Ymxpc2hlZF91dGMiLCJvcmRlciI6ImFzY2VuZGluZyIsInRpY2tlciI6e30sInB1Ymxpc2hlZF91dGMiOnsiZ3RlIjoiMjAyMS0wNC0yNiJ9LCJzZWFyY2hfYWZ0ZXIiOlsxNjE5NDA0Mzk3MDAwLG51bGxdfQ", + "next_url": "https://api.massive.com:443/v2/reference/news?cursor=eyJsaW1pdCI6MSwic29ydCI6InB1Ymxpc2hlZF91dGMiLCJvcmRlciI6ImFzY2VuZGluZyIsInRpY2tlciI6e30sInB1Ymxpc2hlZF91dGMiOnsiZ3RlIjoiMjAyMS0wNC0yNiJ9LCJzZWFyY2hfYWZ0ZXIiOlsxNjE5NDA0Mzk3MDAwLG51bGxdfQ", "request_id": "831afdb0b8078549fed053476984947a", "results": [ { @@ -18518,9 +18518,9 @@ ], "published_utc": "2024-06-24T18:33:53Z", "publisher": { - "favicon_url": "https://s3.polygon.io/public/assets/news/favicons/investing.ico", + "favicon_url": "https://s3.massive.com/public/assets/news/favicons/investing.ico", "homepage_url": "https://www.investing.com/", - "logo_url": "https://s3.polygon.io/public/assets/news/logos/investing.png", + "logo_url": "https://s3.massive.com/public/assets/news/logos/investing.png", "name": "Investing.com" }, "tickers": [ @@ -18664,13 +18664,13 @@ "tickers" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "NewsArticleMetadata", - "path": "github.com/polygon-io/go-lib-models/v2/globals" + "path": "github.com/massive-com/go-lib-models/v2/globals" } }, "type": "array", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "ListNewsArticlesResults" } }, @@ -18683,7 +18683,7 @@ } }, "text/csv": { - "example": "id,publisher_name,publisher_homepage_url,publisher_logo_url,publisher_favicon_url,title,author,published_utc,article_url,ticker,amp_url,image_url,description,keywords,sentiment,sentiment_reasoning\n8ec638777ca03b553ae516761c2a22ba2fdd2f37befae3ab6fdab74e9e5193eb,Investing.com,https://www.investing.com/,https://s3.polygon.io/public/assets/news/logos/investing.png,https://s3.polygon.io/public/assets/news/favicons/investing.ico,Markets are underestimating Fed cuts: UBS By Investing.com - Investing.com UK,Sam Boughedda,1719254033000000000,https://uk.investing.com/news/stock-market-news/markets-are-underestimating-fed-cuts-ubs-3559968,UBS,https://m.uk.investing.com/news/stock-market-news/markets-are-underestimating-fed-cuts-ubs-3559968?ampMode=1,https://i-invdn-com.investing.com/news/LYNXNPEC4I0AL_L.jpg,\"UBS analysts warn that markets are underestimating the extent of future interest rate cuts by the Federal Reserve, as the weakening economy is likely to justify more cuts than currently anticipated.\",\"Federal Reserve,interest rates,economic data\",positive,\"UBS analysts are providing a bullish outlook on the extent of future Federal Reserve rate cuts, suggesting that markets are underestimating the number of cuts that will occur.\"\n", + "example": "id,publisher_name,publisher_homepage_url,publisher_logo_url,publisher_favicon_url,title,author,published_utc,article_url,ticker,amp_url,image_url,description,keywords,sentiment,sentiment_reasoning\n8ec638777ca03b553ae516761c2a22ba2fdd2f37befae3ab6fdab74e9e5193eb,Investing.com,https://www.investing.com/,https://s3.massive.com/public/assets/news/logos/investing.png,https://s3.massive.com/public/assets/news/favicons/investing.ico,Markets are underestimating Fed cuts: UBS By Investing.com - Investing.com UK,Sam Boughedda,1719254033000000000,https://uk.investing.com/news/stock-market-news/markets-are-underestimating-fed-cuts-ubs-3559968,UBS,https://m.uk.investing.com/news/stock-market-news/markets-are-underestimating-fed-cuts-ubs-3559968?ampMode=1,https://i-invdn-com.investing.com/news/LYNXNPEC4I0AL_L.jpg,\"UBS analysts warn that markets are underestimating the extent of future interest rate cuts by the Federal Reserve, as the weakening economy is likely to justify more cuts than currently anticipated.\",\"Federal Reserve,interest rates,economic data\",positive,\"UBS analysts are providing a bullish outlook on the extent of future Federal Reserve rate cuts, suggesting that markets are underestimating the number of cuts that will occur.\"\n", "schema": { "type": "string" } @@ -18702,11 +18702,11 @@ "tags": [ "reference:news" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Reference data", "name": "reference" }, - "x-polygon-paginate": { + "x-massive-paginate": { "sort": { "default": "published_utc", "enum": [ @@ -18852,7 +18852,7 @@ "type": "object" }, "fmv": { - "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.", + "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.", "format": "double", "type": "number" }, @@ -18888,7 +18888,7 @@ "type": "integer" }, "x": { - "description": "The exchange that this crypto trade happened on. \nSee Exchanges for a mapping of exchanges to IDs.\n", + "description": "The exchange that this crypto trade happened on. \nSee Exchanges for a mapping of exchanges to IDs.\n", "type": "integer" } }, @@ -19058,7 +19058,7 @@ "tags": [ "crypto:snapshot" ], - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "description": "Real Time Data", "name": "realtime" @@ -19068,11 +19068,11 @@ "name": "delayed" } ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Crypto data", "name": "crypto" } @@ -19218,7 +19218,7 @@ "type": "object" }, "fmv": { - "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.", + "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.", "format": "double", "type": "number" }, @@ -19254,7 +19254,7 @@ "type": "integer" }, "x": { - "description": "The exchange that this crypto trade happened on. \nSee Exchanges for a mapping of exchanges to IDs.\n", + "description": "The exchange that this crypto trade happened on. \nSee Exchanges for a mapping of exchanges to IDs.\n", "type": "integer" } }, @@ -19422,7 +19422,7 @@ "tags": [ "crypto:snapshot" ], - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "description": "Real Time Data", "name": "realtime" @@ -19432,11 +19432,11 @@ "name": "delayed" } ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Crypto data", "name": "crypto" } @@ -19610,10 +19610,10 @@ "tags": [ "crypto:snapshot" ], - "x-polygon-deprecation": { + "x-massive-deprecation": { "date": 1719838800000 }, - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "description": "Real Time Data", "name": "realtime" @@ -19623,11 +19623,11 @@ "name": "delayed" } ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Crypto data", "name": "crypto" } @@ -19759,7 +19759,7 @@ "type": "object" }, "fmv": { - "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.", + "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.", "format": "double", "type": "number" }, @@ -19795,7 +19795,7 @@ "type": "integer" }, "x": { - "description": "The exchange that this crypto trade happened on. \nSee Exchanges for a mapping of exchanges to IDs.\n", + "description": "The exchange that this crypto trade happened on. \nSee Exchanges for a mapping of exchanges to IDs.\n", "type": "integer" } }, @@ -19965,7 +19965,7 @@ "tags": [ "crypto:snapshot" ], - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "description": "Real Time Data", "name": "realtime" @@ -19975,11 +19975,11 @@ "name": "delayed" } ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Crypto data", "name": "crypto" } @@ -20104,7 +20104,7 @@ "type": "object" }, "fmv": { - "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.", + "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.", "format": "double", "type": "number" }, @@ -20277,7 +20277,7 @@ "tags": [ "fx:snapshot" ], - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "description": "Real Time Data", "name": "realtime" @@ -20287,11 +20287,11 @@ "name": "delayed" } ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Forex data", "name": "fx" } @@ -20426,7 +20426,7 @@ "type": "object" }, "fmv": { - "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.", + "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.", "format": "double", "type": "number" }, @@ -20597,7 +20597,7 @@ "tags": [ "fx:snapshot" ], - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "description": "Real Time Data", "name": "realtime" @@ -20607,11 +20607,11 @@ "name": "delayed" } ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Forex data", "name": "fx" } @@ -20739,7 +20739,7 @@ "type": "object" }, "fmv": { - "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.", + "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.", "format": "double", "type": "number" }, @@ -20914,7 +20914,7 @@ "tags": [ "fx:snapshot" ], - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "description": "Real Time Data", "name": "realtime" @@ -20924,11 +20924,11 @@ "name": "delayed" } ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Forex data", "name": "fx" } @@ -21091,7 +21091,7 @@ "type": "object" }, "fmv": { - "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.", + "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.", "format": "double", "type": "number" }, @@ -21158,7 +21158,7 @@ "type": "integer" }, "x": { - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" } }, @@ -21329,7 +21329,7 @@ "tags": [ "stocks:snapshot" ], - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "description": "Real Time Data", "name": "realtime" @@ -21339,11 +21339,11 @@ "name": "delayed" } ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Stocks data", "name": "stocks" } @@ -21502,7 +21502,7 @@ "type": "object" }, "fmv": { - "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.", + "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.", "format": "double", "type": "number" }, @@ -21569,7 +21569,7 @@ "type": "integer" }, "x": { - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" } }, @@ -21738,7 +21738,7 @@ "tags": [ "stocks:snapshot" ], - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "description": "Real Time Data", "name": "realtime" @@ -21748,11 +21748,11 @@ "name": "delayed" } ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Stocks data", "name": "stocks" } @@ -21912,7 +21912,7 @@ "type": "object" }, "fmv": { - "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.", + "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.", "format": "double", "type": "number" }, @@ -21979,7 +21979,7 @@ "type": "integer" }, "x": { - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" } }, @@ -22150,7 +22150,7 @@ "tags": [ "stocks:snapshot" ], - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "description": "Real Time Data", "name": "realtime" @@ -22160,11 +22160,11 @@ "name": "delayed" } ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Stocks data", "name": "stocks" } @@ -22401,7 +22401,7 @@ "X": { "allOf": [ { - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" }, { @@ -22412,13 +22412,13 @@ "c": { "description": "A list of condition codes.\n", "items": { - "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://polygon.io/docs/get_v3_reference_conditions)\nfor a mapping to exchange conditions.\n", + "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://massive.com/docs/get_v3_reference_conditions)\nfor a mapping to exchange conditions.\n", "type": "integer" }, "type": "array" }, "i": { - "description": "The indicators. For more information, see our glossary of [Conditions and\nIndicators](https://polygon.io/glossary/us/stocks/conditions-indicators).\n", + "description": "The indicators. For more information, see our glossary of [Conditions and\nIndicators](https://massive.com/glossary/us/stocks/conditions-indicators).\n", "items": { "description": "The indicator code.\n", "type": "integer" @@ -22437,7 +22437,7 @@ "x": { "allOf": [ { - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" }, { @@ -22484,18 +22484,18 @@ "tags": [ "stocks:quotes" ], - "x-polygon-deprecation": { + "x-massive-deprecation": { "date": 1654056060000, "replaces": { "name": "Quotes (NBBO) v3", "path": "get_v3_quotes__stockticker" } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "NBBO data", "name": "nbbo" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Stocks data", "name": "stocks" } @@ -22721,7 +22721,7 @@ "c": { "description": "A list of condition codes.\n", "items": { - "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://polygon.io/docs/get_v3_reference_conditions)\nfor a mapping to exchange conditions.\n", + "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://massive.com/docs/get_v3_reference_conditions)\nfor a mapping to exchange conditions.\n", "type": "integer" }, "type": "array" @@ -22749,7 +22749,7 @@ "type": "number" }, "x": { - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" }, "z": { @@ -22790,18 +22790,18 @@ "tags": [ "stocks:trades" ], - "x-polygon-deprecation": { + "x-massive-deprecation": { "date": 1654056060000, "replaces": { "name": "Trades v3", "path": "get_v3_trades__stockticker" } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Trade data", "name": "trades" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Stocks data", "name": "stocks" } @@ -22829,7 +22829,7 @@ "schema": { "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, @@ -22910,7 +22910,7 @@ "content": { "application/json": { "example": { - "next_url": "https://api.polygon.io/v3/quotes/C:EUR-USD?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", + "next_url": "https://api.massive.com/v3/quotes/C:EUR-USD?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3", "results": [ { @@ -22961,9 +22961,9 @@ "description": "The nanosecond Exchange Unix Timestamp. This is the timestamp of when the quote was generated at the exchange.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "INanoseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } } }, @@ -22999,15 +22999,15 @@ "tags": [ "fx:quotes" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "NBBO data", "name": "nbbo" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Forex data", "name": "fx" }, - "x-polygon-paginate": { + "x-massive-paginate": { "limit": { "default": 1000, "example": 10, @@ -23023,7 +23023,7 @@ ] } }, - "x-polygon-replaces": { + "x-massive-replaces": { "date": 1654056060000, "replaces": { "name": "Historic Forex Ticks", @@ -23031,7 +23031,7 @@ } } }, - "x-polygon-ignore": true + "x-massive-ignore": true }, "/v3/quotes/{optionsTicker}": { "get": { @@ -23047,7 +23047,7 @@ "schema": { "type": "string" }, - "x-polygon-go-id": "Ticker" + "x-massive-go-id": "Ticker" }, { "description": "Query by timestamp. Either a date with the format YYYY-MM-DD or a nanosecond timestamp.", @@ -23056,7 +23056,7 @@ "schema": { "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, @@ -23137,7 +23137,7 @@ "content": { "application/json": { "example": { - "next_url": "https://api.polygon.io/v3/quotes/O:SPY241220P00720000?cursor=YXA9NzY5Nzg0NzAxJmFzPSZsaW1pdD0xMCZvcmRlcj1kZXNjJnNvcnQ9dGltZXN0YW1wJnRpbWVzdGFtcC5sdGU9MjAyMi0wMi0xN1QxNyUzQTI1JTNBMTMuMDA5MzU2MDMyWg", + "next_url": "https://api.massive.com/v3/quotes/O:SPY241220P00720000?cursor=YXA9NzY5Nzg0NzAxJmFzPSZsaW1pdD0xMCZvcmRlcj1kZXNjJnNvcnQ9dGltZXN0YW1wJnRpbWVzdGFtcC5sdGU9MjAyMi0wMi0xN1QxNyUzQTI1JTNBMTMuMDA5MzU2MDMyWg", "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3", "results": [ { @@ -23209,9 +23209,9 @@ "description": "The nanosecond accuracy SIP Unix Timestamp. This is the timestamp of when the SIP received this quote from the exchange which produced it.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "INanoseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } } }, @@ -23248,15 +23248,15 @@ "tags": [ "options:quotes" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "NBBO data", "name": "nbbo" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Options data", "name": "options" }, - "x-polygon-paginate": { + "x-massive-paginate": { "limit": { "default": 1000, "example": 10, @@ -23273,7 +23273,7 @@ } } }, - "x-polygon-ignore": true + "x-massive-ignore": true }, "/v3/quotes/{stockTicker}": { "get": { @@ -23289,7 +23289,7 @@ "schema": { "type": "string" }, - "x-polygon-go-id": "Ticker" + "x-massive-go-id": "Ticker" }, { "description": "Query by timestamp. Either a date with the format YYYY-MM-DD or a nanosecond timestamp.", @@ -23298,7 +23298,7 @@ "schema": { "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, @@ -23379,7 +23379,7 @@ "content": { "application/json": { "example": { - "next_url": "https://api.polygon.io/v3/quotes/AAPL?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", + "next_url": "https://api.massive.com/v3/quotes/AAPL?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3", "results": [ { @@ -23455,24 +23455,24 @@ "conditions": { "description": "A list of condition codes.", "items": { - "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://polygon.io/docs/stocks/get_v3_reference_conditions)\nfor a mapping to exchange conditions.", + "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://massive.com/docs/stocks/get_v3_reference_conditions)\nfor a mapping to exchange conditions.", "format": "int32", "type": "integer" }, "type": "array", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Int32Array" } }, "indicators": { "description": "A list of indicator codes.", "items": { - "description": "The indicator codes. For more information, see our glossary of [Conditions and\nIndicators](https://polygon.io/glossary/us/stocks/conditions-indicators).", + "description": "The indicator codes. For more information, see our glossary of [Conditions and\nIndicators](https://massive.com/glossary/us/stocks/conditions-indicators).", "format": "int32", "type": "integer" }, "type": "array", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Int32Array" } }, @@ -23480,9 +23480,9 @@ "description": "The nanosecond accuracy Participant/Exchange Unix Timestamp. This is the timestamp of when the quote was actually generated at the exchange.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "INanoseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "sequence_number": { @@ -23494,9 +23494,9 @@ "description": "The nanosecond accuracy SIP Unix Timestamp. This is the timestamp of when the SIP received this quote from the exchange which produced it.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "INanoseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "tape": { @@ -23508,9 +23508,9 @@ "description": "The nanosecond accuracy TRF (Trade Reporting Facility) Unix Timestamp. This is the timestamp of when the trade reporting facility received this quote.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "INanoseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } } }, @@ -23520,7 +23520,7 @@ "sip_timestamp" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "CommonQuote" } }, @@ -23551,15 +23551,15 @@ "tags": [ "stocks:quotes" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "NBBO data", "name": "nbbo" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Stocks data", "name": "stocks" }, - "x-polygon-paginate": { + "x-massive-paginate": { "limit": { "default": 1000, "example": 10, @@ -23575,7 +23575,7 @@ ] } }, - "x-polygon-replaces": { + "x-massive-replaces": { "date": 1654056060000, "replaces": { "name": "Quotes (NBBO)", @@ -23586,7 +23586,7 @@ }, "/v3/reference/conditions": { "get": { - "description": "List all conditions that Polygon.io uses.", + "description": "List all conditions that Massive.com uses.", "operationId": "ListConditions", "parameters": [ { @@ -23625,7 +23625,7 @@ "in": "query", "name": "id", "schema": { - "description": "An identifier used by Polygon.io for this condition. Unique per data type.", + "description": "An identifier used by Massive.com for this condition. Unique per data type.", "example": 1, "type": "integer" } @@ -23780,11 +23780,11 @@ "type": "string" }, "exchange": { - "description": "If present, mapping this condition from a Polygon.io code to a SIP symbol depends on this attribute.\nIn other words, data with this condition attached comes exclusively from the given exchange.", + "description": "If present, mapping this condition from a Massive.com code to a SIP symbol depends on this attribute.\nIn other words, data with this condition attached comes exclusively from the given exchange.", "type": "integer" }, "id": { - "description": "An identifier used by Polygon.io for this condition. Unique per data type.", + "description": "An identifier used by Massive.com for this condition. Unique per data type.", "example": 1, "type": "integer" }, @@ -23977,11 +23977,11 @@ "type": "string" }, "exchange": { - "description": "If present, mapping this condition from a Polygon.io code to a SIP symbol depends on this attribute.\nIn other words, data with this condition attached comes exclusively from the given exchange.", + "description": "If present, mapping this condition from a Massive.com code to a SIP symbol depends on this attribute.\nIn other words, data with this condition attached comes exclusively from the given exchange.", "type": "integer" }, "id": { - "description": "An identifier used by Polygon.io for this condition. Unique per data type.", + "description": "An identifier used by Massive.com for this condition. Unique per data type.", "example": 1, "type": "integer" }, @@ -24168,11 +24168,11 @@ "type": "string" }, "exchange": { - "description": "If present, mapping this condition from a Polygon.io code to a SIP symbol depends on this attribute.\nIn other words, data with this condition attached comes exclusively from the given exchange.", + "description": "If present, mapping this condition from a Massive.com code to a SIP symbol depends on this attribute.\nIn other words, data with this condition attached comes exclusively from the given exchange.", "type": "integer" }, "id": { - "description": "An identifier used by Polygon.io for this condition. Unique per data type.", + "description": "An identifier used by Massive.com for this condition. Unique per data type.", "example": 1, "type": "integer" }, @@ -24306,11 +24306,11 @@ "tags": [ "reference:conditions" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Reference data", "name": "reference" }, - "x-polygon-paginate": { + "x-massive-paginate": { "limit": { "default": 10, "max": 1000 @@ -24341,7 +24341,7 @@ "schema": { "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true, "type": "string" } @@ -24354,7 +24354,7 @@ "format": "date", "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true, "type": "string" } @@ -24367,7 +24367,7 @@ "format": "date", "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true, "type": "string" } @@ -24380,7 +24380,7 @@ "format": "date", "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true, "type": "string" } @@ -24393,7 +24393,7 @@ "format": "date", "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true, "type": "string" } @@ -24420,7 +24420,7 @@ "schema": { "type": "number" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true, "type": "number" } @@ -24438,7 +24438,7 @@ "ST" ], "type": "string", - "x-polygon-go-field-tags": { + "x-massive-go-field-tags": { "tags": [ { "key": "binding", @@ -24707,7 +24707,7 @@ "schema": { "description": "A list of dividends.", "example": { - "next_url": "https://api.polygon.io/v3/reference/dividends/AAPL?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", + "next_url": "https://api.massive.com/v3/reference/dividends/AAPL?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", "results": [ { "cash_amount": 0.22, @@ -24748,7 +24748,7 @@ "cash_amount": { "description": "The cash amount of the dividend per share owned.", "type": "number", - "x-polygon-go-field-tags": { + "x-massive-go-field-tags": { "tags": [ { "key": "binding", @@ -24760,7 +24760,7 @@ "currency": { "description": "The currency in which the dividend is paid.", "type": "string", - "x-polygon-go-field-tags": { + "x-massive-go-field-tags": { "tags": [ { "key": "binding", @@ -24782,7 +24782,7 @@ "ST" ], "type": "string", - "x-polygon-go-field-tags": { + "x-massive-go-field-tags": { "tags": [ { "key": "binding", @@ -24794,7 +24794,7 @@ "ex_dividend_date": { "description": "The date that the stock first trades without the dividend, determined by the exchange.", "type": "string", - "x-polygon-go-field-tags": { + "x-massive-go-field-tags": { "tags": [ { "key": "binding", @@ -24806,7 +24806,7 @@ "frequency": { "description": "The number of times per year the dividend is paid out. Possible values are 0 (one-time), 1 (annually), 2 (bi-annually), 4 (quarterly), and 12 (monthly).", "type": "integer", - "x-polygon-go-field-tags": { + "x-massive-go-field-tags": { "tags": [ { "key": "binding", @@ -24830,7 +24830,7 @@ "ticker": { "description": "The ticker symbol of the dividend.", "type": "string", - "x-polygon-go-field-tags": { + "x-massive-go-field-tags": { "tags": [ { "key": "binding", @@ -24849,7 +24849,7 @@ "id" ], "type": "object", - "x-polygon-go-struct-tags": { + "x-massive-go-struct-tags": { "tags": [ "db" ] @@ -24881,11 +24881,11 @@ "tags": [ "reference:dividends" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Reference data", "name": "reference" }, - "x-polygon-paginate": { + "x-massive-paginate": { "limit": { "default": 10, "max": 1000 @@ -24906,7 +24906,7 @@ }, "/v3/reference/exchanges": { "get": { - "description": "List all exchanges that Polygon.io knows about.", + "description": "List all exchanges that Massive.com knows about.", "operationId": "ListExchanges", "parameters": [ { @@ -24977,7 +24977,7 @@ "type": "string" }, "id": { - "description": "A unique identifier used by Polygon.io for this exchange.", + "description": "A unique identifier used by Massive.com for this exchange.", "example": 1, "type": "integer" }, @@ -25126,7 +25126,7 @@ "tags": [ "reference:exchanges" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Reference data", "name": "reference" } @@ -25138,7 +25138,7 @@ "operationId": "ListOptionsContracts", "parameters": [ { - "description": "This parameter has been deprecated. To search by specific options ticker, use the Options Contract endpoint [here](https://polygon.io/docs/options/get_v3_reference_options_contracts__options_ticker).", + "description": "This parameter has been deprecated. To search by specific options ticker, use the Options Contract endpoint [here](https://massive.com/docs/options/get_v3_reference_options_contracts__options_ticker).", "in": "query", "name": "ticker", "schema": { @@ -25152,7 +25152,7 @@ "schema": { "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true, "type": "string" } @@ -25176,7 +25176,7 @@ "schema": { "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, @@ -25195,7 +25195,7 @@ "schema": { "type": "number" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true, "type": "number" } @@ -25420,12 +25420,12 @@ } }, "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "AdditionalUnderlying" } }, "type": "array", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "AdditionalUnderlyings" } }, @@ -25453,9 +25453,9 @@ "expiration_date": { "description": "The contract's expiration date in YYYY-MM-DD format.", "type": "string", - "x-polygon-go-type": { - "name": "IDaysPolygonDateString", - "path": "github.com/polygon-io/ptime" + "x-massive-go-type": { + "name": "IDaysMassiveDateString", + "path": "github.com/massive-com/ptime" } }, "primary_exchange": { @@ -25480,7 +25480,7 @@ } }, "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "OptionsContract" } }, @@ -25507,11 +25507,11 @@ "tags": [ "reference:options:contracts:list" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Reference data", "name": "reference" }, - "x-polygon-paginate": { + "x-massive-paginate": { "limit": { "default": 10, "max": 1000 @@ -25534,7 +25534,7 @@ "operationId": "GetOptionsContract", "parameters": [ { - "description": "Query for a contract by options ticker. You can learn more about the structure of options tickers [here](https://polygon.io/blog/how-to-read-a-stock-options-ticker/).", + "description": "Query for a contract by options ticker. You can learn more about the structure of options tickers [here](https://massive.com/blog/how-to-read-a-stock-options-ticker/).", "example": "O:SPY251219C00650000", "in": "path", "name": "options_ticker", @@ -25608,12 +25608,12 @@ } }, "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "AdditionalUnderlying" } }, "type": "array", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "AdditionalUnderlyings" } }, @@ -25641,9 +25641,9 @@ "expiration_date": { "description": "The contract's expiration date in YYYY-MM-DD format.", "type": "string", - "x-polygon-go-type": { - "name": "IDaysPolygonDateString", - "path": "github.com/polygon-io/ptime" + "x-massive-go-type": { + "name": "IDaysMassiveDateString", + "path": "github.com/massive-com/ptime" } }, "primary_exchange": { @@ -25668,7 +25668,7 @@ } }, "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "OptionsContract" } }, @@ -25693,7 +25693,7 @@ "tags": [ "reference:options:contract" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Reference data", "name": "reference" } @@ -25711,7 +25711,7 @@ "schema": { "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true, "type": "string" } @@ -25724,7 +25724,7 @@ "format": "date", "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true, "type": "string" } @@ -25851,7 +25851,7 @@ "content": { "application/json": { "example": { - "next_url": "https://api.polygon.io/v3/splits/AAPL?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", + "next_url": "https://api.massive.com/v3/splits/AAPL?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", "results": [ { "execution_date": "2020-08-31", @@ -25938,11 +25938,11 @@ "tags": [ "reference:stocks" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Reference data", "name": "reference" }, - "x-polygon-paginate": { + "x-massive-paginate": { "limit": { "default": 10, "max": 1000 @@ -25959,7 +25959,7 @@ }, "/v3/reference/tickers": { "get": { - "description": "Query all ticker symbols which are supported by Polygon.io. This API currently includes Stocks/Equities, Indices, Forex, and Crypto.", + "description": "Query all ticker symbols which are supported by Massive.com. This API currently includes Stocks/Equities, Indices, Forex, and Crypto.", "operationId": "ListTickers", "parameters": [ { @@ -25969,12 +25969,12 @@ "schema": { "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, { - "description": "Specify the type of the tickers. Find the types that we support via our [Ticker Types API](https://polygon.io/docs/stocks/get_v3_reference_tickers_types).\nDefaults to empty string which queries all types.", + "description": "Specify the type of the tickers. Find the types that we support via our [Ticker Types API](https://massive.com/docs/stocks/get_v3_reference_tickers_types).\nDefaults to empty string which queries all types.", "in": "query", "name": "type", "schema": { @@ -26162,7 +26162,7 @@ "application/json": { "example": { "count": 1, - "next_url": "https://api.polygon.io/v3/reference/tickers?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", + "next_url": "https://api.massive.com/v3/reference/tickers?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", "request_id": "e70013d92930de90e089dc8fa098888e", "results": [ { @@ -26262,7 +26262,7 @@ "type": "string" }, "type": { - "description": "The type of the asset. Find the types that we support via our [Ticker Types API](https://polygon.io/docs/stocks/get_v3_reference_tickers_types).", + "description": "The type of the asset. Find the types that we support via our [Ticker Types API](https://massive.com/docs/stocks/get_v3_reference_tickers_types).", "type": "string" } }, @@ -26273,9 +26273,9 @@ "locale" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "ReferenceTicker", - "path": "github.com/polygon-io/go-lib-models/v2/globals" + "path": "github.com/massive-com/go-lib-models/v2/globals" } }, "type": "array" @@ -26305,11 +26305,11 @@ "tags": [ "reference:tickers:list" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Reference data", "name": "reference" }, - "x-polygon-paginate": { + "x-massive-paginate": { "limit": { "default": 100, "max": 1000 @@ -26339,7 +26339,7 @@ }, "/v3/reference/tickers/types": { "get": { - "description": "List all ticker types that Polygon.io has.", + "description": "List all ticker types that Massive.com has.", "operationId": "ListTickerTypes", "parameters": [ { @@ -26407,7 +26407,7 @@ "type": "string" }, "code": { - "description": "A code used by Polygon.io to refer to this ticker type.", + "description": "A code used by Massive.com to refer to this ticker type.", "example": "CS", "type": "string" }, @@ -26525,7 +26525,7 @@ "tags": [ "reference:tickers:types" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Reference data", "name": "reference" } @@ -26533,7 +26533,7 @@ }, "/v3/reference/tickers/{ticker}": { "get": { - "description": "Get a single ticker supported by Polygon.io. This response will have detailed information about the ticker and the company behind it.", + "description": "Get a single ticker supported by Massive.com. This response will have detailed information about the ticker and the company behind it.", "operationId": "GetTicker", "parameters": [ { @@ -26571,8 +26571,8 @@ "state": "CA" }, "branding": { - "icon_url": "https://api.polygon.io/v1/reference/company-branding/d3d3LmFwcGxlLmNvbQ/images/2022-01-10_icon.png", - "logo_url": "https://api.polygon.io/v1/reference/company-branding/d3d3LmFwcGxlLmNvbQ/images/2022-01-10_logo.svg" + "icon_url": "https://api.massive.com/v1/reference/company-branding/d3d3LmFwcGxlLmNvbQ/images/2022-01-10_icon.png", + "logo_url": "https://api.massive.com/v1/reference/company-branding/d3d3LmFwcGxlLmNvbQ/images/2022-01-10_logo.svg" }, "cik": "0000320193", "composite_figi": "BBG000B9XRY4", @@ -26758,7 +26758,7 @@ "type": "number" }, "type": { - "description": "The type of the asset. Find the types that we support via our [Ticker Types API](https://polygon.io/docs/stocks/get_v3_reference_tickers_types).", + "description": "The type of the asset. Find the types that we support via our [Ticker Types API](https://massive.com/docs/stocks/get_v3_reference_tickers_types).", "type": "string" }, "weighted_shares_outstanding": { @@ -26776,9 +26776,9 @@ "currency_name" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "ReferenceTicker", - "path": "github.com/polygon-io/go-lib-models/v2/globals" + "path": "github.com/massive-com/go-lib-models/v2/globals" } }, "status": { @@ -26790,7 +26790,7 @@ } }, "text/csv": { - "example": "ticker,name,market,locale,primary_exchange,type,active,currency_name,cik,composite_figi,share_class_figi,share_class_shares_outstanding,weighted_shares_outstanding,round_lot,market_cap,phone_number,address1,address2,city,state,postal_code,sic_code,sic_description,ticker_root,total_employees,list_date,homepage_url,description,branding/logo_url,branding/icon_url\nAAPL,Apple Inc.,stocks,us,XNAS,CS,true,usd,0000320193,BBG000B9XRY4,BBG001S5N8V8,16406400000,16334371000,100,2771126040150,(408) 996-1010,One Apple Park Way,,Cupertino,CA,95014,3571,ELECTRONIC COMPUTERS,AAPL,154000,1980-12-12,https://www.apple.com,\"Apple designs a wide variety of consumer electronic devices, including smartphones (iPhone), tablets (iPad), PCs (Mac), smartwatches (Apple Watch), AirPods, and TV boxes (Apple TV), among others. The iPhone makes up the majority of Apple's total revenue. In addition, Apple offers its customers a variety of services such as Apple Music, iCloud, Apple Care, Apple TV+, Apple Arcade, Apple Card, and Apple Pay, among others. Apple's products run internally developed software and semiconductors, and the firm is well known for its integration of hardware, software and services. Apple's products are distributed online as well as through company-owned stores and third-party retailers. The company generates roughly 40% of its revenue from the Americas, with the remainder earned internationally.\",https://api.polygon.io/v1/reference/company-branding/d3d3LmFwcGxlLmNvbQ/images/2022-01-10_logo.svg,https://api.polygon.io/v1/reference/company-branding/d3d3LmFwcGxlLmNvbQ/images/2022-01-10_icon.png\n", + "example": "ticker,name,market,locale,primary_exchange,type,active,currency_name,cik,composite_figi,share_class_figi,share_class_shares_outstanding,weighted_shares_outstanding,round_lot,market_cap,phone_number,address1,address2,city,state,postal_code,sic_code,sic_description,ticker_root,total_employees,list_date,homepage_url,description,branding/logo_url,branding/icon_url\nAAPL,Apple Inc.,stocks,us,XNAS,CS,true,usd,0000320193,BBG000B9XRY4,BBG001S5N8V8,16406400000,16334371000,100,2771126040150,(408) 996-1010,One Apple Park Way,,Cupertino,CA,95014,3571,ELECTRONIC COMPUTERS,AAPL,154000,1980-12-12,https://www.apple.com,\"Apple designs a wide variety of consumer electronic devices, including smartphones (iPhone), tablets (iPad), PCs (Mac), smartwatches (Apple Watch), AirPods, and TV boxes (Apple TV), among others. The iPhone makes up the majority of Apple's total revenue. In addition, Apple offers its customers a variety of services such as Apple Music, iCloud, Apple Care, Apple TV+, Apple Arcade, Apple Card, and Apple Pay, among others. Apple's products run internally developed software and semiconductors, and the firm is well known for its integration of hardware, software and services. Apple's products are distributed online as well as through company-owned stores and third-party retailers. The company generates roughly 40% of its revenue from the Americas, with the remainder earned internationally.\",https://api.massive.com/v1/reference/company-branding/d3d3LmFwcGxlLmNvbQ/images/2022-01-10_logo.svg,https://api.massive.com/v1/reference/company-branding/d3d3LmFwcGxlLmNvbQ/images/2022-01-10_icon.png\n", "schema": { "type": "string" } @@ -26806,7 +26806,7 @@ "tags": [ "reference:tickers:get" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Reference data", "name": "reference" } @@ -26823,7 +26823,7 @@ "schema": { "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "anyOf": { "description": "Comma separated list of tickers, up to a maximum of 250. If no tickers are passed then all results will be returned in a paginated manner.\n\nWarning: The maximum number of characters allowed in a URL are subject to your technology stack.\n", "enabled": true, @@ -27093,9 +27093,9 @@ "description": "The contract's expiration date in YYYY-MM-DD format.", "format": "date", "type": "string", - "x-polygon-go-type": { - "name": "IDaysPolygonDateString", - "path": "github.com/polygon-io/ptime" + "x-massive-go-type": { + "name": "IDaysMassiveDateString", + "path": "github.com/massive-com/ptime" } }, "shares_per_contract": { @@ -27122,11 +27122,11 @@ "type": "string" }, "fmv": { - "description": "Fair market value is only available on Business plans. It's it our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security.\nFor more information, contact us.", + "description": "Fair market value is only available on Business plans. It's it our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security.\nFor more information, contact us.", "type": "number" }, "greeks": { - "description": "The greeks for this contract.\nThere are certain circumstances where greeks will not be returned, such as options contracts that are deep in the money.\nSee this article for more information.", + "description": "The greeks for this contract.\nThere are certain circumstances where greeks will not be returned, such as options contracts that are deep in the money.\nSee this article for more information.", "properties": { "delta": { "description": "The change in the option's price per $0.01 increment in the price of the underlying asset.", @@ -27156,7 +27156,7 @@ "vega" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Greeks" } }, @@ -27174,7 +27174,7 @@ "type": "number" }, "ask_exchange": { - "description": "The ask side exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The ask side exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" }, "ask_size": { @@ -27188,7 +27188,7 @@ "type": "number" }, "bid_exchange": { - "description": "The bid side exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The bid side exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" }, "bid_size": { @@ -27200,9 +27200,9 @@ "description": "The nanosecond timestamp of when this information was updated.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "INanoseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "midpoint": { @@ -27226,7 +27226,7 @@ "timeframe" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "SnapshotLastQuote" } }, @@ -27236,14 +27236,14 @@ "conditions": { "description": "A list of condition codes.", "items": { - "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://polygon.io/docs/stocks/get_v3_reference_conditions)\nfor a mapping to exchange conditions.", + "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://massive.com/docs/stocks/get_v3_reference_conditions)\nfor a mapping to exchange conditions.", "format": "int32", "type": "integer" }, "type": "array" }, "exchange": { - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" }, "id": { @@ -27254,18 +27254,18 @@ "description": "The nanosecond timestamp of when this information was updated.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "INanoseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "participant_timestamp": { "description": "The nanosecond Exchange Unix Timestamp. This is the timestamp of when the trade was generated at the exchange.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "INanoseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "price": { @@ -27297,7 +27297,7 @@ "size" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "SnapshotLastTrade" } }, @@ -27406,7 +27406,7 @@ "previous_close" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Session" } }, @@ -27437,9 +27437,9 @@ "description": "The nanosecond timestamp of when this information was updated.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "INanoseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "price": { @@ -27470,7 +27470,7 @@ "change_to_break_even" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "UnderlyingAsset" } }, @@ -27483,7 +27483,7 @@ "ticker" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "SnapshotResponseModel" } }, @@ -27506,7 +27506,7 @@ } }, "summary": "Universal Snapshot", - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "description": "Real Time Data", "name": "realtime" @@ -27516,15 +27516,15 @@ "name": "delayed" } ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Snapshot data", "name": "snapshots" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "All asset classes", "name": "universal" }, - "x-polygon-paginate": { + "x-massive-paginate": { "limit": { "default": 10, "max": 250, @@ -27560,7 +27560,7 @@ "schema": { "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true, "type": "string" } @@ -27694,9 +27694,9 @@ "description": "The nanosecond timestamp of when this information was updated.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "INanoseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "market_status": { @@ -27750,7 +27750,7 @@ } }, "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "IndicesSession" } }, @@ -27782,7 +27782,7 @@ "ticker" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "IndicesResult" } }, @@ -27808,7 +27808,7 @@ "tags": [ "indices:snapshot" ], - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "description": "Real Time Data", "name": "realtime" @@ -27818,15 +27818,15 @@ "name": "delayed" } ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Indices data", "name": "indices" }, - "x-polygon-paginate": { + "x-massive-paginate": { "limit": { "default": 10, "max": 250 @@ -27862,7 +27862,7 @@ "schema": { "type": "number" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true, "type": "number" } @@ -27874,7 +27874,7 @@ "schema": { "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, @@ -28107,9 +28107,9 @@ "description": "The nanosecond timestamp of when this information was updated.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "INanoseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "low": { @@ -28136,7 +28136,7 @@ "description": "The trading volume weighted average price for the contract of the day.", "format": "double", "type": "number", - "x-polygon-go-id": "VWAP" + "x-massive-go-id": "VWAP" } }, "required": [ @@ -28151,7 +28151,7 @@ "change" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Day" } }, @@ -28180,9 +28180,9 @@ "description": "The contract's expiration date in YYYY-MM-DD format.", "format": "date", "type": "string", - "x-polygon-go-type": { - "name": "IDaysPolygonDateString", - "path": "github.com/polygon-io/ptime" + "x-massive-go-type": { + "name": "IDaysMassiveDateString", + "path": "github.com/massive-com/ptime" } }, "shares_per_contract": { @@ -28208,16 +28208,16 @@ "strike_price" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Details" } }, "fmv": { - "description": "Fair market value is only available on Business plans. It's it our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security.\nFor more information, contact us.", + "description": "Fair market value is only available on Business plans. It's it our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security.\nFor more information, contact us.", "type": "number" }, "greeks": { - "description": "The greeks for this contract.\nThere are certain circumstances where greeks will not be returned, such as options contracts that are deep in the money.\nSee this article for more information.", + "description": "The greeks for this contract.\nThere are certain circumstances where greeks will not be returned, such as options contracts that are deep in the money.\nSee this article for more information.", "properties": { "delta": { "description": "The change in the option's price per $0.01 increment in the price of the underlying asset.", @@ -28247,7 +28247,7 @@ "vega" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Greeks" } }, @@ -28265,7 +28265,7 @@ "type": "number" }, "ask_exchange": { - "description": "The ask side exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The ask side exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "format": "int32", "type": "number" }, @@ -28280,7 +28280,7 @@ "type": "number" }, "bid_exchange": { - "description": "The bid side exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The bid side exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "format": "int32", "type": "number" }, @@ -28293,9 +28293,9 @@ "description": "The nanosecond timestamp of when this information was updated.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "INanoseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "midpoint": { @@ -28320,7 +28320,7 @@ "midpoint" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "LastQuote" } }, @@ -28330,14 +28330,14 @@ "conditions": { "description": "A list of condition codes.", "items": { - "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://polygon.io/docs/options/get_v3_reference_conditions)\nfor a mapping to exchange conditions.", + "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://massive.com/docs/options/get_v3_reference_conditions)\nfor a mapping to exchange conditions.", "format": "int32", "type": "integer" }, "type": "array" }, "exchange": { - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" }, "price": { @@ -28371,7 +28371,7 @@ "size" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "OptionsLastTrade" } }, @@ -28392,9 +28392,9 @@ "description": "The nanosecond timestamp of when this information was updated.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "INanoseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "price": { @@ -28425,7 +28425,7 @@ "change_to_break_even" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "UnderlyingAsset" } } @@ -28439,7 +28439,7 @@ "open_interest" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "OptionSnapshotResult" } }, @@ -28465,7 +28465,7 @@ "tags": [ "options:snapshot" ], - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "description": "Real Time Data", "name": "realtime" @@ -28475,15 +28475,15 @@ "name": "delayed" } ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Options data", "name": "options" }, - "x-polygon-paginate": { + "x-massive-paginate": { "limit": { "default": 10, "max": 250 @@ -28636,9 +28636,9 @@ "description": "The nanosecond timestamp of when this information was updated.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "INanoseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "low": { @@ -28665,7 +28665,7 @@ "description": "The trading volume weighted average price for the contract of the day.", "format": "double", "type": "number", - "x-polygon-go-id": "VWAP" + "x-massive-go-id": "VWAP" } }, "required": [ @@ -28680,7 +28680,7 @@ "change" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Day" } }, @@ -28709,9 +28709,9 @@ "description": "The contract's expiration date in YYYY-MM-DD format.", "format": "date", "type": "string", - "x-polygon-go-type": { - "name": "IDaysPolygonDateString", - "path": "github.com/polygon-io/ptime" + "x-massive-go-type": { + "name": "IDaysMassiveDateString", + "path": "github.com/massive-com/ptime" } }, "shares_per_contract": { @@ -28737,16 +28737,16 @@ "strike_price" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Details" } }, "fmv": { - "description": "Fair market value is only available on Business plans. It's it our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security.\nFor more information, contact us.", + "description": "Fair market value is only available on Business plans. It's it our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security.\nFor more information, contact us.", "type": "number" }, "greeks": { - "description": "The greeks for this contract.\nThere are certain circumstances where greeks will not be returned, such as options contracts that are deep in the money.\nSee this article for more information.", + "description": "The greeks for this contract.\nThere are certain circumstances where greeks will not be returned, such as options contracts that are deep in the money.\nSee this article for more information.", "properties": { "delta": { "description": "The change in the option's price per $0.01 increment in the price of the underlying asset.", @@ -28776,7 +28776,7 @@ "vega" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Greeks" } }, @@ -28794,7 +28794,7 @@ "type": "number" }, "ask_exchange": { - "description": "The ask side exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The ask side exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "format": "int32", "type": "number" }, @@ -28809,7 +28809,7 @@ "type": "number" }, "bid_exchange": { - "description": "The bid side exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The bid side exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "format": "int32", "type": "number" }, @@ -28822,9 +28822,9 @@ "description": "The nanosecond timestamp of when this information was updated.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "INanoseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "midpoint": { @@ -28849,7 +28849,7 @@ "midpoint" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "LastQuote" } }, @@ -28859,14 +28859,14 @@ "conditions": { "description": "A list of condition codes.", "items": { - "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://polygon.io/docs/options/get_v3_reference_conditions)\nfor a mapping to exchange conditions.", + "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://massive.com/docs/options/get_v3_reference_conditions)\nfor a mapping to exchange conditions.", "format": "int32", "type": "integer" }, "type": "array" }, "exchange": { - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" }, "price": { @@ -28900,7 +28900,7 @@ "size" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "OptionsLastTrade" } }, @@ -28921,9 +28921,9 @@ "description": "The nanosecond timestamp of when this information was updated.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "INanoseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "price": { @@ -28954,7 +28954,7 @@ "change_to_break_even" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "UnderlyingAsset" } } @@ -28968,7 +28968,7 @@ "open_interest" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "OptionSnapshotResult" } }, @@ -28998,7 +28998,7 @@ "tags": [ "options:snapshot" ], - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "description": "Real Time Data", "name": "realtime" @@ -29008,11 +29008,11 @@ "name": "delayed" } ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Aggregate data", "name": "aggregates" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Options data", "name": "options" } @@ -29040,7 +29040,7 @@ "schema": { "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, @@ -29121,7 +29121,7 @@ "content": { "application/json": { "example": { - "next_url": "https://api.polygon.io/v3/trades/X:BTC-USD?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", + "next_url": "https://api.massive.com/v3/trades/X:BTC-USD?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3", "results": [ { @@ -29159,17 +29159,17 @@ "conditions": { "description": "A list of condition codes.", "items": { - "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://polygon.io/docs/stocks/get_v3_reference_conditions)\nfor a mapping to exchange conditions.", + "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://massive.com/docs/stocks/get_v3_reference_conditions)\nfor a mapping to exchange conditions.", "format": "int32", "type": "integer" }, "type": "array", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Int32Array" } }, "exchange": { - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" }, "id": { @@ -29180,9 +29180,9 @@ "description": "The nanosecond Exchange Unix Timestamp. This is the timestamp of when the trade was generated at the exchange.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "INanoseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "price": { @@ -29231,15 +29231,15 @@ "tags": [ "crypto:trades" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Trade data", "name": "trades" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Crypto data", "name": "crypto" }, - "x-polygon-paginate": { + "x-massive-paginate": { "limit": { "default": 1000, "example": 10, @@ -29255,7 +29255,7 @@ ] } }, - "x-polygon-replaces": { + "x-massive-replaces": { "date": 1654056060000, "replaces": { "name": "Historic Crypto Trades", @@ -29263,7 +29263,7 @@ } } }, - "x-polygon-ignore": true + "x-massive-ignore": true }, "/v3/trades/{optionsTicker}": { "get": { @@ -29279,7 +29279,7 @@ "schema": { "type": "string" }, - "x-polygon-go-id": "Ticker" + "x-massive-go-id": "Ticker" }, { "description": "Query by trade timestamp. Either a date with the format YYYY-MM-DD or a nanosecond timestamp.", @@ -29288,7 +29288,7 @@ "schema": { "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, @@ -29369,7 +29369,7 @@ "content": { "application/json": { "example": { - "next_url": "https://api.polygon.io/v3/trades/O:AZO140621P00530000?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", + "next_url": "https://api.massive.com/v3/trades/O:AZO140621P00530000?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3", "results": [ { @@ -29404,12 +29404,12 @@ "conditions": { "description": "A list of condition codes.", "items": { - "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://polygon.io/docs/stocks/get_v3_reference_conditions)\nfor a mapping to exchange conditions.", + "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://massive.com/docs/stocks/get_v3_reference_conditions)\nfor a mapping to exchange conditions.", "format": "int32", "type": "integer" }, "type": "array", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Int32Array" } }, @@ -29418,16 +29418,16 @@ "type": "integer" }, "exchange": { - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" }, "participant_timestamp": { "description": "The nanosecond accuracy Participant/Exchange Unix Timestamp. This is the timestamp of when the trade was actually generated at the exchange.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "INanoseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "price": { @@ -29439,9 +29439,9 @@ "description": "The nanosecond accuracy SIP Unix Timestamp. This is the timestamp of when the SIP received this trade from the exchange which produced it.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "INanoseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "size": { @@ -29485,15 +29485,15 @@ "tags": [ "options:trades" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Trade data", "name": "trades" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Options data", "name": "options" }, - "x-polygon-paginate": { + "x-massive-paginate": { "limit": { "default": 1000, "example": 10, @@ -29510,7 +29510,7 @@ } } }, - "x-polygon-ignore": true + "x-massive-ignore": true }, "/v3/trades/{stockTicker}": { "get": { @@ -29526,7 +29526,7 @@ "schema": { "type": "string" }, - "x-polygon-go-id": "Ticker" + "x-massive-go-id": "Ticker" }, { "description": "Query by trade timestamp. Either a date with the format YYYY-MM-DD or a nanosecond timestamp.", @@ -29535,7 +29535,7 @@ "schema": { "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, @@ -29616,7 +29616,7 @@ "content": { "application/json": { "example": { - "next_url": "https://api.polygon.io/v3/trades/AAPL?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", + "next_url": "https://api.massive.com/v3/trades/AAPL?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3", "results": [ { @@ -29662,12 +29662,12 @@ "conditions": { "description": "A list of condition codes.", "items": { - "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://polygon.io/docs/stocks/get_v3_reference_conditions)\nfor a mapping to exchange conditions.", + "description": "The condition code. These are the conditions of this message. See\n[Condition Mappings](https://massive.com/docs/stocks/get_v3_reference_conditions)\nfor a mapping to exchange conditions.", "format": "int32", "type": "integer" }, "type": "array", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "Int32Array" } }, @@ -29676,7 +29676,7 @@ "type": "integer" }, "exchange": { - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs.", + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs.", "type": "integer" }, "id": { @@ -29687,9 +29687,9 @@ "description": "The nanosecond accuracy Participant/Exchange Unix Timestamp. This is the timestamp of when the trade was actually generated at the exchange.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "INanoseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "price": { @@ -29706,9 +29706,9 @@ "description": "The nanosecond accuracy SIP Unix Timestamp. This is the timestamp of when the SIP received this trade from the exchange which produced it.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "INanoseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } }, "size": { @@ -29729,9 +29729,9 @@ "description": "The nanosecond accuracy TRF (Trade Reporting Facility) Unix Timestamp. This is the timestamp of when the trade reporting facility received this trade.", "format": "int64", "type": "integer", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "INanoseconds", - "path": "github.com/polygon-io/ptime" + "path": "github.com/massive-com/ptime" } } }, @@ -29745,7 +29745,7 @@ "size" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "CommonTrade" } }, @@ -29776,15 +29776,15 @@ "tags": [ "stocks:trades" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Trade data", "name": "trades" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "description": "Stocks data", "name": "stocks" }, - "x-polygon-paginate": { + "x-massive-paginate": { "limit": { "default": 1000, "example": 10, @@ -29800,7 +29800,7 @@ ] } }, - "x-polygon-replaces": { + "x-massive-replaces": { "date": 1654056060000, "replaces": { "name": "Trades", @@ -29837,7 +29837,7 @@ "schema": { "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "search": true } }, @@ -29857,7 +29857,7 @@ "format": "date", "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, @@ -29869,7 +29869,7 @@ "format": "date", "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true } }, @@ -30021,7 +30021,7 @@ "application/json": { "example": { "count": 1, - "next_url": "https://api.polygon.io/vX/reference/financials?", + "next_url": "https://api.massive.com/vX/reference/financials?", "request_id": "55eb92ed43b25568ab0cce159830ea34", "results": [ { @@ -30299,8 +30299,8 @@ }, "fiscal_period": "Q1", "fiscal_year": "2022", - "source_filing_file_url": "https://api.polygon.io/v1/reference/sec/filings/0001650729-22-000010/files/site-20220403_htm.xml", - "source_filing_url": "https://api.polygon.io/v1/reference/sec/filings/0001650729-22-000010", + "source_filing_file_url": "https://api.massive.com/v1/reference/sec/filings/0001650729-22-000010/files/site-20220403_htm.xml", + "source_filing_url": "https://api.massive.com/v1/reference/sec/filings/0001650729-22-000010", "start_date": "2022-01-03" } ], @@ -30344,7 +30344,7 @@ "financials": { "properties": { "balance_sheet": { - "description": "Balance sheet.\nThe keys in this object can be any of the fields listed in the Balance Sheet section of the financials API glossary of terms.", + "description": "Balance sheet.\nThe keys in this object can be any of the fields listed in the Balance Sheet section of the financials API glossary of terms.", "properties": { "*": { "description": "An individual financial data point.", @@ -30396,15 +30396,15 @@ "type": "object" }, "cash_flow_statement": { - "description": "Cash flow statement.\nThe keys in this object can be any of the fields listed in the Cash Flow Statement section of the financials API glossary of terms.\nSee the attributes of the objects within `balance_sheet` for more details.", + "description": "Cash flow statement.\nThe keys in this object can be any of the fields listed in the Cash Flow Statement section of the financials API glossary of terms.\nSee the attributes of the objects within `balance_sheet` for more details.", "type": "object" }, "comprehensive_income": { - "description": "Comprehensive income.\nThe keys in this object can be any of the fields listed in the Comprehensive Income section of the financials API glossary of terms.\nSee the attributes of the objects within `balance_sheet` for more details.", + "description": "Comprehensive income.\nThe keys in this object can be any of the fields listed in the Comprehensive Income section of the financials API glossary of terms.\nSee the attributes of the objects within `balance_sheet` for more details.", "type": "object" }, "income_statement": { - "description": "Income statement.\nThe keys in this object can be any of the fields listed in the Income Statement section of the financials API glossary of terms.\nSee the attributes of the objects within `balance_sheet` for more details.", + "description": "Income statement.\nThe keys in this object can be any of the fields listed in the Income Statement section of the financials API glossary of terms.\nSee the attributes of the objects within `balance_sheet` for more details.", "type": "object" } }, @@ -30449,7 +30449,7 @@ "fiscal_period" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "FinancialReport" } }, @@ -30477,12 +30477,12 @@ "tags": [ "reference:stocks" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Reference data", "name": "reference" }, - "x-polygon-experimental": {}, - "x-polygon-paginate": { + "x-massive-experimental": {}, + "x-massive-paginate": { "limit": { "default": 10, "max": 100 @@ -30534,7 +30534,7 @@ "format": "date", "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "range": true, "type": "string" } @@ -30655,7 +30655,7 @@ "content": { "application/json": { "example": { - "next_url": "https://api.polygon.io/vX/reference/ipos?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", + "next_url": "https://api.massive.com/vX/reference/ipos?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", "request_id": "6a7e466379af0a71039d60cc78e72282", "results": [ { @@ -30818,7 +30818,7 @@ "ipo_status" ], "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "IPOsResult" } }, @@ -30840,11 +30840,11 @@ "tags": [ "reference:stocks:ipos" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Reference data", "name": "reference" }, - "x-polygon-paginate": { + "x-massive-paginate": { "limit": { "default": 10, "max": 1000 @@ -30890,7 +30890,7 @@ "schema": { "type": "string" }, - "x-polygon-filter-field": { + "x-massive-filter-field": { "anyOf": { "description": "Comma separated list of tickers, up to a maximum of 250.\n\nWarning: The maximum number of characters allowed in a URL are subject to your own technology stack.\n", "enabled": true, @@ -31033,7 +31033,7 @@ } }, "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "TaxonomyClassificationResult" } }, @@ -31059,13 +31059,13 @@ "Internal", "Public" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Reference data", "name": "reference" }, - "x-polygon-experimental": {} + "x-massive-experimental": {} }, - "x-polygon-draft": true + "x-massive-draft": true }, "/vX/reference/tickers/{id}/events": { "get": { @@ -31073,7 +31073,7 @@ "operationId": "GetEvents", "parameters": [ { - "description": "Identifier of an asset. This can currently be a Ticker, CUSIP, or Composite FIGI.\nWhen given a ticker, we return events for the entity currently represented by that ticker.\nTo find events for entities previously associated with a ticker, find the relevant identifier using the \n[Ticker Details Endpoint](https://polygon.io/docs/stocks/get_v3_reference_tickers__ticker)", + "description": "Identifier of an asset. This can currently be a Ticker, CUSIP, or Composite FIGI.\nWhen given a ticker, we return events for the entity currently represented by that ticker.\nTo find events for entities previously associated with a ticker, find the relevant identifier using the \n[Ticker Details Endpoint](https://massive.com/docs/stocks/get_v3_reference_tickers__ticker)", "example": "META", "in": "path", "name": "id", @@ -31164,7 +31164,7 @@ } }, "type": "object", - "x-polygon-go-type": { + "x-massive-go-type": { "name": "EventsResults" } }, @@ -31187,11 +31187,11 @@ "tags": [ "reference:tickers:get" ], - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "description": "Reference data", "name": "reference" }, - "x-polygon-experimental": {} + "x-massive-experimental": {} } } }, @@ -31202,19 +31202,19 @@ ], "servers": [ { - "description": "Polygon Platform API", - "url": "https://api.polygon.io" + "description": "Massive Platform API", + "url": "https://api.massive.com" }, { - "description": "Polygon Platform API (Staging)", - "url": "https://api.staging.polygon.io" + "description": "Massive Platform API (Staging)", + "url": "https://api.staging.massive.com" } ], "tags": [ { "description": "Reference API", "name": "reference", - "x-polygon-sub-tags": [ + "x-massive-sub-tags": [ "tickers:list", "tickers:types", "tickers:get", @@ -31236,7 +31236,7 @@ { "description": "Stocks API", "name": "stocks", - "x-polygon-sub-tags": [ + "x-massive-sub-tags": [ "trades", "quotes", "last:trade", @@ -31249,7 +31249,7 @@ { "description": "Options API", "name": "options", - "x-polygon-sub-tags": [ + "x-massive-sub-tags": [ "trades", "quotes", "last:trade", @@ -31262,7 +31262,7 @@ { "description": "Forex API", "name": "fx", - "x-polygon-sub-tags": [ + "x-massive-sub-tags": [ "trades", "quotes", "conversion", @@ -31275,7 +31275,7 @@ { "description": "Crypto API", "name": "crypto", - "x-polygon-sub-tags": [ + "x-massive-sub-tags": [ "trades", "last:trade", "open-close", @@ -31286,7 +31286,7 @@ { "description": "Indices API", "name": "indices", - "x-polygon-sub-tags": [ + "x-massive-sub-tags": [ "trades", "last:trade", "open-close", @@ -31295,7 +31295,7 @@ ] } ], - "x-polygon-order": { + "x-massive-order": { "crypto": { "market": [ { diff --git a/.polygon/rest.py b/.massive/rest.py similarity index 52% rename from .polygon/rest.py rename to .massive/rest.py index e4ae124c..4bfcd940 100644 --- a/.polygon/rest.py +++ b/.massive/rest.py @@ -1,8 +1,8 @@ import urllib.request import json -contents = urllib.request.urlopen("https://api.polygon.io/openapi").read() +contents = urllib.request.urlopen("https://api.massive.com/openapi").read() parsed = json.loads(contents) formatted = json.dumps(parsed, indent=2) -with open(".polygon/rest.json", "w") as f: +with open(".massive/rest.json", "w") as f: f.write(formatted) diff --git a/.polygon/websocket.json b/.massive/websocket.json similarity index 93% rename from .polygon/websocket.json rename to .massive/websocket.json index ff09762a..ddaef95e 100644 --- a/.polygon/websocket.json +++ b/.massive/websocket.json @@ -1,21 +1,21 @@ { "openapi": "3.0.3", "info": { - "title": "Polygon Websocket Spec", + "title": "Massive Websocket Spec", "description": "The future of fintech.", "version": "2.0.0" }, "servers": [ { - "url": "wss://socket.polygon.io", + "url": "wss://socket.massive.com", "description": "Real-time" }, { - "url": "wss://delayed.polygon.io", + "url": "wss://delayed.massive.com", "description": "Delayed" } ], - "x-polygon-order": { + "x-massive-order": { "stocks": { "market": [ { @@ -219,7 +219,7 @@ { "name": "ticker", "in": "query", - "description": "Specify a stock ticker or use * to subscribe to all stock tickers.\nYou can also use a comma separated list to subscribe to multiple stock tickers.\nYou can retrieve available stock tickers from our [Stock Tickers API](https://polygon.io/docs/stocks/get_v3_reference_tickers).\n", + "description": "Specify a stock ticker or use * to subscribe to all stock tickers.\nYou can also use a comma separated list to subscribe to multiple stock tickers.\nYou can retrieve available stock tickers from our [Stock Tickers API](https://massive.com/docs/stocks/get_v3_reference_tickers).\n", "required": true, "schema": { "type": "string", @@ -248,7 +248,7 @@ }, "x": { "type": "integer", - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs." + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs." }, "i": { "type": "string", @@ -269,7 +269,7 @@ }, "c": { "type": "array", - "description": "The trade conditions. See Conditions and Indicators for Polygon.io's trade conditions glossary.\n", + "description": "The trade conditions. See Conditions and Indicators for Massive.com's trade conditions glossary.\n", "items": { "type": "integer", "description": "The ID of the condition." @@ -312,15 +312,15 @@ } } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "name": "trades", "description": "Trade data" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "name": "stocks", "description": "Stocks data" }, - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "name": "delayed", "description": "15 minute delayed data" @@ -340,7 +340,7 @@ { "name": "ticker", "in": "query", - "description": "Specify a stock ticker or use * to subscribe to all stock tickers.\nYou can also use a comma separated list to subscribe to multiple stock tickers.\nYou can retrieve available stock tickers from our [Stock Tickers API](https://polygon.io/docs/stocks/get_v3_reference_tickers).\n", + "description": "Specify a stock ticker or use * to subscribe to all stock tickers.\nYou can also use a comma separated list to subscribe to multiple stock tickers.\nYou can retrieve available stock tickers from our [Stock Tickers API](https://massive.com/docs/stocks/get_v3_reference_tickers).\n", "required": true, "schema": { "type": "string", @@ -399,7 +399,7 @@ }, "i": { "type": "array", - "description": "The indicators. For more information, see our glossary of [Conditions and\nIndicators](https://polygon.io/glossary/us/stocks/conditions-indicators).\n", + "description": "The indicators. For more information, see our glossary of [Conditions and\nIndicators](https://massive.com/glossary/us/stocks/conditions-indicators).\n", "items": { "type": "integer", "description": "The indicator code.\n" @@ -440,15 +440,15 @@ } } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "name": "nbbo", "description": "NBBO data" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "name": "stocks", "description": "Stocks data" }, - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "name": "realtime", "description": "Real Time Data" @@ -464,7 +464,7 @@ { "name": "ticker", "in": "query", - "description": "Specify a stock ticker or use * to subscribe to all stock tickers.\nYou can also use a comma separated list to subscribe to multiple stock tickers.\nYou can retrieve available stock tickers from our [Stock Tickers API](https://polygon.io/docs/stocks/get_v3_reference_tickers).\n", + "description": "Specify a stock ticker or use * to subscribe to all stock tickers.\nYou can also use a comma separated list to subscribe to multiple stock tickers.\nYou can retrieve available stock tickers from our [Stock Tickers API](https://massive.com/docs/stocks/get_v3_reference_tickers).\n", "required": true, "schema": { "type": "string", @@ -583,15 +583,15 @@ } } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "name": "aggregates", "description": "Aggregate data" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "name": "stocks", "description": "Stocks data" }, - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "name": "delayed", "description": "15 minute delayed data" @@ -611,7 +611,7 @@ { "name": "ticker", "in": "query", - "description": "Specify a stock ticker or use * to subscribe to all stock tickers.\nYou can also use a comma separated list to subscribe to multiple stock tickers.\nYou can retrieve available stock tickers from our [Stock Tickers API](https://polygon.io/docs/stocks/get_v3_reference_tickers).\n", + "description": "Specify a stock ticker or use * to subscribe to all stock tickers.\nYou can also use a comma separated list to subscribe to multiple stock tickers.\nYou can retrieve available stock tickers from our [Stock Tickers API](https://massive.com/docs/stocks/get_v3_reference_tickers).\n", "required": true, "schema": { "type": "string", @@ -730,15 +730,15 @@ } } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "name": "aggregates", "description": "Aggregate data" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "name": "stocks", "description": "Stocks data" }, - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "name": "delayed", "description": "15 minute delayed data" @@ -758,7 +758,7 @@ { "name": "ticker", "in": "query", - "description": "Specify a stock ticker or use * to subscribe to all stock tickers.\nYou can also use a comma separated list to subscribe to multiple stock tickers.\nYou can retrieve available stock tickers from our [Stock Tickers API](https://polygon.io/docs/stocks/get_v3_reference_tickers).\n", + "description": "Specify a stock ticker or use * to subscribe to all stock tickers.\nYou can also use a comma separated list to subscribe to multiple stock tickers.\nYou can retrieve available stock tickers from our [Stock Tickers API](https://massive.com/docs/stocks/get_v3_reference_tickers).\n", "required": true, "schema": { "type": "string", @@ -832,15 +832,15 @@ } } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "name": "limit-up-limit-down", "description": "Limit-Up Limit-Down data" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "name": "stocks", "description": "Stocks data" }, - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "name": "realtime", "description": "Real Time Data" @@ -856,7 +856,7 @@ { "name": "ticker", "in": "query", - "description": "Specify a stock ticker or use * to subscribe to all stock tickers.\nYou can also use a comma separated list to subscribe to multiple stock tickers.\nYou can retrieve available stock tickers from our [Stock Tickers API](https://polygon.io/docs/stocks/get_v3_reference_tickers).\n", + "description": "Specify a stock ticker or use * to subscribe to all stock tickers.\nYou can also use a comma separated list to subscribe to multiple stock tickers.\nYou can retrieve available stock tickers from our [Stock Tickers API](https://massive.com/docs/stocks/get_v3_reference_tickers).\n", "required": true, "schema": { "type": "string", @@ -901,7 +901,7 @@ }, "x": { "type": "integer", - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs." + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs." }, "o": { "type": "integer", @@ -934,15 +934,15 @@ } } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "name": "imbalances", "description": "Imbalances data" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "name": "stocks", "description": "Stocks data" }, - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "name": "realtime", "description": "Real Time Data" @@ -958,7 +958,7 @@ { "name": "ticker", "in": "query", - "description": "Specify a stock ticker or use * to subscribe to all stock tickers.\nYou can also use a comma separated list to subscribe to multiple stock tickers.\nYou can retrieve available stock tickers from our [Stock Tickers API](https://polygon.io/docs/stocks/get_v3_reference_tickers).\n", + "description": "Specify a stock ticker or use * to subscribe to all stock tickers.\nYou can also use a comma separated list to subscribe to multiple stock tickers.\nYou can retrieve available stock tickers from our [Stock Tickers API](https://massive.com/docs/stocks/get_v3_reference_tickers).\n", "required": true, "schema": { "type": "string", @@ -983,7 +983,7 @@ "description": "The event type." }, "fmv": { - "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.\n" + "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.\n" }, "sym": { "description": "The ticker symbol for the given security." @@ -1003,15 +1003,15 @@ } } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "name": "indicative-price", "description": "Indicative Price" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "name": "stocks", "description": "Stocks data" }, - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "name": "delayed", "description": "15 minute delayed data" @@ -1031,7 +1031,7 @@ { "name": "ticker", "in": "query", - "description": "Specify a stock ticker or use * to subscribe to all stock tickers.\nYou can also use a comma separated list to subscribe to multiple stock tickers.\nYou can retrieve available stock tickers from our [Stock Tickers API](https://polygon.io/docs/stocks/get_v3_reference_tickers).\n", + "description": "Specify a stock ticker or use * to subscribe to all stock tickers.\nYou can also use a comma separated list to subscribe to multiple stock tickers.\nYou can retrieve available stock tickers from our [Stock Tickers API](https://massive.com/docs/stocks/get_v3_reference_tickers).\n", "required": true, "schema": { "type": "string", @@ -1132,15 +1132,15 @@ } } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "name": "aggregates", "description": "Aggregate data" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "name": "stocks", "description": "Stocks data" }, - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "name": "delayed", "description": "15 minute delayed data" @@ -1160,7 +1160,7 @@ { "name": "ticker", "in": "query", - "description": "Specify a stock ticker or use * to subscribe to all stock tickers.\nYou can also use a comma separated list to subscribe to multiple stock tickers.\nYou can retrieve available stock tickers from our [Stock Tickers API](https://polygon.io/docs/stocks/get_v3_reference_tickers).\n", + "description": "Specify a stock ticker or use * to subscribe to all stock tickers.\nYou can also use a comma separated list to subscribe to multiple stock tickers.\nYou can retrieve available stock tickers from our [Stock Tickers API](https://massive.com/docs/stocks/get_v3_reference_tickers).\n", "required": true, "schema": { "type": "string", @@ -1205,15 +1205,15 @@ } } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "name": "indicative-price", "description": "Indicative Price" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "name": "stocks", "description": "Stocks data" }, - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "name": "delayed", "description": "15 minute delayed data" @@ -1233,7 +1233,7 @@ { "name": "ticker", "in": "query", - "description": "Specify an option contract or use * to subscribe to all option contracts.\nYou can also use a comma separated list to subscribe to multiple option contracts.\nYou can retrieve active options contracts from our [Options Contracts API](https://polygon.io/docs/options/get_v3_reference_options_contracts).\n", + "description": "Specify an option contract or use * to subscribe to all option contracts.\nYou can also use a comma separated list to subscribe to multiple option contracts.\nYou can retrieve active options contracts from our [Options Contracts API](https://massive.com/docs/options/get_v3_reference_options_contracts).\n", "required": true, "schema": { "type": "string", @@ -1262,7 +1262,7 @@ }, "x": { "type": "integer", - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs." + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs." }, "p": { "type": "number", @@ -1307,15 +1307,15 @@ } } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "name": "trades", "description": "Trade data" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "name": "options", "description": "Options data" }, - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "name": "delayed", "description": "15 minute delayed data" @@ -1335,7 +1335,7 @@ { "name": "ticker", "in": "query", - "description": "Specify an option contract. You're only allowed to subscribe to 1,000 option contracts per connection.\nYou can also use a comma separated list to subscribe to multiple option contracts.\nYou can retrieve active options contracts from our [Options Contracts API](https://polygon.io/docs/options/get_v3_reference_options_contracts).\n", + "description": "Specify an option contract. You're only allowed to subscribe to 1,000 option contracts per connection.\nYou can also use a comma separated list to subscribe to multiple option contracts.\nYou can retrieve active options contracts from our [Options Contracts API](https://massive.com/docs/options/get_v3_reference_options_contracts).\n", "required": true, "schema": { "type": "string", @@ -1364,11 +1364,11 @@ }, "bx": { "type": "integer", - "description": "The bid exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs." + "description": "The bid exchange ID. See Exchanges for Massive.com's mapping of exchange IDs." }, "ax": { "type": "integer", - "description": "The ask exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs." + "description": "The ask exchange ID. See Exchanges for Massive.com's mapping of exchange IDs." }, "bp": { "type": "number", @@ -1414,15 +1414,15 @@ } } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "name": "nbbo", "description": "NBBO data" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "name": "options", "description": "Options data" }, - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "name": "realtime", "description": "Real Time Data" @@ -1438,7 +1438,7 @@ { "name": "ticker", "in": "query", - "description": "Specify an option contract or use * to subscribe to all option contracts.\nYou can also use a comma separated list to subscribe to multiple option contracts.\nYou can retrieve active options contracts from our [Options Contracts API](https://polygon.io/docs/options/get_v3_reference_options_contracts).\n", + "description": "Specify an option contract or use * to subscribe to all option contracts.\nYou can also use a comma separated list to subscribe to multiple option contracts.\nYou can retrieve active options contracts from our [Options Contracts API](https://massive.com/docs/options/get_v3_reference_options_contracts).\n", "required": true, "schema": { "type": "string", @@ -1553,15 +1553,15 @@ } } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "name": "aggregates", "description": "Aggregate data" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "name": "options", "description": "Options data" }, - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "name": "delayed", "description": "15 minute delayed data" @@ -1581,7 +1581,7 @@ { "name": "ticker", "in": "query", - "description": "Specify an option contract or use * to subscribe to all option contracts.\nYou can also use a comma separated list to subscribe to multiple option contracts.\nYou can retrieve active options contracts from our [Options Contracts API](https://polygon.io/docs/options/get_v3_reference_options_contracts).\n", + "description": "Specify an option contract or use * to subscribe to all option contracts.\nYou can also use a comma separated list to subscribe to multiple option contracts.\nYou can retrieve active options contracts from our [Options Contracts API](https://massive.com/docs/options/get_v3_reference_options_contracts).\n", "required": true, "schema": { "type": "string", @@ -1696,15 +1696,15 @@ } } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "name": "aggregates", "description": "Aggregate data" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "name": "options", "description": "Options data" }, - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "name": "delayed", "description": "15 minute delayed data" @@ -1724,7 +1724,7 @@ { "name": "ticker", "in": "query", - "description": "Specify an option contract. You're only allowed to subscribe to 1,000 option contracts per connection.\nYou can also use a comma separated list to subscribe to multiple option contracts.\nYou can retrieve active options contracts from our [Options Contracts API](https://polygon.io/docs/options/get_v3_reference_options_contracts).\n", + "description": "Specify an option contract. You're only allowed to subscribe to 1,000 option contracts per connection.\nYou can also use a comma separated list to subscribe to multiple option contracts.\nYou can retrieve active options contracts from our [Options Contracts API](https://massive.com/docs/options/get_v3_reference_options_contracts).\n", "required": true, "schema": { "type": "string", @@ -1749,7 +1749,7 @@ "description": "The event type." }, "fmv": { - "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.\n" + "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.\n" }, "sym": { "description": "The ticker symbol for the given security." @@ -1769,15 +1769,15 @@ } } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "name": "indicative-price", "description": "Indicative Price" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "name": "options", "description": "Options data" }, - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "name": "delayed", "description": "15 minute delayed data" @@ -1797,7 +1797,7 @@ { "name": "ticker", "in": "query", - "description": "Specify an option contract. You're only allowed to subscribe to 1,000 option contracts per connection.\nYou can also use a comma separated list to subscribe to multiple option contracts.\nYou can retrieve active options contracts from our [Options Contracts API](https://polygon.io/docs/options/get_v3_reference_options_contracts).\n", + "description": "Specify an option contract. You're only allowed to subscribe to 1,000 option contracts per connection.\nYou can also use a comma separated list to subscribe to multiple option contracts.\nYou can retrieve active options contracts from our [Options Contracts API](https://massive.com/docs/options/get_v3_reference_options_contracts).\n", "required": true, "schema": { "type": "string", @@ -1898,15 +1898,15 @@ } } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "name": "aggregates", "description": "Aggregate data" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "name": "options", "description": "Options data" }, - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "name": "delayed", "description": "15 minute delayed data" @@ -1926,7 +1926,7 @@ { "name": "ticker", "in": "query", - "description": "Specify an option contract. You're only allowed to subscribe to 1,000 option contracts per connection.\nYou can also use a comma separated list to subscribe to multiple option contracts.\nYou can retrieve active options contracts from our [Options Contracts API](https://polygon.io/docs/options/get_v3_reference_options_contracts).\n", + "description": "Specify an option contract. You're only allowed to subscribe to 1,000 option contracts per connection.\nYou can also use a comma separated list to subscribe to multiple option contracts.\nYou can retrieve active options contracts from our [Options Contracts API](https://massive.com/docs/options/get_v3_reference_options_contracts).\n", "required": true, "schema": { "type": "string", @@ -1971,15 +1971,15 @@ } } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "name": "indicative-price", "description": "Indicative Price" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "name": "options", "description": "Options data" }, - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "name": "delayed", "description": "15 minute delayed data" @@ -1999,7 +1999,7 @@ { "name": "ticker", "in": "query", - "description": "Specify a forex pair in the format {from}/{to} or use * to subscribe to all forex pairs.\nYou can also use a comma separated list to subscribe to multiple forex pairs.\nYou can retrieve active forex tickers from our [Forex Tickers API](https://polygon.io/docs/forex/get_v3_reference_tickers).\n", + "description": "Specify a forex pair in the format {from}/{to} or use * to subscribe to all forex pairs.\nYou can also use a comma separated list to subscribe to multiple forex pairs.\nYou can retrieve active forex tickers from our [Forex Tickers API](https://massive.com/docs/forex/get_v3_reference_tickers).\n", "required": true, "schema": { "type": "string", @@ -2028,7 +2028,7 @@ }, "x": { "type": "integer", - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs." + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs." }, "a": { "type": "number", @@ -2070,15 +2070,15 @@ } } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "name": "nbbo", "description": "NBBO data" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "name": "fx", "description": "Forex data" }, - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "name": "realtime", "description": "Real Time Data" @@ -2094,7 +2094,7 @@ { "name": "ticker", "in": "query", - "description": "Specify a forex pair in the format {from}/{to} or use * to subscribe to all forex pairs.\nYou can also use a comma separated list to subscribe to multiple forex pairs.\nYou can retrieve active forex tickers from our [Forex Tickers API](https://polygon.io/docs/forex/get_v3_reference_tickers).\n", + "description": "Specify a forex pair in the format {from}/{to} or use * to subscribe to all forex pairs.\nYou can also use a comma separated list to subscribe to multiple forex pairs.\nYou can retrieve active forex tickers from our [Forex Tickers API](https://massive.com/docs/forex/get_v3_reference_tickers).\n", "required": true, "schema": { "type": "string", @@ -2170,15 +2170,15 @@ } } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "name": "aggregates", "description": "Aggregate data" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "name": "fx", "description": "Forex data" }, - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "name": "realtime", "description": "Real Time Data" @@ -2194,7 +2194,7 @@ { "name": "ticker", "in": "query", - "description": "Specify a forex pair in the format {from}/{to} or use * to subscribe to all forex pairs.\nYou can also use a comma separated list to subscribe to multiple forex pairs.\nYou can retrieve active forex tickers from our [Forex Tickers API](https://polygon.io/docs/forex/get_v3_reference_tickers).\n", + "description": "Specify a forex pair in the format {from}/{to} or use * to subscribe to all forex pairs.\nYou can also use a comma separated list to subscribe to multiple forex pairs.\nYou can retrieve active forex tickers from our [Forex Tickers API](https://massive.com/docs/forex/get_v3_reference_tickers).\n", "required": true, "schema": { "type": "string", @@ -2270,15 +2270,15 @@ } } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "name": "aggregates", "description": "Aggregate data" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "name": "fx", "description": "Forex data" }, - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "name": "realtime", "description": "Real Time Data" @@ -2294,7 +2294,7 @@ { "name": "ticker", "in": "query", - "description": "Specify a forex pair in the format {from}/{to} or use * to subscribe to all forex pairs.\nYou can also use a comma separated list to subscribe to multiple forex pairs.\nYou can retrieve active forex tickers from our [Forex Tickers API](https://polygon.io/docs/forex/get_v3_reference_tickers).\n", + "description": "Specify a forex pair in the format {from}/{to} or use * to subscribe to all forex pairs.\nYou can also use a comma separated list to subscribe to multiple forex pairs.\nYou can retrieve active forex tickers from our [Forex Tickers API](https://massive.com/docs/forex/get_v3_reference_tickers).\n", "required": true, "schema": { "type": "string", @@ -2319,7 +2319,7 @@ "description": "The event type." }, "fmv": { - "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.\n" + "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.\n" }, "sym": { "description": "The ticker symbol for the given security." @@ -2339,15 +2339,15 @@ } } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "name": "indicative-price", "description": "Indicative Price" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "name": "fx", "description": "Forex data" }, - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "name": "delayed", "description": "15 minute delayed data" @@ -2367,7 +2367,7 @@ { "name": "ticker", "in": "query", - "description": "Specify a forex pair in the format {from}/{to} or use * to subscribe to all forex pairs.\nYou can also use a comma separated list to subscribe to multiple forex pairs.\nYou can retrieve active forex tickers from our [Forex Tickers API](https://polygon.io/docs/forex/get_v3_reference_tickers).\n", + "description": "Specify a forex pair in the format {from}/{to} or use * to subscribe to all forex pairs.\nYou can also use a comma separated list to subscribe to multiple forex pairs.\nYou can retrieve active forex tickers from our [Forex Tickers API](https://massive.com/docs/forex/get_v3_reference_tickers).\n", "required": true, "schema": { "type": "string", @@ -2468,15 +2468,15 @@ } } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "name": "aggregates", "description": "Aggregate data" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "name": "fx", "description": "Forex data" }, - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "name": "delayed", "description": "15 minute delayed data" @@ -2496,7 +2496,7 @@ { "name": "ticker", "in": "query", - "description": "Specify a forex pair in the format {from}/{to} or use * to subscribe to all forex pairs.\nYou can also use a comma separated list to subscribe to multiple forex pairs.\nYou can retrieve active forex tickers from our [Forex Tickers API](https://polygon.io/docs/forex/get_v3_reference_tickers).\n", + "description": "Specify a forex pair in the format {from}/{to} or use * to subscribe to all forex pairs.\nYou can also use a comma separated list to subscribe to multiple forex pairs.\nYou can retrieve active forex tickers from our [Forex Tickers API](https://massive.com/docs/forex/get_v3_reference_tickers).\n", "required": true, "schema": { "type": "string", @@ -2541,15 +2541,15 @@ } } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "name": "indicative-price", "description": "Indicative Price" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "name": "fx", "description": "Forex data" }, - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "name": "delayed", "description": "15 minute delayed data" @@ -2569,7 +2569,7 @@ { "name": "ticker", "in": "query", - "description": "Specify a crypto pair in the format {from}-{to} or use * to subscribe to all crypto pairs.\nYou can also use a comma separated list to subscribe to multiple crypto pairs.\nYou can retrieve active crypto tickers from our [Crypto Tickers API](https://polygon.io/docs/crypto/get_v3_reference_tickers).\n", + "description": "Specify a crypto pair in the format {from}-{to} or use * to subscribe to all crypto pairs.\nYou can also use a comma separated list to subscribe to multiple crypto pairs.\nYou can retrieve active crypto tickers from our [Crypto Tickers API](https://massive.com/docs/crypto/get_v3_reference_tickers).\n", "required": true, "schema": { "type": "string", @@ -2625,11 +2625,11 @@ }, "x": { "type": "integer", - "description": "The crypto exchange ID. See Exchanges for a list of exchanges and their IDs.\n" + "description": "The crypto exchange ID. See Exchanges for a list of exchanges and their IDs.\n" }, "r": { "type": "integer", - "description": "The timestamp that the tick was received by Polygon." + "description": "The timestamp that the tick was received by Massive." } } }, @@ -2650,15 +2650,15 @@ } } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "name": "trades", "description": "Trade data" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "name": "crypto", "description": "Crypto data" }, - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "name": "realtime", "description": "Real Time Data" @@ -2674,7 +2674,7 @@ { "name": "ticker", "in": "query", - "description": "Specify a crypto pair in the format {from}-{to} or use * to subscribe to all crypto pairs.\nYou can also use a comma separated list to subscribe to multiple crypto pairs.\nYou can retrieve active crypto tickers from our [Crypto Tickers API](https://polygon.io/docs/crypto/get_v3_reference_tickers).\n", + "description": "Specify a crypto pair in the format {from}-{to} or use * to subscribe to all crypto pairs.\nYou can also use a comma separated list to subscribe to multiple crypto pairs.\nYou can retrieve active crypto tickers from our [Crypto Tickers API](https://massive.com/docs/crypto/get_v3_reference_tickers).\n", "required": true, "schema": { "type": "string", @@ -2728,11 +2728,11 @@ }, "x": { "type": "integer", - "description": "The crypto exchange ID. See Exchanges for a list of exchanges and their IDs.\n" + "description": "The crypto exchange ID. See Exchanges for a list of exchanges and their IDs.\n" }, "r": { "type": "integer", - "description": "The timestamp that the tick was received by Polygon." + "description": "The timestamp that the tick was received by Massive." } } }, @@ -2751,15 +2751,15 @@ } } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "name": "nbbo", "description": "NBBO data" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "name": "crypto", "description": "Crypto data" }, - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "name": "realtime", "description": "Real Time Data" @@ -2775,7 +2775,7 @@ { "name": "ticker", "in": "query", - "description": "Specify a crypto pair in the format {from}-{to} or use * to subscribe to all crypto pairs.\nYou can also use a comma separated list to subscribe to multiple crypto pairs.\nYou can retrieve active crypto tickers from our [Crypto Tickers API](https://polygon.io/docs/crypto/get_v3_reference_tickers).\n", + "description": "Specify a crypto pair in the format {from}-{to} or use * to subscribe to all crypto pairs.\nYou can also use a comma separated list to subscribe to multiple crypto pairs.\nYou can retrieve active crypto tickers from our [Crypto Tickers API](https://massive.com/docs/crypto/get_v3_reference_tickers).\n", "required": true, "schema": { "type": "string", @@ -2833,11 +2833,11 @@ }, "x": { "type": "integer", - "description": "The crypto exchange ID. See Exchanges for a list of exchanges and their IDs.\n" + "description": "The crypto exchange ID. See Exchanges for a list of exchanges and their IDs.\n" }, "r": { "type": "integer", - "description": "The timestamp that the tick was received by Polygon." + "description": "The timestamp that the tick was received by Massive." } } }, @@ -2872,21 +2872,21 @@ } } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "name": "nbbo", "description": "NBBO data" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "name": "crypto", "description": "Crypto data" }, - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "name": "realtime", "description": "Real Time Data" } ], - "x-polygon-deprecation": { + "x-massive-deprecation": { "date": 1719838800000 } } @@ -2899,7 +2899,7 @@ { "name": "ticker", "in": "query", - "description": "Specify a crypto pair in the format {from}-{to} or use * to subscribe to all crypto pairs.\nYou can also use a comma separated list to subscribe to multiple crypto pairs.\nYou can retrieve active crypto tickers from our [Crypto Tickers API](https://polygon.io/docs/crypto/get_v3_reference_tickers).\n", + "description": "Specify a crypto pair in the format {from}-{to} or use * to subscribe to all crypto pairs.\nYou can also use a comma separated list to subscribe to multiple crypto pairs.\nYou can retrieve active crypto tickers from our [Crypto Tickers API](https://massive.com/docs/crypto/get_v3_reference_tickers).\n", "required": true, "schema": { "type": "string", @@ -2987,15 +2987,15 @@ } } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "name": "aggregates", "description": "Aggregate data" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "name": "crypto", "description": "Crypto data" }, - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "name": "realtime", "description": "Real Time Data" @@ -3011,7 +3011,7 @@ { "name": "ticker", "in": "query", - "description": "Specify a crypto pair in the format {from}-{to} or use * to subscribe to all crypto pairs.\nYou can also use a comma separated list to subscribe to multiple crypto pairs.\nYou can retrieve active crypto tickers from our [Crypto Tickers API](https://polygon.io/docs/crypto/get_v3_reference_tickers).\n", + "description": "Specify a crypto pair in the format {from}-{to} or use * to subscribe to all crypto pairs.\nYou can also use a comma separated list to subscribe to multiple crypto pairs.\nYou can retrieve active crypto tickers from our [Crypto Tickers API](https://massive.com/docs/crypto/get_v3_reference_tickers).\n", "required": true, "schema": { "type": "string", @@ -3099,15 +3099,15 @@ } } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "name": "aggregates", "description": "Aggregate data" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "name": "crypto", "description": "Crypto data" }, - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "name": "realtime", "description": "Real Time Data" @@ -3123,7 +3123,7 @@ { "name": "ticker", "in": "query", - "description": "Specify a crypto pair in the format {from}-{to} or use * to subscribe to all crypto pairs.\nYou can also use a comma separated list to subscribe to multiple crypto pairs.\nYou can retrieve active crypto tickers from our [Crypto Tickers API](https://polygon.io/docs/crypto/get_v3_reference_tickers).\n", + "description": "Specify a crypto pair in the format {from}-{to} or use * to subscribe to all crypto pairs.\nYou can also use a comma separated list to subscribe to multiple crypto pairs.\nYou can retrieve active crypto tickers from our [Crypto Tickers API](https://massive.com/docs/crypto/get_v3_reference_tickers).\n", "required": true, "schema": { "type": "string", @@ -3148,7 +3148,7 @@ "description": "The event type." }, "fmv": { - "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.\n" + "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.\n" }, "sym": { "description": "The ticker symbol for the given security." @@ -3168,15 +3168,15 @@ } } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "name": "indicative-price", "description": "Indicative Price" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "name": "crypto", "description": "Crypto data" }, - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "name": "delayed", "description": "15 minute delayed data" @@ -3196,7 +3196,7 @@ { "name": "ticker", "in": "query", - "description": "Specify a crypto pair in the format {from}-{to} or use * to subscribe to all crypto pairs.\nYou can also use a comma separated list to subscribe to multiple crypto pairs.\nYou can retrieve active crypto tickers from our [Crypto Tickers API](https://polygon.io/docs/crypto/get_v3_reference_tickers).\n", + "description": "Specify a crypto pair in the format {from}-{to} or use * to subscribe to all crypto pairs.\nYou can also use a comma separated list to subscribe to multiple crypto pairs.\nYou can retrieve active crypto tickers from our [Crypto Tickers API](https://massive.com/docs/crypto/get_v3_reference_tickers).\n", "required": true, "schema": { "type": "string", @@ -3297,15 +3297,15 @@ } } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "name": "aggregates", "description": "Aggregate data" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "name": "crypto", "description": "Crypto data" }, - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "name": "delayed", "description": "15 minute delayed data" @@ -3325,7 +3325,7 @@ { "name": "ticker", "in": "query", - "description": "Specify a crypto pair in the format {from}-{to} or use * to subscribe to all crypto pairs.\nYou can also use a comma separated list to subscribe to multiple crypto pairs.\nYou can retrieve active crypto tickers from our [Crypto Tickers API](https://polygon.io/docs/crypto/get_v3_reference_tickers).\n", + "description": "Specify a crypto pair in the format {from}-{to} or use * to subscribe to all crypto pairs.\nYou can also use a comma separated list to subscribe to multiple crypto pairs.\nYou can retrieve active crypto tickers from our [Crypto Tickers API](https://massive.com/docs/crypto/get_v3_reference_tickers).\n", "required": true, "schema": { "type": "string", @@ -3370,15 +3370,15 @@ } } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "name": "indicative-price", "description": "Indicative Price" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "name": "crypto", "description": "Crypto data" }, - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "name": "delayed", "description": "15 minute delayed data" @@ -3398,7 +3398,7 @@ { "name": "ticker", "in": "query", - "description": "Specify an index ticker using \"I:\" prefix or use * to subscribe to all index tickers.\nYou can also use a comma separated list to subscribe to multiple index tickers.\nYou can retrieve available index tickers from our [Index Tickers API](https://polygon.io/docs/indices/get_v3_reference_tickers).\n", + "description": "Specify an index ticker using \"I:\" prefix or use * to subscribe to all index tickers.\nYou can also use a comma separated list to subscribe to multiple index tickers.\nYou can retrieve available index tickers from our [Index Tickers API](https://massive.com/docs/indices/get_v3_reference_tickers).\n", "required": true, "schema": { "type": "string", @@ -3486,15 +3486,15 @@ } } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "name": "aggregates", "description": "Aggregate data" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "name": "indices", "description": "Indices data" }, - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "name": "delayed", "description": "15 minute delayed data" @@ -3514,7 +3514,7 @@ { "name": "ticker", "in": "query", - "description": "Specify an index ticker using \"I:\" prefix or use * to subscribe to all index tickers.\nYou can also use a comma separated list to subscribe to multiple index tickers.\nYou can retrieve available index tickers from our [Index Tickers API](https://polygon.io/docs/indices/get_v3_reference_tickers).\n", + "description": "Specify an index ticker using \"I:\" prefix or use * to subscribe to all index tickers.\nYou can also use a comma separated list to subscribe to multiple index tickers.\nYou can retrieve available index tickers from our [Index Tickers API](https://massive.com/docs/indices/get_v3_reference_tickers).\n", "required": true, "schema": { "type": "string", @@ -3602,15 +3602,15 @@ } } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "name": "aggregates", "description": "Aggregate data" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "name": "indices", "description": "Indices data" }, - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "name": "delayed", "description": "15 minute delayed data" @@ -3630,7 +3630,7 @@ { "name": "ticker", "in": "query", - "description": "Specify an index ticker using \"I:\" prefix or use * to subscribe to all index tickers.\nYou can also use a comma separated list to subscribe to multiple index tickers.\nYou can retrieve available index tickers from our [Index Tickers API](https://polygon.io/docs/indices/get_v3_reference_tickers).\n", + "description": "Specify an index ticker using \"I:\" prefix or use * to subscribe to all index tickers.\nYou can also use a comma separated list to subscribe to multiple index tickers.\nYou can retrieve available index tickers from our [Index Tickers API](https://massive.com/docs/indices/get_v3_reference_tickers).\n", "required": true, "schema": { "type": "string", @@ -3675,15 +3675,15 @@ } } }, - "x-polygon-entitlement-data-type": { + "x-massive-entitlement-data-type": { "name": "value", "description": "Value data" }, - "x-polygon-entitlement-market-type": { + "x-massive-entitlement-market-type": { "name": "indices", "description": "Indices data" }, - "x-polygon-entitlement-allowed-timeframes": [ + "x-massive-entitlement-allowed-timeframes": [ { "name": "delayed", "description": "15 minute delayed data" @@ -3943,7 +3943,7 @@ }, "x": { "type": "integer", - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs." + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs." }, "i": { "type": "string", @@ -3964,7 +3964,7 @@ }, "c": { "type": "array", - "description": "The trade conditions. See Conditions and Indicators for Polygon.io's trade conditions glossary.\n", + "description": "The trade conditions. See Conditions and Indicators for Massive.com's trade conditions glossary.\n", "items": { "type": "integer", "description": "The ID of the condition." @@ -4033,7 +4033,7 @@ }, "i": { "type": "array", - "description": "The indicators. For more information, see our glossary of [Conditions and\nIndicators](https://polygon.io/glossary/us/stocks/conditions-indicators).\n", + "description": "The indicators. For more information, see our glossary of [Conditions and\nIndicators](https://massive.com/glossary/us/stocks/conditions-indicators).\n", "items": { "type": "integer", "description": "The indicator code.\n" @@ -4369,7 +4369,7 @@ }, "x": { "type": "integer", - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs." + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs." }, "o": { "type": "integer", @@ -4396,7 +4396,7 @@ }, "StockExchangeID": { "type": "integer", - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs." + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs." }, "OptionTradeEvent": { "type": "object", @@ -4413,7 +4413,7 @@ }, "x": { "type": "integer", - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs." + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs." }, "p": { "type": "number", @@ -4457,11 +4457,11 @@ }, "bx": { "type": "integer", - "description": "The bid exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs." + "description": "The bid exchange ID. See Exchanges for Massive.com's mapping of exchange IDs." }, "ax": { "type": "integer", - "description": "The ask exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs." + "description": "The ask exchange ID. See Exchanges for Massive.com's mapping of exchange IDs." }, "bp": { "type": "number", @@ -4737,7 +4737,7 @@ }, "x": { "type": "integer", - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs." + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs." }, "a": { "type": "number", @@ -4770,7 +4770,7 @@ }, "x": { "type": "integer", - "description": "The exchange ID. See Exchanges for Polygon.io's mapping of exchange IDs." + "description": "The exchange ID. See Exchanges for Massive.com's mapping of exchange IDs." }, "a": { "type": "number", @@ -4936,11 +4936,11 @@ }, "x": { "type": "integer", - "description": "The crypto exchange ID. See Exchanges for a list of exchanges and their IDs.\n" + "description": "The crypto exchange ID. See Exchanges for a list of exchanges and their IDs.\n" }, "r": { "type": "integer", - "description": "The timestamp that the tick was received by Polygon." + "description": "The timestamp that the tick was received by Massive." } } }, @@ -4986,11 +4986,11 @@ }, "x": { "type": "integer", - "description": "The crypto exchange ID. See Exchanges for a list of exchanges and their IDs.\n" + "description": "The crypto exchange ID. See Exchanges for a list of exchanges and their IDs.\n" }, "r": { "type": "integer", - "description": "The timestamp that the tick was received by Polygon." + "description": "The timestamp that the tick was received by Massive." } } }, @@ -5152,11 +5152,11 @@ }, "x": { "type": "integer", - "description": "The crypto exchange ID. See Exchanges for a list of exchanges and their IDs.\n" + "description": "The crypto exchange ID. See Exchanges for a list of exchanges and their IDs.\n" }, "r": { "type": "integer", - "description": "The timestamp that the tick was received by Polygon." + "description": "The timestamp that the tick was received by Massive." } } }, @@ -5166,11 +5166,11 @@ }, "CryptoExchangeID": { "type": "integer", - "description": "The crypto exchange ID. See Exchanges for a list of exchanges and their IDs.\n" + "description": "The crypto exchange ID. See Exchanges for a list of exchanges and their IDs.\n" }, "CryptoReceivedTimestamp": { "type": "integer", - "description": "The timestamp that the tick was received by Polygon." + "description": "The timestamp that the tick was received by Massive." }, "IndicesBaseAggregateEvent": { "type": "object", @@ -5455,7 +5455,7 @@ "description": "The event type." }, "fmv": { - "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.\n" + "description": "Fair market value is only available on Business plans. It is our proprietary algorithm to generate a real-time, accurate, fair market value of a tradable security. For more information, contact us.\n" }, "sym": { "description": "The ticker symbol for the given security." @@ -5470,7 +5470,7 @@ "StocksTickerParam": { "name": "ticker", "in": "query", - "description": "Specify a stock ticker or use * to subscribe to all stock tickers.\nYou can also use a comma separated list to subscribe to multiple stock tickers.\nYou can retrieve available stock tickers from our [Stock Tickers API](https://polygon.io/docs/stocks/get_v3_reference_tickers).\n", + "description": "Specify a stock ticker or use * to subscribe to all stock tickers.\nYou can also use a comma separated list to subscribe to multiple stock tickers.\nYou can retrieve available stock tickers from our [Stock Tickers API](https://massive.com/docs/stocks/get_v3_reference_tickers).\n", "required": true, "schema": { "type": "string", @@ -5481,7 +5481,7 @@ "OptionsTickerParam": { "name": "ticker", "in": "query", - "description": "Specify an option contract or use * to subscribe to all option contracts.\nYou can also use a comma separated list to subscribe to multiple option contracts.\nYou can retrieve active options contracts from our [Options Contracts API](https://polygon.io/docs/options/get_v3_reference_options_contracts).\n", + "description": "Specify an option contract or use * to subscribe to all option contracts.\nYou can also use a comma separated list to subscribe to multiple option contracts.\nYou can retrieve active options contracts from our [Options Contracts API](https://massive.com/docs/options/get_v3_reference_options_contracts).\n", "required": true, "schema": { "type": "string", @@ -5492,7 +5492,7 @@ "OptionsTickerWithoutWildcardParam": { "name": "ticker", "in": "query", - "description": "Specify an option contract. You're only allowed to subscribe to 1,000 option contracts per connection.\nYou can also use a comma separated list to subscribe to multiple option contracts.\nYou can retrieve active options contracts from our [Options Contracts API](https://polygon.io/docs/options/get_v3_reference_options_contracts).\n", + "description": "Specify an option contract. You're only allowed to subscribe to 1,000 option contracts per connection.\nYou can also use a comma separated list to subscribe to multiple option contracts.\nYou can retrieve active options contracts from our [Options Contracts API](https://massive.com/docs/options/get_v3_reference_options_contracts).\n", "required": true, "schema": { "type": "string", @@ -5503,7 +5503,7 @@ "ForexTickerParam": { "name": "ticker", "in": "query", - "description": "Specify a forex pair in the format {from}/{to} or use * to subscribe to all forex pairs.\nYou can also use a comma separated list to subscribe to multiple forex pairs.\nYou can retrieve active forex tickers from our [Forex Tickers API](https://polygon.io/docs/forex/get_v3_reference_tickers).\n", + "description": "Specify a forex pair in the format {from}/{to} or use * to subscribe to all forex pairs.\nYou can also use a comma separated list to subscribe to multiple forex pairs.\nYou can retrieve active forex tickers from our [Forex Tickers API](https://massive.com/docs/forex/get_v3_reference_tickers).\n", "required": true, "schema": { "type": "string", @@ -5514,7 +5514,7 @@ "CryptoTickerParam": { "name": "ticker", "in": "query", - "description": "Specify a crypto pair in the format {from}-{to} or use * to subscribe to all crypto pairs.\nYou can also use a comma separated list to subscribe to multiple crypto pairs.\nYou can retrieve active crypto tickers from our [Crypto Tickers API](https://polygon.io/docs/crypto/get_v3_reference_tickers).\n", + "description": "Specify a crypto pair in the format {from}-{to} or use * to subscribe to all crypto pairs.\nYou can also use a comma separated list to subscribe to multiple crypto pairs.\nYou can retrieve active crypto tickers from our [Crypto Tickers API](https://massive.com/docs/crypto/get_v3_reference_tickers).\n", "required": true, "schema": { "type": "string", @@ -5525,7 +5525,7 @@ "IndicesIndexParam": { "name": "ticker", "in": "query", - "description": "Specify an index ticker using \"I:\" prefix or use * to subscribe to all index tickers.\nYou can also use a comma separated list to subscribe to multiple index tickers.\nYou can retrieve available index tickers from our [Index Tickers API](https://polygon.io/docs/indices/get_v3_reference_tickers).\n", + "description": "Specify an index ticker using \"I:\" prefix or use * to subscribe to all index tickers.\nYou can also use a comma separated list to subscribe to multiple index tickers.\nYou can retrieve available index tickers from our [Index Tickers API](https://massive.com/docs/indices/get_v3_reference_tickers).\n", "required": true, "schema": { "type": "string", @@ -5536,7 +5536,7 @@ "IndicesIndexParamWithoutWildcard": { "name": "ticker", "in": "query", - "description": "Specify an index ticker using \"I:\" prefix or use * to subscribe to all index tickers.\nYou can also use a comma separated list to subscribe to multiple index tickers.\nYou can retrieve available index tickers from our [Index Tickers API](https://polygon.io/docs/indices/get_v3_reference_tickers).\n", + "description": "Specify an index ticker using \"I:\" prefix or use * to subscribe to all index tickers.\nYou can also use a comma separated list to subscribe to multiple index tickers.\nYou can retrieve available index tickers from our [Index Tickers API](https://massive.com/docs/indices/get_v3_reference_tickers).\n", "required": true, "schema": { "type": "string", diff --git a/Makefile b/Makefile index 03f609ba..eee12ae1 100644 --- a/Makefile +++ b/Makefile @@ -22,22 +22,22 @@ help: ## Check code style style: - poetry run black $(if $(CI),--check,) polygon test_* examples + poetry run black $(if $(CI),--check,) massive test_* examples ## Check static types static: - poetry run mypy polygon test_* examples + poetry run mypy massive test_* examples ## Check code style and static types lint: style static ## Update the REST API spec rest-spec: - poetry run python .polygon/rest.py + poetry run python .massive/rest.py ## Update the WebSocket API spec ws-spec: - curl https://api.polygon.io/specs/websocket.json > .polygon/websocket.json + curl https://api.massive.io/specs/websocket.json > .massive/websocket.json test_rest: poetry run python -m unittest discover -s test_rest diff --git a/README.md b/README.md index 768b5ed1..65fdc3b3 100644 --- a/README.md +++ b/README.md @@ -1,33 +1,34 @@ -[![PyPI version](https://badge.fury.io/py/polygon-api-client.svg)](https://badge.fury.io/py/polygon-api-client) -[![Docs](https://readthedocs.org/projects/polygon-api-client/badge/?version=latest)](https://polygon-api-client.readthedocs.io/en/latest/) +# Massive (formerly Polygon.io) Python Client - WebSocket & RESTful APIs -# Polygon Python Client - WebSocket & RESTful APIs +Welcome to the official Python client library for the [Massive](https://massive.io/) REST and WebSocket API. To get started, please see the [Getting Started](https://massive.io/docs/stocks/getting-started) section in our documentation, view the [examples](./examples/) directory for code snippets. -Welcome to the official Python client library for the [Polygon](https://polygon.io/) REST and WebSocket API. To get started, please see the [Getting Started](https://polygon.io/docs/stocks/getting-started) section in our documentation, view the [examples](./examples/) directory for code snippets, or the [blog post](https://polygon.io/blog/polygon-io-with-python-for-stock-market-data/) with video tutorials to learn more. +**Note:** Polygon.io has rebranded as [Massive.com](https://massive.com) on Oct 30, 2025. Existing API keys, accounts, and integrations continue to work exactly as before. The only change in this SDK is that it now defaults to the new API base at `api.massive.com`, while `api.polygon.io` remains supported for an extended period. + +For details, see our [rebrand announcement blog post](https://massive.com/blog/polygon-is-now-massive/) or open an issue / contact [support@massive.com](mailto:support@massive.com) if you have questions. ## Prerequisites -Before installing the Polygon Python client, ensure your environment has Python 3.9 or higher. +Before installing the Massive Python client, ensure your environment has Python 3.9 or higher. ## Install Please use pip to install or update to the latest stable version. ``` -pip install -U polygon-api-client +pip install -U massive ``` ## Getting started -To get started, please see the [Getting Started](https://polygon-api-client.readthedocs.io/en/latest/Getting-Started.html) section in our docs, view the [examples](./examples) directory for code snippets, or view the [blog post with videos](https://polygon.io/blog/polygon-io-with-python-for-stock-market-data/) to learn more. +To get started, please see the [Getting Started](https://massive.io/docs/stocks/getting-started) section in our docs, view the [examples](./examples) directory for code snippets. -The free tier of our API comes with usage limitations, potentially leading to rate limit errors if these are exceeded. For uninterrupted access and to support larger data requirements, we recommend reviewing our [subscription plans](https://polygon.io/pricing), which are tailored for a wide range of needs from development to high-demand applications. Refer to our pricing page for detailed information on limits and features to ensure a seamless experience, especially for real-time data processing. +The free tier of our API comes with usage limitations, potentially leading to rate limit errors if these are exceeded. For uninterrupted access and to support larger data requirements, we recommend reviewing our [subscription plans](https://massive.io/pricing), which are tailored for a wide range of needs from development to high-demand applications. Refer to our pricing page for detailed information on limits and features to ensure a seamless experience, especially for real-time data processing. ## REST API Client Import the RESTClient. ```python -from polygon import RESTClient +from massive import RESTClient ``` -Create a new client with your [API key](https://polygon.io/dashboard/api-keys) +Create a new client with your [API key](https://massive.io/dashboard/api-keys) ```python client = RESTClient(api_key="") ``` @@ -147,8 +148,8 @@ When debug mode is enabled, the client will print out useful debugging informati For instance, if you made a request for `TSLA` data for the date `2023-08-01`, you would see debug output similar to the following: ``` -Request URL: https://api.polygon.io/v2/aggs/ticker/TSLA/range/1/minute/2023-08-01/2023-08-01?limit=50000 -Request Headers: {'Authorization': 'Bearer REDACTED', 'Accept-Encoding': 'gzip', 'User-Agent': 'Polygon.io PythonClient/1.12.4'} +Request URL: https://api.massive.io/v2/aggs/ticker/TSLA/range/1/minute/2023-08-01/2023-08-01?limit=50000 +Request Headers: {'Authorization': 'Bearer REDACTED', 'Accept-Encoding': 'gzip', 'User-Agent': 'Massive.com PythonClient/1.12.4'} Response Headers: {'Server': 'nginx/1.19.2', 'Date': 'Tue, 05 Sep 2023 23:07:02 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Content-Encoding': 'gzip', 'Vary': 'Accept-Encoding', 'X-Request-Id': '727c82feed3790b44084c3f4cae1d7d4', 'Strict-Transport-Security': 'max-age=15724800; includeSubDomains'} ``` @@ -158,12 +159,12 @@ This can be an invaluable tool for debugging issues or understanding how the cli Import classes ```python -from polygon import WebSocketClient -from polygon.websocket.models import WebSocketMessage +from massive import WebSocketClient +from massive.websocket.models import WebSocketMessage from typing import List ``` ### Using the client -Create a new client with your [API key](https://polygon.io/dashboard/api-keys) and subscription options. +Create a new client with your [API key](https://massive.io/dashboard/api-keys) and subscription options. ```python # Note: Multiple subscriptions can be added to the array # For example, if you want to subscribe to AAPL and META, @@ -179,18 +180,16 @@ def handle_msg(msg: List[WebSocketMessage]): ws.run(handle_msg=handle_msg) ``` -Check out more detailed examples [here](https://github.com/polygon-io/client-python/tree/master/examples/websocket). +Check out more detailed examples [here](https://github.com/massive-com/client-python/tree/master/examples/websocket). ## Contributing If you found a bug or have an idea for a new feature, please first discuss it with us by -[submitting a new issue](https://github.com/polygon-io/client-python/issues/new/choose). +[submitting a new issue](https://github.com/massive-com/client-python/issues/new/choose). We will respond to issues within at most 3 weeks. We're also open to volunteers if you want to submit a PR for any open issues but please discuss it with us beforehand. PRs that aren't linked to an existing issue or -discussed with us ahead of time will generally be declined. If you have more general -feedback or want to discuss using this client with other users, feel free to reach out -on our [Slack channel](https://polygon-io.slack.com/archives/C03FRFN7UF3). +discussed with us ahead of time will generally be declined. ### Development diff --git a/docs/source/Aggs.rst b/docs/source/Aggs.rst index 921166e9..b8e3fcc8 100644 --- a/docs/source/Aggs.rst +++ b/docs/source/Aggs.rst @@ -12,7 +12,7 @@ List aggs - `Forex aggs`_ - `Crypto aggs`_ -.. automethod:: polygon.RESTClient.list_aggs +.. automethod:: massive.RESTClient.list_aggs =========== Get aggs @@ -23,7 +23,7 @@ Get aggs - `Forex aggs`_ - `Crypto aggs`_ -.. automethod:: polygon.RESTClient.get_aggs +.. automethod:: massive.RESTClient.get_aggs ============================ Get grouped daily aggs @@ -33,7 +33,7 @@ Get grouped daily aggs - `Forex grouped daily aggs`_ - `Crypto grouped daily aggs`_ -.. automethod:: polygon.RESTClient.get_grouped_daily_aggs +.. automethod:: massive.RESTClient.get_grouped_daily_aggs ============================ Get daily open close agg @@ -43,7 +43,7 @@ Get daily open close agg - `Options daily open/close agg`_ - `Crypto daily open/close agg`_ -.. automethod:: polygon.RESTClient.get_daily_open_close_agg +.. automethod:: massive.RESTClient.get_daily_open_close_agg ============================ Get previous close agg @@ -54,19 +54,19 @@ Get previous close agg - `Forex previous close agg`_ - `Crypto previous close agg`_ -.. automethod:: polygon.RESTClient.get_previous_close_agg - -.. _Stocks aggs: https://polygon.io/docs/stocks/get_v2_aggs_ticker__stocksticker__range__multiplier___timespan___from___to -.. _Options aggs: https://polygon.io/docs/options/get_v2_aggs_ticker__optionsticker__range__multiplier___timespan___from___to -.. _Forex aggs: https://polygon.io/docs/forex/get_v2_aggs_ticker__forexticker__range__multiplier___timespan___from___to -.. _Crypto aggs: https://polygon.io/docs/crypto/get_v2_aggs_ticker__cryptoticker__range__multiplier___timespan___from___to -.. _Stocks grouped daily aggs: https://polygon.io/docs/stocks/get_v2_aggs_grouped_locale_us_market_stocks__date -.. _Forex grouped daily aggs: https://polygon.io/docs/forex/get_v2_aggs_grouped_locale_global_market_fx__date -.. _Crypto grouped daily aggs: https://polygon.io/docs/crypto/get_v2_aggs_grouped_locale_global_market_crypto__date -.. _Stocks daily open/close agg: https://polygon.io/docs/stocks/get_v1_open-close__stocksticker___date -.. _Options daily open/close agg: https://polygon.io/docs/options/get_v1_open-close__optionsticker___date -.. _Crypto daily open/close agg: https://polygon.io/docs/crypto/get_v1_open-close_crypto__from___to___date -.. _Stocks previous close agg: https://polygon.io/docs/stocks/get_v2_aggs_ticker__stocksticker__prev -.. _Options previous close agg: https://polygon.io/docs/options/get_v2_aggs_ticker__optionsticker__prev -.. _Forex previous close agg: https://polygon.io/docs/forex/get_v2_aggs_ticker__forexticker__prev -.. _Crypto previous close agg: https://polygon.io/docs/crypto/get_v2_aggs_ticker__cryptoticker__prev \ No newline at end of file +.. automethod:: massive.RESTClient.get_previous_close_agg + +.. _Stocks aggs: https://massive.com/docs/stocks/get_v2_aggs_ticker__stocksticker__range__multiplier___timespan___from___to +.. _Options aggs: https://massive.com/docs/options/get_v2_aggs_ticker__optionsticker__range__multiplier___timespan___from___to +.. _Forex aggs: https://massive.com/docs/forex/get_v2_aggs_ticker__forexticker__range__multiplier___timespan___from___to +.. _Crypto aggs: https://massive.com/docs/crypto/get_v2_aggs_ticker__cryptoticker__range__multiplier___timespan___from___to +.. _Stocks grouped daily aggs: https://massive.com/docs/stocks/get_v2_aggs_grouped_locale_us_market_stocks__date +.. _Forex grouped daily aggs: https://massive.com/docs/forex/get_v2_aggs_grouped_locale_global_market_fx__date +.. _Crypto grouped daily aggs: https://massive.com/docs/crypto/get_v2_aggs_grouped_locale_global_market_crypto__date +.. _Stocks daily open/close agg: https://massive.com/docs/stocks/get_v1_open-close__stocksticker___date +.. _Options daily open/close agg: https://massive.com/docs/options/get_v1_open-close__optionsticker___date +.. _Crypto daily open/close agg: https://massive.com/docs/crypto/get_v1_open-close_crypto__from___to___date +.. _Stocks previous close agg: https://massive.com/docs/stocks/get_v2_aggs_ticker__stocksticker__prev +.. _Options previous close agg: https://massive.com/docs/options/get_v2_aggs_ticker__optionsticker__prev +.. _Forex previous close agg: https://massive.com/docs/forex/get_v2_aggs_ticker__forexticker__prev +.. _Crypto previous close agg: https://massive.com/docs/crypto/get_v2_aggs_ticker__cryptoticker__prev \ No newline at end of file diff --git a/docs/source/Contracts.rst b/docs/source/Contracts.rst index 9278168f..c58c11e5 100644 --- a/docs/source/Contracts.rst +++ b/docs/source/Contracts.rst @@ -9,7 +9,7 @@ Get option contract - `Options Contract`_ -.. automethod:: polygon.RESTClient.get_options_contract +.. automethod:: massive.RESTClient.get_options_contract ================================= List Options Contracts @@ -17,8 +17,8 @@ List Options Contracts - `Options Contracts`_ -.. automethod:: polygon.RESTClient.list_options_contracts +.. automethod:: massive.RESTClient.list_options_contracts -.. _Options Contract: https://polygon.io/docs/options/get_v3_reference_options_contracts__options_ticker -.. _Options Contracts: https://polygon.io/docs/options/get_v3_reference_options_contracts \ No newline at end of file +.. _Options Contract: https://massive.com/docs/options/get_v3_reference_options_contracts__options_ticker +.. _Options Contracts: https://massive.com/docs/options/get_v3_reference_options_contracts \ No newline at end of file diff --git a/docs/source/Enums.rst b/docs/source/Enums.rst index 8f2233a4..47ca8b47 100644 --- a/docs/source/Enums.rst +++ b/docs/source/Enums.rst @@ -6,97 +6,97 @@ Enums ============================================================== Sort ============================================================== -.. autoclass:: polygon.rest.models.Sort +.. autoclass:: massive.rest.models.Sort :members: :undoc-members: ============================================================== Order ============================================================== -.. autoclass:: polygon.rest.models.Order +.. autoclass:: massive.rest.models.Order :members: :undoc-members: ============================================================== Locale ============================================================== -.. autoclass:: polygon.rest.models.Locale +.. autoclass:: massive.rest.models.Locale :members: :undoc-members: ============================================================== Market ============================================================== -.. autoclass:: polygon.rest.models.Market +.. autoclass:: massive.rest.models.Market :members: :undoc-members: ============================================================== AssetClass ============================================================== -.. autoclass:: polygon.rest.models.AssetClass +.. autoclass:: massive.rest.models.AssetClass :members: :undoc-members: ============================================================== DividendType ============================================================== -.. autoclass:: polygon.rest.models.DividendType +.. autoclass:: massive.rest.models.DividendType :members: :undoc-members: ============================================================== Frequency ============================================================== -.. autoclass:: polygon.rest.models.Frequency +.. autoclass:: massive.rest.models.Frequency :members: :undoc-members: ============================================================== DataType ============================================================== -.. autoclass:: polygon.rest.models.DataType +.. autoclass:: massive.rest.models.DataType :members: :undoc-members: ============================================================== SIP ============================================================== -.. autoclass:: polygon.rest.models.SIP +.. autoclass:: massive.rest.models.SIP :members: :undoc-members: ============================================================== ExchangeType ============================================================== -.. autoclass:: polygon.rest.models.ExchangeType +.. autoclass:: massive.rest.models.ExchangeType :members: :undoc-members: ============================================================== Direction ============================================================== -.. autoclass:: polygon.rest.models.Direction +.. autoclass:: massive.rest.models.Direction :members: :undoc-members: ============================================================== SnapshotMarketType ============================================================== -.. autoclass:: polygon.rest.models.SnapshotMarketType +.. autoclass:: massive.rest.models.SnapshotMarketType :members: :undoc-members: ============================================================== Timeframe ============================================================== -.. autoclass:: polygon.rest.models.Timeframe +.. autoclass:: massive.rest.models.Timeframe :members: :undoc-members: ============================================================== Precision ============================================================== -.. autoclass:: polygon.rest.models.Precision +.. autoclass:: massive.rest.models.Precision :members: :undoc-members: diff --git a/docs/source/Exceptions.rst b/docs/source/Exceptions.rst index 554bef82..6a9cc402 100644 --- a/docs/source/Exceptions.rst +++ b/docs/source/Exceptions.rst @@ -6,14 +6,14 @@ Exceptions ============================================================== AuthError ============================================================== -.. autoclass:: polygon.exceptions.AuthError +.. autoclass:: massive.exceptions.AuthError :members: :undoc-members: ============================================================== BadResponse ============================================================== -.. autoclass:: polygon.exceptions.BadResponse +.. autoclass:: massive.exceptions.BadResponse :members: :undoc-members: diff --git a/docs/source/Getting-Started.rst b/docs/source/Getting-Started.rst index a723f93f..120b4b25 100644 --- a/docs/source/Getting-Started.rst +++ b/docs/source/Getting-Started.rst @@ -2,26 +2,26 @@ Getting Started =============== Requirements: - - `Polygon.io API key `_ + - `Massive.com API key `_ - `Python >= 3.8 `_ - - `This package `_ + - `This package `_ .. code-block:: shell - pip install polygon-api-client + pip install massive-api-client HTTP client usage ----------------- -.. automethod:: polygon.RESTClient.__init__ +.. automethod:: massive.RESTClient.__init__ -You can pass your API key via the environment variable :code:`POLYGON_API_KEY` or as the first parameter to the :code:`RESTClient` constructor: +You can pass your API key via the environment variable :code:`MASSIVE_API_KEY` or as the first parameter to the :code:`RESTClient` constructor: .. code-block:: python - from polygon import RESTClient + from massive import RESTClient - client = RESTClient() # POLYGON_API_KEY is used + client = RESTClient() # MASSIVE_API_KEY is used client = RESTClient("api_key") # api_key is used For non-paginated endpoints call :code:`get_*`: @@ -41,7 +41,7 @@ For endpoints that have a set of parameters you can use the provided :doc:`enums .. code-block:: python - from polygon.rest.models import Sort + from massive.rest.models import Sort client.list_trades(..., sort=Sort.ASC) @@ -60,7 +60,7 @@ To provide your own JSON processing library (exposing loads/dumps functions) pas WebSocket client usage ---------------------- -.. automethod:: polygon.WebSocketClient.__init__ +.. automethod:: massive.WebSocketClient.__init__ The simplest way to use the websocket client is to just provide a callback: diff --git a/docs/source/Models.rst b/docs/source/Models.rst index f0eed1c7..393c8d74 100644 --- a/docs/source/Models.rst +++ b/docs/source/Models.rst @@ -6,214 +6,214 @@ Models ============================================================== Universal Snapshot ============================================================== -.. autoclass:: polygon.rest.models.UniversalSnapshot +.. autoclass:: massive.rest.models.UniversalSnapshot ============================================================== Universal Snapshot Session ============================================================== -.. autoclass:: polygon.rest.models.UniversalSnapshotSession +.. autoclass:: massive.rest.models.UniversalSnapshotSession ============================================================== Universal Snapshot Last Quote ============================================================== -.. autoclass:: polygon.rest.models.UniversalSnapshotLastQuote +.. autoclass:: massive.rest.models.UniversalSnapshotLastQuote ============================================================== Universal Snapshot Last Trade ============================================================== -.. autoclass:: polygon.rest.models.UniversalSnapshotLastTrade +.. autoclass:: massive.rest.models.UniversalSnapshotLastTrade ============================================================== Universal Snapshot Details ============================================================== -.. autoclass:: polygon.rest.models.UniversalSnapshotDetails +.. autoclass:: massive.rest.models.UniversalSnapshotDetails ============================================================== Universal Snapshot Underlying Asset ============================================================== -.. autoclass:: polygon.rest.models.UniversalSnapshotUnderlyingAsset +.. autoclass:: massive.rest.models.UniversalSnapshotUnderlyingAsset ============================================================== Agg ============================================================== -.. autoclass:: polygon.rest.models.Agg +.. autoclass:: massive.rest.models.Agg ============================================================== Grouped Daily Agg ============================================================== -.. autoclass:: polygon.rest.models.GroupedDailyAgg +.. autoclass:: massive.rest.models.GroupedDailyAgg ============================================================== Daily Open Close Agg ============================================================== -.. autoclass:: polygon.rest.models.DailyOpenCloseAgg +.. autoclass:: massive.rest.models.DailyOpenCloseAgg ============================================================== Previous Close Agg ============================================================== -.. autoclass:: polygon.rest.models.PreviousCloseAgg +.. autoclass:: massive.rest.models.PreviousCloseAgg ============================================================== Trade ============================================================== -.. autoclass:: polygon.rest.models.Trade +.. autoclass:: massive.rest.models.Trade ============================================================== Last Trade ============================================================== -.. autoclass:: polygon.rest.models.LastTrade +.. autoclass:: massive.rest.models.LastTrade ============================================================== Crypto Trade ============================================================== -.. autoclass:: polygon.rest.models.CryptoTrade +.. autoclass:: massive.rest.models.CryptoTrade ============================================================== Quote ============================================================== -.. autoclass:: polygon.rest.models.Quote +.. autoclass:: massive.rest.models.Quote ============================================================== Last Quote ============================================================== -.. autoclass:: polygon.rest.models.LastQuote +.. autoclass:: massive.rest.models.LastQuote ============================================================== Snapshot Min ============================================================== -.. autoclass:: polygon.rest.models.MinuteSnapshot +.. autoclass:: massive.rest.models.MinuteSnapshot ============================================================== Snapshot ============================================================== -.. autoclass:: polygon.rest.models.TickerSnapshot +.. autoclass:: massive.rest.models.TickerSnapshot ============================================================== Day Option Contract Snapshot ============================================================== -.. autoclass:: polygon.rest.models.DayOptionContractSnapshot +.. autoclass:: massive.rest.models.DayOptionContractSnapshot ============================================================== Option Details ============================================================== -.. autoclass:: polygon.rest.models.OptionDetails +.. autoclass:: massive.rest.models.OptionDetails ============================================================== Option Greeks ============================================================== -.. autoclass:: polygon.rest.models.Greeks +.. autoclass:: massive.rest.models.Greeks ============================================================== Underlying Asset ============================================================== -.. autoclass:: polygon.rest.models.UnderlyingAsset +.. autoclass:: massive.rest.models.UnderlyingAsset ============================================================== Option Contract Snapshot ============================================================== -.. autoclass:: polygon.rest.models.OptionContractSnapshot +.. autoclass:: massive.rest.models.OptionContractSnapshot ============================================================== Order Book Quote ============================================================== -.. autoclass:: polygon.rest.models.OrderBookQuote +.. autoclass:: massive.rest.models.OrderBookQuote ============================================================== Snapshot Ticker Full Book ============================================================== -.. autoclass:: polygon.rest.models.SnapshotTickerFullBook +.. autoclass:: massive.rest.models.SnapshotTickerFullBook ============================================================== Ticker ============================================================== -.. autoclass:: polygon.rest.models.Ticker +.. autoclass:: massive.rest.models.Ticker ============================================================== Address ============================================================== -.. autoclass:: polygon.rest.models.CompanyAddress +.. autoclass:: massive.rest.models.CompanyAddress ============================================================== Branding ============================================================== -.. autoclass:: polygon.rest.models.Branding +.. autoclass:: massive.rest.models.Branding ============================================================== Publisher ============================================================== -.. autoclass:: polygon.rest.models.Publisher +.. autoclass:: massive.rest.models.Publisher ============================================================== Ticker Details ============================================================== -.. autoclass:: polygon.rest.models.TickerDetails +.. autoclass:: massive.rest.models.TickerDetails ============================================================== Ticker News ============================================================== -.. autoclass:: polygon.rest.models.TickerNews +.. autoclass:: massive.rest.models.TickerNews ============================================================== Ticker Types ============================================================== -.. autoclass:: polygon.rest.models.TickerTypes +.. autoclass:: massive.rest.models.TickerTypes ============================================================== Market Holiday ============================================================== -.. autoclass:: polygon.rest.models.MarketHoliday +.. autoclass:: massive.rest.models.MarketHoliday ============================================================== Market Currencies ============================================================== -.. autoclass:: polygon.rest.models.MarketCurrencies +.. autoclass:: massive.rest.models.MarketCurrencies ============================================================== Market Exchanges ============================================================== -.. autoclass:: polygon.rest.models.MarketExchanges +.. autoclass:: massive.rest.models.MarketExchanges ============================================================== Market Status ============================================================== -.. autoclass:: polygon.rest.models.MarketStatus +.. autoclass:: massive.rest.models.MarketStatus ============================================================== Split ============================================================== -.. autoclass:: polygon.rest.models.Split +.. autoclass:: massive.rest.models.Split ============================================================== Dividend ============================================================== -.. autoclass:: polygon.rest.models.Dividend +.. autoclass:: massive.rest.models.Dividend ============================================================== Sip Mapping ============================================================== -.. autoclass:: polygon.rest.models.SipMapping +.. autoclass:: massive.rest.models.SipMapping ============================================================== Consolidated ============================================================== -.. autoclass:: polygon.rest.models.Consolidated +.. autoclass:: massive.rest.models.Consolidated ============================================================== Market Center ============================================================== -.. autoclass:: polygon.rest.models.MarketCenter +.. autoclass:: massive.rest.models.MarketCenter ============================================================== Update Rules ============================================================== -.. autoclass:: polygon.rest.models.UpdateRules +.. autoclass:: massive.rest.models.UpdateRules ============================================================== Condition ============================================================== -.. autoclass:: polygon.rest.models.Condition +.. autoclass:: massive.rest.models.Condition ============================================================== Exchange ============================================================== -.. autoclass:: polygon.rest.models.Exchange +.. autoclass:: massive.rest.models.Exchange diff --git a/docs/source/Quotes.rst b/docs/source/Quotes.rst index 2ef22574..92fbf128 100644 --- a/docs/source/Quotes.rst +++ b/docs/source/Quotes.rst @@ -11,7 +11,7 @@ List quotes - `Options quotes`_ - `Forex quotes`_ -.. automethod:: polygon.RESTClient.list_quotes +.. automethod:: massive.RESTClient.list_quotes ================================= Get last quote @@ -19,7 +19,7 @@ Get last quote - `Stocks last quote`_ -.. automethod:: polygon.RESTClient.get_last_quote +.. automethod:: massive.RESTClient.get_last_quote ================================= Get last forex quote @@ -27,7 +27,7 @@ Get last forex quote - `Forex last quote for a currency pair`_ -.. automethod:: polygon.RESTClient.get_last_forex_quote +.. automethod:: massive.RESTClient.get_last_forex_quote ================================= Get real-time currency conversion @@ -35,11 +35,11 @@ Get real-time currency conversion - `Forex real-time currency conversion`_ -.. automethod:: polygon.RESTClient.get_real_time_currency_conversion +.. automethod:: massive.RESTClient.get_real_time_currency_conversion -.. _Stocks quotes: https://polygon.io/docs/stocks/get_v3_quotes__stockticker -.. _Options quotes: https://polygon.io/docs/options/get_v3_quotes__optionsticker -.. _Forex quotes: https://polygon.io/docs/forex/get_v3_quotes__fxticker -.. _Stocks last quote: https://polygon.io/docs/stocks/get_v2_last_nbbo__stocksticker -.. _Forex last quote for a currency pair: https://polygon.io/docs/forex/get_v1_last_quote_currencies__from___to -.. _Forex real-time currency conversion: https://polygon.io/docs/forex/get_v1_conversion__from___to +.. _Stocks quotes: https://massive.com/docs/stocks/get_v3_quotes__stockticker +.. _Options quotes: https://massive.com/docs/options/get_v3_quotes__optionsticker +.. _Forex quotes: https://massive.com/docs/forex/get_v3_quotes__fxticker +.. _Stocks last quote: https://massive.com/docs/stocks/get_v2_last_nbbo__stocksticker +.. _Forex last quote for a currency pair: https://massive.com/docs/forex/get_v1_last_quote_currencies__from___to +.. _Forex real-time currency conversion: https://massive.com/docs/forex/get_v1_conversion__from___to diff --git a/docs/source/Reference.rst b/docs/source/Reference.rst index 3b7bd3d3..a497ece4 100644 --- a/docs/source/Reference.rst +++ b/docs/source/Reference.rst @@ -12,7 +12,7 @@ Get market holidays - `Forex market holidays`_ - `Crypto market holidays`_ -.. automethod:: polygon.RESTClient.get_market_holidays +.. automethod:: massive.RESTClient.get_market_holidays ==================== Get market status @@ -23,7 +23,7 @@ Get market status - `Forex market status`_ - `Crypto market status`_ -.. automethod:: polygon.RESTClient.get_market_status +.. automethod:: massive.RESTClient.get_market_status ==================== List tickers @@ -34,7 +34,7 @@ List tickers - `Forex tickers`_ - `Crypto tickers`_ -.. automethod:: polygon.RESTClient.list_tickers +.. automethod:: massive.RESTClient.list_tickers ==================== Get ticker details @@ -43,7 +43,7 @@ Get ticker details - `Stocks ticker details`_ - `Options ticker details`_ -.. automethod:: polygon.RESTClient.get_ticker_details +.. automethod:: massive.RESTClient.get_ticker_details ==================== List ticker news @@ -52,7 +52,7 @@ List ticker news - `Stocks ticker news`_ - `Options ticker news`_ -.. automethod:: polygon.RESTClient.list_ticker_news +.. automethod:: massive.RESTClient.list_ticker_news ==================== Get ticker types @@ -61,7 +61,7 @@ Get ticker types - `Stocks ticker types`_ - `Options ticker types`_ -.. automethod:: polygon.RESTClient.get_ticker_types +.. automethod:: massive.RESTClient.get_ticker_types ==================== List splits @@ -69,7 +69,7 @@ List splits - `Stocks splits`_ -.. automethod:: polygon.RESTClient.list_splits +.. automethod:: massive.RESTClient.list_splits ==================== List dividends @@ -77,7 +77,7 @@ List dividends - `Stocks dividends`_ -.. automethod:: polygon.RESTClient.list_dividends +.. automethod:: massive.RESTClient.list_dividends ==================== List conditions @@ -88,7 +88,7 @@ List conditions - `Forex conditions`_ - `Crypto conditions`_ -.. automethod:: polygon.RESTClient.list_conditions +.. automethod:: massive.RESTClient.list_conditions ==================== Get exchanges @@ -99,33 +99,33 @@ Get exchanges - `Forex exchanges`_ - `Crypto exchanges`_ -.. automethod:: polygon.RESTClient.get_exchanges - -.. _Stocks market holidays: https://polygon.io/docs/stocks/get_v1_marketstatus_upcoming -.. _Options market holidays: https://polygon.io/docs/options/get_v1_marketstatus_upcoming -.. _Forex market holidays: https://polygon.io/docs/forex/get_v1_marketstatus_upcoming -.. _Crypto market holidays: https://polygon.io/docs/crypto/get_v1_marketstatus_upcoming -.. _Stocks market status: https://polygon.io/docs/stocks/get_v1_marketstatus_now -.. _Options market status: https://polygon.io/docs/options/get_v1_marketstatus_now -.. _Forex market status: https://polygon.io/docs/forex/get_v1_marketstatus_now -.. _Crypto market status: https://polygon.io/docs/crypto/get_v1_marketstatus_now -.. _Stocks tickers: https://polygon.io/docs/stocks/get_v3_reference_tickers -.. _Options tickers: https://polygon.io/docs/options/get_v3_reference_tickers -.. _Forex tickers: https://polygon.io/docs/forex/get_v3_reference_tickers -.. _Crypto tickers: https://polygon.io/docs/crypto/get_v3_reference_tickers -.. _Stocks ticker details: https://polygon.io/docs/stocks/get_v3_reference_tickers__ticker -.. _Options ticker details: https://polygon.io/docs/options/get_v3_reference_tickers__ticker -.. _Stocks ticker news: https://polygon.io/docs/stocks/get_v2_reference_news -.. _Options ticker news: https://polygon.io/docs/options/get_v2_reference_news -.. _Stocks ticker types: https://polygon.io/docs/stocks/get_v3_reference_tickers_types -.. _Options ticker types: https://polygon.io/docs/options/get_v3_reference_tickers_types -.. _Stocks splits: https://polygon.io/docs/stocks/get_v3_reference_splits -.. _Stocks dividends: https://polygon.io/docs/stocks/get_v3_reference_dividends -.. _Stocks conditions: https://polygon.io/docs/stocks/get_v3_reference_conditions -.. _Options conditions: https://polygon.io/docs/options/get_v3_reference_conditions -.. _Forex conditions: https://polygon.io/docs/forex/get_v3_reference_conditions -.. _Crypto conditions: https://polygon.io/docs/crypto/get_v3_reference_conditions -.. _Stocks exchanges: https://polygon.io/docs/stocks/get_v3_reference_exchanges -.. _Options exchanges: https://polygon.io/docs/options/get_v3_reference_exchanges -.. _Forex exchanges: https://polygon.io/docs/forex/get_v3_reference_exchanges -.. _Crypto exchanges: https://polygon.io/docs/crypto/get_v3_reference_exchanges \ No newline at end of file +.. automethod:: massive.RESTClient.get_exchanges + +.. _Stocks market holidays: https://massive.com/docs/stocks/get_v1_marketstatus_upcoming +.. _Options market holidays: https://massive.com/docs/options/get_v1_marketstatus_upcoming +.. _Forex market holidays: https://massive.com/docs/forex/get_v1_marketstatus_upcoming +.. _Crypto market holidays: https://massive.com/docs/crypto/get_v1_marketstatus_upcoming +.. _Stocks market status: https://massive.com/docs/stocks/get_v1_marketstatus_now +.. _Options market status: https://massive.com/docs/options/get_v1_marketstatus_now +.. _Forex market status: https://massive.com/docs/forex/get_v1_marketstatus_now +.. _Crypto market status: https://massive.com/docs/crypto/get_v1_marketstatus_now +.. _Stocks tickers: https://massive.com/docs/stocks/get_v3_reference_tickers +.. _Options tickers: https://massive.com/docs/options/get_v3_reference_tickers +.. _Forex tickers: https://massive.com/docs/forex/get_v3_reference_tickers +.. _Crypto tickers: https://massive.com/docs/crypto/get_v3_reference_tickers +.. _Stocks ticker details: https://massive.com/docs/stocks/get_v3_reference_tickers__ticker +.. _Options ticker details: https://massive.com/docs/options/get_v3_reference_tickers__ticker +.. _Stocks ticker news: https://massive.com/docs/stocks/get_v2_reference_news +.. _Options ticker news: https://massive.com/docs/options/get_v2_reference_news +.. _Stocks ticker types: https://massive.com/docs/stocks/get_v3_reference_tickers_types +.. _Options ticker types: https://massive.com/docs/options/get_v3_reference_tickers_types +.. _Stocks splits: https://massive.com/docs/stocks/get_v3_reference_splits +.. _Stocks dividends: https://massive.com/docs/stocks/get_v3_reference_dividends +.. _Stocks conditions: https://massive.com/docs/stocks/get_v3_reference_conditions +.. _Options conditions: https://massive.com/docs/options/get_v3_reference_conditions +.. _Forex conditions: https://massive.com/docs/forex/get_v3_reference_conditions +.. _Crypto conditions: https://massive.com/docs/crypto/get_v3_reference_conditions +.. _Stocks exchanges: https://massive.com/docs/stocks/get_v3_reference_exchanges +.. _Options exchanges: https://massive.com/docs/options/get_v3_reference_exchanges +.. _Forex exchanges: https://massive.com/docs/forex/get_v3_reference_exchanges +.. _Crypto exchanges: https://massive.com/docs/crypto/get_v3_reference_exchanges \ No newline at end of file diff --git a/docs/source/Snapshot.rst b/docs/source/Snapshot.rst index 7744ba1c..7268e209 100644 --- a/docs/source/Snapshot.rst +++ b/docs/source/Snapshot.rst @@ -12,7 +12,7 @@ Get snapshots for all asset types - `Forex snapshot all tickers`_ - `Crypto snapshot all tickers`_ -.. automethod:: polygon.RESTClient.list_universal_snapshots +.. automethod:: massive.RESTClient.list_universal_snapshots ================================= Get all snapshots @@ -22,7 +22,7 @@ Get all snapshots - `Forex snapshot all tickers (deprecated)`_ - `Crypto snapshot all tickers (deprecated)`_ -.. automethod:: polygon.RESTClient.get_snapshot_all +.. automethod:: massive.RESTClient.get_snapshot_all ================================= Get gainers/losers snapshot @@ -32,7 +32,7 @@ Get gainers/losers snapshot - `Forex snapshot gainers/losers`_ - `Crypto snapshot gainers/losers`_ -.. automethod:: polygon.RESTClient.get_snapshot_direction +.. automethod:: massive.RESTClient.get_snapshot_direction ================================= Get ticker snapshot @@ -42,7 +42,7 @@ Get ticker snapshot - `Forex snapshot ticker`_ - `Crypto snapshot ticker`_ -.. automethod:: polygon.RESTClient.get_snapshot_ticker +.. automethod:: massive.RESTClient.get_snapshot_ticker ================================= Get options snapshot @@ -50,7 +50,7 @@ Get options snapshot - `Options snapshot option contract`_ -.. automethod:: polygon.RESTClient.get_snapshot_option +.. automethod:: massive.RESTClient.get_snapshot_option ================================= Get crypto L2 book snapshot @@ -58,21 +58,21 @@ Get crypto L2 book snapshot - `Crypto snapshot ticker full book (L2)`_ -.. automethod:: polygon.RESTClient.get_snapshot_crypto_book - -.. _Stocks snapshot all tickers: https://polygon.io/docs/stocks/get_v3_snapshot -.. _Options snapshot all tickers: https://polygon.io/docs/options/get_v3_snapshot -.. _Forex snapshot all tickers: https://polygon.io/docs/forex/get_v3_snapshot -.. _Crypto snapshot all tickers:: https://polygon.io/docs/crypto/get_v3_snapshot -.. _Stocks snapshot all tickers (deprecated): https://polygon.io/docs/stocks/get_v2_snapshot_locale_us_markets_stocks_tickers -.. _Options snapshot all tickers (deprecated): https://polygon.io/docs/options/get_v2_snapshot_locale_us_markets_stocks_tickers -.. _Forex snapshot all tickers (deprecated): https://polygon.io/docs/forex/get_v2_snapshot_locale_global_markets_forex_tickers -.. _Crypto snapshot all tickers (deprecated):: https://polygon.io/docs/crypto/get_v2_snapshot_locale_global_markets_crypto_tickers -.. _Stocks snapshot gainers/losers: https://polygon.io/docs/stocks/get_v2_snapshot_locale_us_markets_stocks__direction -.. _Forex snapshot gainers/losers: https://polygon.io/docs/forex/get_v2_snapshot_locale_global_markets_forex__direction -.. _Crypto snapshot gainers/losers: https://polygon.io/docs/crypto/get_v2_snapshot_locale_global_markets_crypto__direction -.. _Stocks snapshot ticker: https://polygon.io/docs/stocks/get_v2_snapshot_locale_us_markets_stocks_tickers__stocksticker -.. _Forex snapshot ticker: https://polygon.io/docs/forex/get_v2_snapshot_locale_global_markets_forex_tickers__ticker -.. _Crypto snapshot ticker: https://polygon.io/docs/crypto/get_v2_snapshot_locale_global_markets_crypto_tickers__ticker -.. _Options snapshot option contract: https://polygon.io/docs/options/get_v3_snapshot_options__underlyingasset___optioncontract -.. _Crypto snapshot ticker full book (L2): https://polygon.io/docs/crypto/get_v2_snapshot_locale_global_markets_crypto_tickers__ticker__book \ No newline at end of file +.. automethod:: massive.RESTClient.get_snapshot_crypto_book + +.. _Stocks snapshot all tickers: https://massive.com/docs/stocks/get_v3_snapshot +.. _Options snapshot all tickers: https://massive.com/docs/options/get_v3_snapshot +.. _Forex snapshot all tickers: https://massive.com/docs/forex/get_v3_snapshot +.. _Crypto snapshot all tickers:: https://massive.com/docs/crypto/get_v3_snapshot +.. _Stocks snapshot all tickers (deprecated): https://massive.com/docs/stocks/get_v2_snapshot_locale_us_markets_stocks_tickers +.. _Options snapshot all tickers (deprecated): https://massive.com/docs/options/get_v2_snapshot_locale_us_markets_stocks_tickers +.. _Forex snapshot all tickers (deprecated): https://massive.com/docs/forex/get_v2_snapshot_locale_global_markets_forex_tickers +.. _Crypto snapshot all tickers (deprecated):: https://massive.com/docs/crypto/get_v2_snapshot_locale_global_markets_crypto_tickers +.. _Stocks snapshot gainers/losers: https://massive.com/docs/stocks/get_v2_snapshot_locale_us_markets_stocks__direction +.. _Forex snapshot gainers/losers: https://massive.com/docs/forex/get_v2_snapshot_locale_global_markets_forex__direction +.. _Crypto snapshot gainers/losers: https://massive.com/docs/crypto/get_v2_snapshot_locale_global_markets_crypto__direction +.. _Stocks snapshot ticker: https://massive.com/docs/stocks/get_v2_snapshot_locale_us_markets_stocks_tickers__stocksticker +.. _Forex snapshot ticker: https://massive.com/docs/forex/get_v2_snapshot_locale_global_markets_forex_tickers__ticker +.. _Crypto snapshot ticker: https://massive.com/docs/crypto/get_v2_snapshot_locale_global_markets_crypto_tickers__ticker +.. _Options snapshot option contract: https://massive.com/docs/options/get_v3_snapshot_options__underlyingasset___optioncontract +.. _Crypto snapshot ticker full book (L2): https://massive.com/docs/crypto/get_v2_snapshot_locale_global_markets_crypto_tickers__ticker__book \ No newline at end of file diff --git a/docs/source/Trades.rst b/docs/source/Trades.rst index 5d6e6992..817b97a3 100644 --- a/docs/source/Trades.rst +++ b/docs/source/Trades.rst @@ -11,7 +11,7 @@ List trades - `Options trades`_ - `Crypto trades`_ -.. automethod:: polygon.RESTClient.list_trades +.. automethod:: massive.RESTClient.list_trades ================================================================== Get last trade @@ -20,7 +20,7 @@ Get last trade - `Stocks last trade`_ - `Options last trade`_ -.. automethod:: polygon.RESTClient.get_last_trade +.. automethod:: massive.RESTClient.get_last_trade ================================================================== Get last crypto trade @@ -28,11 +28,11 @@ Get last crypto trade - `Crypto last trade for crypto pair`_ -.. automethod:: polygon.RESTClient.get_last_crypto_trade +.. automethod:: massive.RESTClient.get_last_crypto_trade -.. _Stocks trades: https://polygon.io/docs/stocks/get_v3_trades__stockticker -.. _Options trades: https://polygon.io/docs/options/get_v3_trades__optionsticker -.. _Crypto trades: https://polygon.io/docs/crypto/get_v3_trades__cryptoticker -.. _Stocks last trade: https://polygon.io/docs/stocks/get_v2_last_trade__stocksticker -.. _Options last trade: https://polygon.io/docs/options/get_v2_last_trade__optionsticker -.. _Crypto last trade for crypto pair: https://polygon.io/docs/crypto/get_v1_last_crypto__from___to \ No newline at end of file +.. _Stocks trades: https://massive.com/docs/stocks/get_v3_trades__stockticker +.. _Options trades: https://massive.com/docs/options/get_v3_trades__optionsticker +.. _Crypto trades: https://massive.com/docs/crypto/get_v3_trades__cryptoticker +.. _Stocks last trade: https://massive.com/docs/stocks/get_v2_last_trade__stocksticker +.. _Options last trade: https://massive.com/docs/options/get_v2_last_trade__optionsticker +.. _Crypto last trade for crypto pair: https://massive.com/docs/crypto/get_v1_last_crypto__from___to \ No newline at end of file diff --git a/docs/source/WebSocket-Enums.rst b/docs/source/WebSocket-Enums.rst index dc2fd199..7e4b5f93 100644 --- a/docs/source/WebSocket-Enums.rst +++ b/docs/source/WebSocket-Enums.rst @@ -6,20 +6,20 @@ WebSocket Enums ============================================================== Feed ============================================================== -.. autoclass:: polygon.websocket.models.Feed +.. autoclass:: massive.websocket.models.Feed :members: :undoc-members: ============================================================== Market ============================================================== -.. autoclass:: polygon.websocket.models.Market +.. autoclass:: massive.websocket.models.Market :members: :undoc-members: ============================================================== EventType ============================================================== -.. autoclass:: polygon.websocket.models.EventType +.. autoclass:: massive.websocket.models.EventType :members: :undoc-members: \ No newline at end of file diff --git a/docs/source/WebSocket.rst b/docs/source/WebSocket.rst index 5f508122..c624d9d2 100644 --- a/docs/source/WebSocket.rst +++ b/docs/source/WebSocket.rst @@ -11,35 +11,35 @@ WebSocket =========== Init client =========== -.. automethod:: polygon.WebSocketClient.__init__ +.. automethod:: massive.WebSocketClient.__init__ :noindex: ============================ Connect ============================ -.. automethod:: polygon.WebSocketClient.connect +.. automethod:: massive.WebSocketClient.connect ============================ Run ============================ -.. automethod:: polygon.WebSocketClient.run +.. automethod:: massive.WebSocketClient.run ============================ Subscribe ============================ -.. automethod:: polygon.WebSocketClient.subscribe +.. automethod:: massive.WebSocketClient.subscribe ============================ Unsubscribe ============================ -.. automethod:: polygon.WebSocketClient.unsubscribe +.. automethod:: massive.WebSocketClient.unsubscribe ============================ Close ============================ -.. automethod:: polygon.WebSocketClient.close +.. automethod:: massive.WebSocketClient.close -.. _Stocks getting started: https://polygon.io/docs/stocks/ws_getting-started -.. _Options getting started: https://polygon.io/docs/options/ws_getting-started -.. _Forex getting started: https://polygon.io/docs/forex/ws_getting-started -.. _Crypto getting started: https://polygon.io/docs/crypto/ws_getting-started \ No newline at end of file +.. _Stocks getting started: https://massive.com/docs/stocks/ws_getting-started +.. _Options getting started: https://massive.com/docs/options/ws_getting-started +.. _Forex getting started: https://massive.com/docs/forex/ws_getting-started +.. _Crypto getting started: https://massive.com/docs/crypto/ws_getting-started \ No newline at end of file diff --git a/docs/source/conf.py b/docs/source/conf.py index 235ee004..4ebf65d2 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -14,13 +14,13 @@ import sys sys.path.insert(0, os.path.abspath('../..')) print('docs path', sys.path[0]) -os.environ['POLYGON_API_KEY'] = 'POLYGON_API_KEY' +os.environ['MASSIVE_API_KEY'] = 'MASSIVE_API_KEY' # -- Project information ----------------------------------------------------- -project = 'polygon-api-client' -copyright = '2022, Polygon.io' -author = 'Polygon.io' +project = 'massive-api-client' +copyright = '2022, Massive.com' +author = 'Massive.com' # The full version, including alpha/beta/rc tags release = '0.3.0' diff --git a/docs/source/index.rst b/docs/source/index.rst index b445b803..7bb2b316 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -1,7 +1,7 @@ -Welcome to polygon-api-client's documentation! +Welcome to massive-api-client's documentation! ============================================== -This documentation is for the Python client only. For details about the responses see `the official docs `_. +This documentation is for the Python client only. For details about the responses see `the official docs `_. .. toctree:: :maxdepth: 1 diff --git a/docs/source/vX.rst b/docs/source/vX.rst index 69a25311..f6a9125b 100644 --- a/docs/source/vX.rst +++ b/docs/source/vX.rst @@ -14,6 +14,6 @@ List stock financials - `Stocks financials vX`_ -.. automethod:: polygon.rest.VXClient.list_stock_financials +.. automethod:: massive.rest.VXClient.list_stock_financials -.. _Stocks financials vX: https://polygon.io/docs/stocks/get_vx_reference_financials +.. _Stocks financials vX: https://massive.com/docs/stocks/get_vx_reference_financials diff --git a/examples/launchpad/README.md b/examples/launchpad/README.md index 53301593..5a0c3bd3 100644 --- a/examples/launchpad/README.md +++ b/examples/launchpad/README.md @@ -5,8 +5,8 @@ Users of the Launchpad product will need to pass in certain headers in order to ```python # import RESTClient -from polygon import RESTClient -from polygon.rest.models.request import RequestOptionBuilder +from massive import RESTClient +from massive.rest.models.request import RequestOptionBuilder # create client c = RESTClient(api_key="API_KEY") @@ -27,8 +27,8 @@ Launchpad users can also provide the optional User Agent value describing their ```python # import RESTClient -from polygon import RESTClient -from polygon.rest.models.request import RequestOptionBuilder +from massive import RESTClient +from massive.rest.models.request import RequestOptionBuilder # create client c = RESTClient(api_key="API_KEY") diff --git a/examples/launchpad/launchpad.py b/examples/launchpad/launchpad.py index 6c6fbe35..6bd2306c 100644 --- a/examples/launchpad/launchpad.py +++ b/examples/launchpad/launchpad.py @@ -1,5 +1,5 @@ -from polygon import RESTClient -from polygon.rest.models.request import RequestOptionBuilder +from massive import RESTClient +from massive.rest.models.request import RequestOptionBuilder def get_list_trades_launchpad(): diff --git a/examples/rest/bulk_aggs_downloader.py b/examples/rest/bulk_aggs_downloader.py index c5c6099e..89df0765 100644 --- a/examples/rest/bulk_aggs_downloader.py +++ b/examples/rest/bulk_aggs_downloader.py @@ -1,7 +1,7 @@ import datetime import concurrent.futures import logging -from polygon import RESTClient +from massive import RESTClient import signal import sys import pickle @@ -10,7 +10,7 @@ """ This script performs the following tasks: -1. Downloads aggregated market data (referred to as 'aggs') for specific stock symbols using the Polygon API. +1. Downloads aggregated market data (referred to as 'aggs') for specific stock symbols using the Massive API. 2. Handles data for multiple dates and performs these operations in parallel to improve efficiency. 3. Saves the downloaded data in a compressed format (LZ4) using Python's pickle serialization. 4. Utilizes logging to track its progress and any potential errors. @@ -18,7 +18,7 @@ Usage: 1. pip install lz4 -2. Set your Polygon API key in the environment variable 'POLYGON_API_KEY'. +2. Set your Massive API key in the environment variable 'MASSIVE_API_KEY'. 3. Specify the date range and stock symbols you are interested in within the script. 4. Run the script. @@ -43,7 +43,7 @@ def get_aggs_for_symbol_and_date(symbol_date_pair): """Retrieve aggs for a given symbol and date""" symbol, date = symbol_date_pair aggs = [] - client = RESTClient(trace=True) # Uses POLYGON_API_KEY environment variable + client = RESTClient(trace=True) # Uses MASSIVE_API_KEY environment variable for a in client.list_aggs( symbol, diff --git a/examples/rest/crypto-aggregates_bars.py b/examples/rest/crypto-aggregates_bars.py index a3831aeb..443ce21d 100644 --- a/examples/rest/crypto-aggregates_bars.py +++ b/examples/rest/crypto-aggregates_bars.py @@ -1,20 +1,20 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/crypto/get_v2_aggs_ticker__cryptoticker__range__multiplier___timespan___from___to -# https://polygon-api-client.readthedocs.io/en/latest/Aggs.html#polygon.RESTClient.list_aggs +# https://massive.com/docs/crypto/get_v2_aggs_ticker__cryptoticker__range__multiplier___timespan___from___to +# https://massive-api-client.readthedocs.io/en/latest/Aggs.html#massive.RESTClient.list_aggs # API key injected below for easy use. If not provided, the script will attempt -# to use the environment variable "POLYGON_API_KEY". +# to use the environment variable "MASSIVE_API_KEY". # -# setx POLYGON_API_KEY "" <- windows -# export POLYGON_API_KEY="" <- mac/linux +# setx MASSIVE_API_KEY "" <- windows +# export MASSIVE_API_KEY="" <- mac/linux # # Note: To persist the environment variable you need to add the above command # to the shell startup script (e.g. .bashrc or .bash_profile. # # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used aggs = [] for a in client.list_aggs( diff --git a/examples/rest/crypto-conditions.py b/examples/rest/crypto-conditions.py index 93e3feda..339d53f0 100644 --- a/examples/rest/crypto-conditions.py +++ b/examples/rest/crypto-conditions.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/crypto/get_v3_reference_conditions -# https://polygon-api-client.readthedocs.io/en/latest/Reference.html#list-conditions +# https://massive.com/docs/crypto/get_v3_reference_conditions +# https://massive-api-client.readthedocs.io/en/latest/Reference.html#list-conditions # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used conditions = [] for c in client.list_conditions("crypto", limit=1000): diff --git a/examples/rest/crypto-daily_open_close.py b/examples/rest/crypto-daily_open_close.py index 8ff3ad41..5c29db0c 100644 --- a/examples/rest/crypto-daily_open_close.py +++ b/examples/rest/crypto-daily_open_close.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/crypto/get_v1_open-close_crypto__from___to___date -# https://polygon-api-client.readthedocs.io/en/latest/Aggs.html#get-daily-open-close-agg +# https://massive.com/docs/crypto/get_v1_open-close_crypto__from___to___date +# https://massive-api-client.readthedocs.io/en/latest/Aggs.html#get-daily-open-close-agg # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used # make request request = client.get_daily_open_close_agg( diff --git a/examples/rest/crypto-exchanges.py b/examples/rest/crypto-exchanges.py index cf0a46d0..8a592d55 100644 --- a/examples/rest/crypto-exchanges.py +++ b/examples/rest/crypto-exchanges.py @@ -1,14 +1,14 @@ -from polygon import RESTClient -from polygon.rest.models import ( +from massive import RESTClient +from massive.rest.models import ( Exchange, ) # docs -# https://polygon.io/docs/crypto/get_v3_reference_exchanges -# https://polygon-api-client.readthedocs.io/en/latest/Reference.html#get-exchanges +# https://massive.com/docs/crypto/get_v3_reference_exchanges +# https://massive-api-client.readthedocs.io/en/latest/Reference.html#get-exchanges # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used exchanges = client.get_exchanges("crypto") print(exchanges) diff --git a/examples/rest/crypto-grouped_daily_bars.py b/examples/rest/crypto-grouped_daily_bars.py index ec1bdb81..4ebd3d36 100644 --- a/examples/rest/crypto-grouped_daily_bars.py +++ b/examples/rest/crypto-grouped_daily_bars.py @@ -1,12 +1,12 @@ -from polygon import RESTClient +from massive import RESTClient import pprint # docs -# https://polygon.io/docs/crypto/get_v2_aggs_grouped_locale_global_market_crypto__date -# https://polygon-api-client.readthedocs.io/en/latest/Aggs.html#get-grouped-daily-aggs +# https://massive.com/docs/crypto/get_v2_aggs_grouped_locale_global_market_crypto__date +# https://massive-api-client.readthedocs.io/en/latest/Aggs.html#get-grouped-daily-aggs # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used grouped = client.get_grouped_daily_aggs( "2023-01-09", locale="global", market_type="crypto" diff --git a/examples/rest/crypto-last_trade_for_a_crypto_pair.py b/examples/rest/crypto-last_trade_for_a_crypto_pair.py index 850bd98a..ef75efaa 100644 --- a/examples/rest/crypto-last_trade_for_a_crypto_pair.py +++ b/examples/rest/crypto-last_trade_for_a_crypto_pair.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/crypto/get_v1_last_crypto__from___to -# https://polygon-api-client.readthedocs.io/en/latest/Trades.html#get-last-crypto-trade +# https://massive.com/docs/crypto/get_v1_last_crypto__from___to +# https://massive-api-client.readthedocs.io/en/latest/Trades.html#get-last-crypto-trade # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used trade = client.get_last_crypto_trade("BTC", "USD") diff --git a/examples/rest/crypto-market_holidays.py b/examples/rest/crypto-market_holidays.py index 6d1df168..740bbc71 100644 --- a/examples/rest/crypto-market_holidays.py +++ b/examples/rest/crypto-market_holidays.py @@ -1,14 +1,14 @@ -from polygon import RESTClient -from polygon.rest.models import ( +from massive import RESTClient +from massive.rest.models import ( MarketHoliday, ) # docs -# https://polygon.io/docs/crypto/get_v1_marketstatus_upcoming -# https://polygon-api-client.readthedocs.io/en/latest/Reference.html#get-market-holidays +# https://massive.com/docs/crypto/get_v1_marketstatus_upcoming +# https://massive-api-client.readthedocs.io/en/latest/Reference.html#get-market-holidays # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used holidays = client.get_market_holidays() # print(holidays) diff --git a/examples/rest/crypto-market_status.py b/examples/rest/crypto-market_status.py index 4265997c..d58d6180 100644 --- a/examples/rest/crypto-market_status.py +++ b/examples/rest/crypto-market_status.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/crypto/get_v1_marketstatus_now -# https://polygon-api-client.readthedocs.io/en/latest/Reference.html#get-market-status +# https://massive.com/docs/crypto/get_v1_marketstatus_now +# https://massive-api-client.readthedocs.io/en/latest/Reference.html#get-market-status # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used result = client.get_market_status() print(result) diff --git a/examples/rest/crypto-previous_close.py b/examples/rest/crypto-previous_close.py index bf309fed..b4fd4cea 100644 --- a/examples/rest/crypto-previous_close.py +++ b/examples/rest/crypto-previous_close.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/crypto/get_v2_aggs_ticker__cryptoticker__prev -# https://polygon-api-client.readthedocs.io/en/latest/Aggs.html#get-previous-close-agg +# https://massive.com/docs/crypto/get_v2_aggs_ticker__cryptoticker__prev +# https://massive-api-client.readthedocs.io/en/latest/Aggs.html#get-previous-close-agg # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used aggs = client.get_previous_close_agg( "X:BTCUSD", diff --git a/examples/rest/crypto-snapshots_all_tickers.py b/examples/rest/crypto-snapshots_all_tickers.py index 9bb06621..5c5c8e70 100644 --- a/examples/rest/crypto-snapshots_all_tickers.py +++ b/examples/rest/crypto-snapshots_all_tickers.py @@ -1,15 +1,15 @@ -from polygon import RESTClient -from polygon.rest.models import ( +from massive import RESTClient +from massive.rest.models import ( TickerSnapshot, Agg, ) # docs -# https://polygon.io/docs/crypto/get_v2_snapshot_locale_global_markets_crypto_tickers -# https://polygon-api-client.readthedocs.io/en/latest/Snapshot.html#get-all-snapshots +# https://massive.com/docs/crypto/get_v2_snapshot_locale_global_markets_crypto_tickers +# https://massive-api-client.readthedocs.io/en/latest/Snapshot.html#get-all-snapshots # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used snapshot = client.get_snapshot_all("crypto") # all tickers diff --git a/examples/rest/crypto-snapshots_gainers_losers.py b/examples/rest/crypto-snapshots_gainers_losers.py index 34db190b..5ced0e6d 100644 --- a/examples/rest/crypto-snapshots_gainers_losers.py +++ b/examples/rest/crypto-snapshots_gainers_losers.py @@ -1,14 +1,14 @@ -from polygon import RESTClient -from polygon.rest.models import ( +from massive import RESTClient +from massive.rest.models import ( TickerSnapshot, ) # docs -# https://polygon.io/docs/crypto/get_v2_snapshot_locale_global_markets_crypto__direction -# https://polygon-api-client.readthedocs.io/en/latest/Snapshot.html#get-gainers-losers-snapshot +# https://massive.com/docs/crypto/get_v2_snapshot_locale_global_markets_crypto__direction +# https://massive-api-client.readthedocs.io/en/latest/Snapshot.html#get-gainers-losers-snapshot # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used # get gainers gainers = client.get_snapshot_direction("crypto", "gainers") diff --git a/examples/rest/crypto-snapshots_ticker.py b/examples/rest/crypto-snapshots_ticker.py index 31a48ebd..36e639d2 100644 --- a/examples/rest/crypto-snapshots_ticker.py +++ b/examples/rest/crypto-snapshots_ticker.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/crypto/get_v2_snapshot_locale_global_markets_crypto_tickers__ticker -# https://polygon-api-client.readthedocs.io/en/latest/Snapshot.html#get-ticker-snapshot +# https://massive.com/docs/crypto/get_v2_snapshot_locale_global_markets_crypto_tickers__ticker +# https://massive-api-client.readthedocs.io/en/latest/Snapshot.html#get-ticker-snapshot # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used ticker = client.get_snapshot_ticker("crypto", "X:BTCUSD") print(ticker) diff --git a/examples/rest/crypto-snapshots_ticker_full_book_l2.py b/examples/rest/crypto-snapshots_ticker_full_book_l2.py index 38d239cf..b8b9157c 100644 --- a/examples/rest/crypto-snapshots_ticker_full_book_l2.py +++ b/examples/rest/crypto-snapshots_ticker_full_book_l2.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/crypto/get_v2_snapshot_locale_global_markets_crypto_tickers__ticker__book -# https://polygon-api-client.readthedocs.io/en/latest/Snapshot.html#get-crypto-l2-book-snapshot +# https://massive.com/docs/crypto/get_v2_snapshot_locale_global_markets_crypto_tickers__ticker__book +# https://massive-api-client.readthedocs.io/en/latest/Snapshot.html#get-crypto-l2-book-snapshot # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used snapshot = client.get_snapshot_crypto_book("X:BTCUSD") diff --git a/examples/rest/crypto-technical_indicators_ema.py b/examples/rest/crypto-technical_indicators_ema.py index 49958006..1eb50c20 100644 --- a/examples/rest/crypto-technical_indicators_ema.py +++ b/examples/rest/crypto-technical_indicators_ema.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/crypto/get_v1_indicators_ema__cryptoticker -# https://github.com/polygon-io/client-python/blob/master/polygon/rest/indicators.py +# https://massive.com/docs/crypto/get_v1_indicators_ema__cryptoticker +# https://github.com/massive-com/client-python/blob/master/massive/rest/indicators.py # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used ema = client.get_ema( ticker="X:BTCUSD", diff --git a/examples/rest/crypto-technical_indicators_macd.py b/examples/rest/crypto-technical_indicators_macd.py index ee168d0f..17c25bb7 100644 --- a/examples/rest/crypto-technical_indicators_macd.py +++ b/examples/rest/crypto-technical_indicators_macd.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/crypto/get_v1_indicators_macd__cryptoticker -# https://github.com/polygon-io/client-python/blob/master/polygon/rest/indicators.py +# https://massive.com/docs/crypto/get_v1_indicators_macd__cryptoticker +# https://github.com/massive-com/client-python/blob/master/massive/rest/indicators.py # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used macd = client.get_macd( ticker="X:BTCUSD", diff --git a/examples/rest/crypto-technical_indicators_rsi.py b/examples/rest/crypto-technical_indicators_rsi.py index 1eb3c01f..d490d879 100644 --- a/examples/rest/crypto-technical_indicators_rsi.py +++ b/examples/rest/crypto-technical_indicators_rsi.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/crypto/get_v1_indicators_rsi__cryptoticker -# https://github.com/polygon-io/client-python/blob/master/polygon/rest/indicators.py +# https://massive.com/docs/crypto/get_v1_indicators_rsi__cryptoticker +# https://github.com/massive-com/client-python/blob/master/massive/rest/indicators.py # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used rsi = client.get_rsi( ticker="X:BTCUSD", diff --git a/examples/rest/crypto-technical_indicators_sma.py b/examples/rest/crypto-technical_indicators_sma.py index e8d503fc..255291c0 100644 --- a/examples/rest/crypto-technical_indicators_sma.py +++ b/examples/rest/crypto-technical_indicators_sma.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/crypto/get_v1_indicators_sma__cryptoticker -# https://github.com/polygon-io/client-python/blob/master/polygon/rest/indicators.py +# https://massive.com/docs/crypto/get_v1_indicators_sma__cryptoticker +# https://github.com/massive-com/client-python/blob/master/massive/rest/indicators.py # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used sma = client.get_sma( ticker="X:BTCUSD", diff --git a/examples/rest/crypto-tickers.py b/examples/rest/crypto-tickers.py index 8eb07170..9052e487 100644 --- a/examples/rest/crypto-tickers.py +++ b/examples/rest/crypto-tickers.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/crypto/get_v3_reference_tickers -# https://polygon-api-client.readthedocs.io/en/latest/Reference.html#list-tickers +# https://massive.com/docs/crypto/get_v3_reference_tickers +# https://massive-api-client.readthedocs.io/en/latest/Reference.html#list-tickers # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used tickers = [] for t in client.list_tickers(market="crypto", limit=1000): diff --git a/examples/rest/crypto-trades.py b/examples/rest/crypto-trades.py index 7cafd989..d76182af 100644 --- a/examples/rest/crypto-trades.py +++ b/examples/rest/crypto-trades.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/crypto/get_v3_trades__cryptoticker -# https://polygon-api-client.readthedocs.io/en/latest/Trades.html#polygon.RESTClient.list_trades +# https://massive.com/docs/crypto/get_v3_trades__cryptoticker +# https://massive-api-client.readthedocs.io/en/latest/Trades.html#massive.RESTClient.list_trades # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used trades = [] for t in client.list_trades("X:BTC-USD", "2023-02-01", limit=50000): diff --git a/examples/rest/custom-json-get.py b/examples/rest/custom-json-get.py index c10d0a03..5ea5c400 100644 --- a/examples/rest/custom-json-get.py +++ b/examples/rest/custom-json-get.py @@ -1,4 +1,4 @@ -from polygon import RESTClient +from massive import RESTClient # type: ignore import orjson diff --git a/examples/rest/demo_correlation_matrix.py b/examples/rest/demo_correlation_matrix.py index df939590..f3ae4298 100644 --- a/examples/rest/demo_correlation_matrix.py +++ b/examples/rest/demo_correlation_matrix.py @@ -1,11 +1,11 @@ """ This script computes and visualizes the correlation matrix of a selected set of -stocks using Polygon's API. This script is for educational purposes only and is +stocks using Massive's API. This script is for educational purposes only and is not intended to provide investment advice. The examples provided analyze the correlation between different stocks from diverse sectors, as well as within specific sectors. -Blog: https://polygon.io/blog/finding-correlation-between-stocks/ +Blog: https://massive.com/blog/finding-correlation-between-stocks/ Video: https://www.youtube.com/watch?v=q0TgaUGWPFc Before running this script, there are 4 prerequisites: @@ -16,17 +16,17 @@ - numpy - seaborn - matplotlib.pyplot - - polygon's python-client library + - massive's python-client library You can likely run: - pip install pandas numpy seaborn matplotlib polygon-api-client + pip install pandas numpy seaborn matplotlib massive-api-client -2) API Key: You will need a Polygon API key to fetch the stock data. This can +2) API Key: You will need a Massive API key to fetch the stock data. This can be set manually in the script below, or you can set an environment variable - 'POLYGON_API_KEY'. + 'MASSIVE_API_KEY'. - setx POLYGON_API_KEY "" <- windows - export POLYGON_API_KEY="" <- mac/linux + setx MASSIVE_API_KEY "" <- windows + export MASSIVE_API_KEY="" <- mac/linux 3) Select Stocks: You need to select the stocks you're interested in analyzing. Update the 'symbols' variable in this script with your chosen stock symbols. @@ -45,7 +45,7 @@ import numpy as np # type: ignore import seaborn as sns # type: ignore import matplotlib.pyplot as plt # type: ignore -from polygon import RESTClient +from massive import RESTClient # Less likely to be correlated due to being in different sectors and are # exposed to different market forces, economic trends, and price risks. @@ -69,7 +69,7 @@ def fetch_stock_data(symbols, start_date, end_date): stocks = [] # client = RESTClient("XXXXXX") # hardcoded api_key is used - client = RESTClient() # POLYGON_API_KEY environment variable is used + client = RESTClient() # MASSIVE_API_KEY environment variable is used try: for symbol in symbols: diff --git a/examples/rest/economy-treasury_yields.py b/examples/rest/economy-treasury_yields.py index 7be77fcf..fe4d79f7 100644 --- a/examples/rest/economy-treasury_yields.py +++ b/examples/rest/economy-treasury_yields.py @@ -1,10 +1,10 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/rest/economy/treasury-yields +# https://massive.com/docs/rest/economy/treasury-yields # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used yields = [] for date in client.list_treasury_yields(): diff --git a/examples/rest/financials.py b/examples/rest/financials.py index f9e6dad5..4dc21668 100644 --- a/examples/rest/financials.py +++ b/examples/rest/financials.py @@ -1,4 +1,4 @@ -from polygon import RESTClient +from massive import RESTClient client = RESTClient() diff --git a/examples/rest/forex-aggregates_bars.py b/examples/rest/forex-aggregates_bars.py index b7ab233d..7e9c770f 100644 --- a/examples/rest/forex-aggregates_bars.py +++ b/examples/rest/forex-aggregates_bars.py @@ -1,20 +1,20 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/forex/get_v2_aggs_ticker__forexticker__range__multiplier___timespan___from___to -# https://polygon-api-client.readthedocs.io/en/latest/Aggs.html#polygon.RESTClient.list_aggs +# https://massive.com/docs/forex/get_v2_aggs_ticker__forexticker__range__multiplier___timespan___from___to +# https://massive-api-client.readthedocs.io/en/latest/Aggs.html#massive.RESTClient.list_aggs # API key injected below for easy use. If not provided, the script will attempt -# to use the environment variable "POLYGON_API_KEY". +# to use the environment variable "MASSIVE_API_KEY". # -# setx POLYGON_API_KEY "" <- windows -# export POLYGON_API_KEY="" <- mac/linux +# setx MASSIVE_API_KEY "" <- windows +# export MASSIVE_API_KEY="" <- mac/linux # # Note: To persist the environment variable you need to add the above command # to the shell startup script (e.g. .bashrc or .bash_profile. # # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used aggs = [] for a in client.list_aggs( diff --git a/examples/rest/forex-conditions.py b/examples/rest/forex-conditions.py index fca1e887..9fed0838 100644 --- a/examples/rest/forex-conditions.py +++ b/examples/rest/forex-conditions.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/forex/get_v3_reference_conditions -# https://polygon-api-client.readthedocs.io/en/latest/Reference.html#list-conditions +# https://massive.com/docs/forex/get_v3_reference_conditions +# https://massive-api-client.readthedocs.io/en/latest/Reference.html#list-conditions # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used conditions = [] for c in client.list_conditions("fx", limit=1000): diff --git a/examples/rest/forex-exchanges.py b/examples/rest/forex-exchanges.py index e85b3425..a816a053 100644 --- a/examples/rest/forex-exchanges.py +++ b/examples/rest/forex-exchanges.py @@ -1,14 +1,14 @@ -from polygon import RESTClient -from polygon.rest.models import ( +from massive import RESTClient +from massive.rest.models import ( Exchange, ) # docs -# https://polygon.io/docs/options/get_v3_reference_exchanges -# https://polygon-api-client.readthedocs.io/en/latest/Reference.html#get-exchanges +# https://massive.com/docs/options/get_v3_reference_exchanges +# https://massive-api-client.readthedocs.io/en/latest/Reference.html#get-exchanges # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used exchanges = client.get_exchanges("fx") print(exchanges) diff --git a/examples/rest/forex-grouped_daily_bars.py b/examples/rest/forex-grouped_daily_bars.py index f8130877..452faa4b 100644 --- a/examples/rest/forex-grouped_daily_bars.py +++ b/examples/rest/forex-grouped_daily_bars.py @@ -1,12 +1,12 @@ -from polygon import RESTClient +from massive import RESTClient import pprint # docs -# https://polygon.io/docs/forex/get_v2_aggs_grouped_locale_global_market_fx__date -# https://polygon-api-client.readthedocs.io/en/latest/Aggs.html#get-grouped-daily-aggs +# https://massive.com/docs/forex/get_v2_aggs_grouped_locale_global_market_fx__date +# https://massive-api-client.readthedocs.io/en/latest/Aggs.html#get-grouped-daily-aggs # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used grouped = client.get_grouped_daily_aggs( "2023-03-27", diff --git a/examples/rest/forex-last_quote_for_a_currency_pair.py b/examples/rest/forex-last_quote_for_a_currency_pair.py index 8b3c78b1..bf349732 100644 --- a/examples/rest/forex-last_quote_for_a_currency_pair.py +++ b/examples/rest/forex-last_quote_for_a_currency_pair.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/forex/get_v1_last_quote_currencies__from___to -# https://polygon-api-client.readthedocs.io/en/latest/Quotes.html#get-last-forex-quote +# https://massive.com/docs/forex/get_v1_last_quote_currencies__from___to +# https://massive-api-client.readthedocs.io/en/latest/Quotes.html#get-last-forex-quote # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used quote = client.get_last_forex_quote( "AUD", diff --git a/examples/rest/forex-market_holidays.py b/examples/rest/forex-market_holidays.py index 70c03f44..df3b8bb4 100644 --- a/examples/rest/forex-market_holidays.py +++ b/examples/rest/forex-market_holidays.py @@ -1,14 +1,14 @@ -from polygon import RESTClient -from polygon.rest.models import ( +from massive import RESTClient +from massive.rest.models import ( MarketHoliday, ) # docs -# https://polygon.io/docs/forex/get_v1_marketstatus_upcoming -# https://polygon-api-client.readthedocs.io/en/latest/Reference.html#get-market-holidays +# https://massive.com/docs/forex/get_v1_marketstatus_upcoming +# https://massive-api-client.readthedocs.io/en/latest/Reference.html#get-market-holidays # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used holidays = client.get_market_holidays() # print(holidays) diff --git a/examples/rest/forex-market_status.py b/examples/rest/forex-market_status.py index 06f544cc..f5d6a451 100644 --- a/examples/rest/forex-market_status.py +++ b/examples/rest/forex-market_status.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/forex/get_v1_marketstatus_now -# https://polygon-api-client.readthedocs.io/en/latest/Reference.html#get-market-status +# https://massive.com/docs/forex/get_v1_marketstatus_now +# https://massive-api-client.readthedocs.io/en/latest/Reference.html#get-market-status # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used result = client.get_market_status() print(result) diff --git a/examples/rest/forex-previous_close.py b/examples/rest/forex-previous_close.py index 0de11709..e6896afe 100644 --- a/examples/rest/forex-previous_close.py +++ b/examples/rest/forex-previous_close.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/forex/get_v2_aggs_ticker__forexticker__prev -# https://polygon-api-client.readthedocs.io/en/latest/Aggs.html#get-previous-close-agg +# https://massive.com/docs/forex/get_v2_aggs_ticker__forexticker__prev +# https://massive-api-client.readthedocs.io/en/latest/Aggs.html#get-previous-close-agg # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used aggs = client.get_previous_close_agg( "C:EURUSD", diff --git a/examples/rest/forex-quotes.py b/examples/rest/forex-quotes.py index 880ebca8..36e8a7de 100644 --- a/examples/rest/forex-quotes.py +++ b/examples/rest/forex-quotes.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/forex/get_v3_quotes__fxticker -# https://polygon-api-client.readthedocs.io/en/latest/Quotes.html#list-quotes +# https://massive.com/docs/forex/get_v3_quotes__fxticker +# https://massive-api-client.readthedocs.io/en/latest/Quotes.html#list-quotes # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used quotes = [] for t in client.list_quotes("C:EUR-USD", "2023-02-01", limit=50000): diff --git a/examples/rest/forex-real-time_currency_conversion.py b/examples/rest/forex-real-time_currency_conversion.py index b50099c9..77590dac 100644 --- a/examples/rest/forex-real-time_currency_conversion.py +++ b/examples/rest/forex-real-time_currency_conversion.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/forex/get_v1_conversion__from___to -# https://polygon-api-client.readthedocs.io/en/latest/Quotes.html#get-real-time-currency-conversion +# https://massive.com/docs/forex/get_v1_conversion__from___to +# https://massive-api-client.readthedocs.io/en/latest/Quotes.html#get-real-time-currency-conversion # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used rate = client.get_real_time_currency_conversion( "AUD", diff --git a/examples/rest/forex-snapshots_all_tickers.py b/examples/rest/forex-snapshots_all_tickers.py index 8e0ec6bd..b61f5eda 100644 --- a/examples/rest/forex-snapshots_all_tickers.py +++ b/examples/rest/forex-snapshots_all_tickers.py @@ -1,15 +1,15 @@ -from polygon import RESTClient -from polygon.rest.models import ( +from massive import RESTClient +from massive.rest.models import ( TickerSnapshot, Agg, ) # docs -# https://polygon.io/docs/forex/get_v2_snapshot_locale_global_markets_forex_tickers -# https://polygon-api-client.readthedocs.io/en/latest/Snapshot.html#get-all-snapshots +# https://massive.com/docs/forex/get_v2_snapshot_locale_global_markets_forex_tickers +# https://massive-api-client.readthedocs.io/en/latest/Snapshot.html#get-all-snapshots # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used snapshot = client.get_snapshot_all("forex") # all tickers diff --git a/examples/rest/forex-snapshots_gainers_losers.py b/examples/rest/forex-snapshots_gainers_losers.py index dd064e63..9fc7e36a 100644 --- a/examples/rest/forex-snapshots_gainers_losers.py +++ b/examples/rest/forex-snapshots_gainers_losers.py @@ -1,14 +1,14 @@ -from polygon import RESTClient -from polygon.rest.models import ( +from massive import RESTClient +from massive.rest.models import ( TickerSnapshot, ) # docs -# https://polygon.io/docs/forex/get_v2_snapshot_locale_global_markets_forex__direction -# https://polygon-api-client.readthedocs.io/en/latest/Snapshot.html#get-gainers-losers-snapshot +# https://massive.com/docs/forex/get_v2_snapshot_locale_global_markets_forex__direction +# https://massive-api-client.readthedocs.io/en/latest/Snapshot.html#get-gainers-losers-snapshot # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used # get gainers gainers = client.get_snapshot_direction("forex", "gainers") diff --git a/examples/rest/forex-snapshots_ticker.py b/examples/rest/forex-snapshots_ticker.py index 9dbfc0ff..f8cb5562 100644 --- a/examples/rest/forex-snapshots_ticker.py +++ b/examples/rest/forex-snapshots_ticker.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/forex/get_v2_snapshot_locale_global_markets_forex_tickers__ticker -# https://polygon-api-client.readthedocs.io/en/latest/Snapshot.html#get-ticker-snapshot +# https://massive.com/docs/forex/get_v2_snapshot_locale_global_markets_forex_tickers__ticker +# https://massive-api-client.readthedocs.io/en/latest/Snapshot.html#get-ticker-snapshot # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used ticker = client.get_snapshot_ticker("forex", "C:EURUSD") print(ticker) diff --git a/examples/rest/forex-technical_indicators_ema.py b/examples/rest/forex-technical_indicators_ema.py index ba67ee87..2521e36d 100644 --- a/examples/rest/forex-technical_indicators_ema.py +++ b/examples/rest/forex-technical_indicators_ema.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/forex/get_v1_indicators_ema__fxticker -# https://github.com/polygon-io/client-python/blob/master/polygon/rest/indicators.py +# https://massive.com/docs/forex/get_v1_indicators_ema__fxticker +# https://github.com/massive-com/client-python/blob/master/massive/rest/indicators.py # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used ema = client.get_ema( ticker="C:EURUSD", diff --git a/examples/rest/forex-technical_indicators_macd.py b/examples/rest/forex-technical_indicators_macd.py index ee32c4b1..8c07521c 100644 --- a/examples/rest/forex-technical_indicators_macd.py +++ b/examples/rest/forex-technical_indicators_macd.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/forex/get_v1_indicators_macd__fxticker -# https://github.com/polygon-io/client-python/blob/master/polygon/rest/indicators.py +# https://massive.com/docs/forex/get_v1_indicators_macd__fxticker +# https://github.com/massive-com/client-python/blob/master/massive/rest/indicators.py # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used macd = client.get_macd( ticker="C:EURUSD", diff --git a/examples/rest/forex-technical_indicators_rsi.py b/examples/rest/forex-technical_indicators_rsi.py index a63185d4..5ec4d6f2 100644 --- a/examples/rest/forex-technical_indicators_rsi.py +++ b/examples/rest/forex-technical_indicators_rsi.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/forex/get_v1_indicators_rsi__fxticker -# https://github.com/polygon-io/client-python/blob/master/polygon/rest/indicators.py +# https://massive.com/docs/forex/get_v1_indicators_rsi__fxticker +# https://github.com/massive-com/client-python/blob/master/massive/rest/indicators.py # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used rsi = client.get_rsi( ticker="C:EURUSD", diff --git a/examples/rest/forex-technical_indicators_sma.py b/examples/rest/forex-technical_indicators_sma.py index cd4aab2f..51ede4d2 100644 --- a/examples/rest/forex-technical_indicators_sma.py +++ b/examples/rest/forex-technical_indicators_sma.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/forex/get_v1_indicators_sma__fxticker -# https://github.com/polygon-io/client-python/blob/master/polygon/rest/indicators.py +# https://massive.com/docs/forex/get_v1_indicators_sma__fxticker +# https://github.com/massive-com/client-python/blob/master/massive/rest/indicators.py # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used sma = client.get_sma( ticker="C:EURUSD", diff --git a/examples/rest/forex-tickers.py b/examples/rest/forex-tickers.py index c1736721..10c49b6f 100644 --- a/examples/rest/forex-tickers.py +++ b/examples/rest/forex-tickers.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/forex/get_v3_reference_tickers -# https://polygon-api-client.readthedocs.io/en/latest/Reference.html#list-tickers +# https://massive.com/docs/forex/get_v3_reference_tickers +# https://massive-api-client.readthedocs.io/en/latest/Reference.html#list-tickers # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used tickers = [] for t in client.list_tickers(market="fx", limit=1000): diff --git a/examples/rest/indices-aggregates_bars.py b/examples/rest/indices-aggregates_bars.py index b2b561ad..ddb9f9cd 100644 --- a/examples/rest/indices-aggregates_bars.py +++ b/examples/rest/indices-aggregates_bars.py @@ -1,20 +1,20 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/indices/get_v2_aggs_ticker__indicesticker__range__multiplier___timespan___from___to -# https://polygon-api-client.readthedocs.io/en/latest/Aggs.html#polygon.RESTClient.list_aggs +# https://massive.com/docs/indices/get_v2_aggs_ticker__indicesticker__range__multiplier___timespan___from___to +# https://massive-api-client.readthedocs.io/en/latest/Aggs.html#massive.RESTClient.list_aggs # API key injected below for easy use. If not provided, the script will attempt -# to use the environment variable "POLYGON_API_KEY". +# to use the environment variable "MASSIVE_API_KEY". # -# setx POLYGON_API_KEY "" <- windows -# export POLYGON_API_KEY="" <- mac/linux +# setx MASSIVE_API_KEY "" <- windows +# export MASSIVE_API_KEY="" <- mac/linux # # Note: To persist the environment variable you need to add the above command # to the shell startup script (e.g. .bashrc or .bash_profile. # # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used aggs = [] for a in client.list_aggs( diff --git a/examples/rest/indices-daily_open_close.py b/examples/rest/indices-daily_open_close.py index f84a51ab..85c0d405 100644 --- a/examples/rest/indices-daily_open_close.py +++ b/examples/rest/indices-daily_open_close.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/indices/get_v1_open-close__indicesticker___date -# https://polygon-api-client.readthedocs.io/en/latest/Aggs.html#get-daily-open-close-agg +# https://massive.com/docs/indices/get_v1_open-close__indicesticker___date +# https://massive-api-client.readthedocs.io/en/latest/Aggs.html#get-daily-open-close-agg # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used # make request request = client.get_daily_open_close_agg( diff --git a/examples/rest/indices-market_holidays.py b/examples/rest/indices-market_holidays.py index 0bf112d4..49fe6fd2 100644 --- a/examples/rest/indices-market_holidays.py +++ b/examples/rest/indices-market_holidays.py @@ -1,14 +1,14 @@ -from polygon import RESTClient -from polygon.rest.models import ( +from massive import RESTClient +from massive.rest.models import ( MarketHoliday, ) # docs -# https://polygon.io/docs/indices/get_v1_marketstatus_upcoming -# https://polygon-api-client.readthedocs.io/en/latest/Reference.html#get-market-holidays +# https://massive.com/docs/indices/get_v1_marketstatus_upcoming +# https://massive-api-client.readthedocs.io/en/latest/Reference.html#get-market-holidays # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used holidays = client.get_market_holidays() # print(holidays) diff --git a/examples/rest/indices-market_status.py b/examples/rest/indices-market_status.py index 6c74dee3..10296a94 100644 --- a/examples/rest/indices-market_status.py +++ b/examples/rest/indices-market_status.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/indices/get_v1_marketstatus_now -# https://polygon-api-client.readthedocs.io/en/latest/Reference.html#get-market-status +# https://massive.com/docs/indices/get_v1_marketstatus_now +# https://massive-api-client.readthedocs.io/en/latest/Reference.html#get-market-status # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used result = client.get_market_status() print(result) diff --git a/examples/rest/indices-previous_close.py b/examples/rest/indices-previous_close.py index 8774bd6e..18d7ceb5 100644 --- a/examples/rest/indices-previous_close.py +++ b/examples/rest/indices-previous_close.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/indices/get_v2_aggs_ticker__indicesticker__prev -# https://polygon-api-client.readthedocs.io/en/latest/Aggs.html#get-previous-close-agg +# https://massive.com/docs/indices/get_v2_aggs_ticker__indicesticker__prev +# https://massive-api-client.readthedocs.io/en/latest/Aggs.html#get-previous-close-agg # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used aggs = client.get_previous_close_agg( "I:SPX", diff --git a/examples/rest/indices-snapshots.py b/examples/rest/indices-snapshots.py index 407d2de1..5e85343f 100644 --- a/examples/rest/indices-snapshots.py +++ b/examples/rest/indices-snapshots.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/indices/get_v3_snapshot_indices -# https://github.com/polygon-io/client-python/blob/master/polygon/rest/snapshot.py# +# https://massive.com/docs/indices/get_v3_snapshot_indices +# https://github.com/massive-com/client-python/blob/master/massive/rest/snapshot.py# # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used tickers = ["I:SPX", "I:DJI", "I:VIX"] snapshot = client.get_snapshot_indices(tickers) diff --git a/examples/rest/indices-technical_indicators_ema.py b/examples/rest/indices-technical_indicators_ema.py index bacf9e85..35bc82ce 100644 --- a/examples/rest/indices-technical_indicators_ema.py +++ b/examples/rest/indices-technical_indicators_ema.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/indices/get_v1_indicators_ema__indicesticker -# https://github.com/polygon-io/client-python/blob/master/polygon/rest/indicators.py +# https://massive.com/docs/indices/get_v1_indicators_ema__indicesticker +# https://github.com/massive-com/client-python/blob/master/massive/rest/indicators.py # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used ema = client.get_ema( ticker="I:SPX", diff --git a/examples/rest/indices-technical_indicators_macd.py b/examples/rest/indices-technical_indicators_macd.py index bb3950d1..c64524b7 100644 --- a/examples/rest/indices-technical_indicators_macd.py +++ b/examples/rest/indices-technical_indicators_macd.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/indices/get_v1_indicators_macd__indicesticker -# https://github.com/polygon-io/client-python/blob/master/polygon/rest/indicators.py +# https://massive.com/docs/indices/get_v1_indicators_macd__indicesticker +# https://github.com/massive-com/client-python/blob/master/massive/rest/indicators.py # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used macd = client.get_macd( ticker="I:SPX", diff --git a/examples/rest/indices-technical_indicators_rsi.py b/examples/rest/indices-technical_indicators_rsi.py index ec5ca4d6..c8e3bce1 100644 --- a/examples/rest/indices-technical_indicators_rsi.py +++ b/examples/rest/indices-technical_indicators_rsi.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/indices/get_v1_indicators_rsi__indicesticker -# https://github.com/polygon-io/client-python/blob/master/polygon/rest/indicators.py +# https://massive.com/docs/indices/get_v1_indicators_rsi__indicesticker +# https://github.com/massive-com/client-python/blob/master/massive/rest/indicators.py # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used rsi = client.get_rsi( ticker="I:SPX", diff --git a/examples/rest/indices-technical_indicators_sma.py b/examples/rest/indices-technical_indicators_sma.py index 1dfa7b7f..709ec54b 100644 --- a/examples/rest/indices-technical_indicators_sma.py +++ b/examples/rest/indices-technical_indicators_sma.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/indices/get_v1_indicators_sma__indicesticker -# https://github.com/polygon-io/client-python/blob/master/polygon/rest/indicators.py +# https://massive.com/docs/indices/get_v1_indicators_sma__indicesticker +# https://github.com/massive-com/client-python/blob/master/massive/rest/indicators.py # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used sma = client.get_sma( ticker="I:SPX", diff --git a/examples/rest/indices-ticker_types.py b/examples/rest/indices-ticker_types.py index ec3277e9..dfe62a1b 100644 --- a/examples/rest/indices-ticker_types.py +++ b/examples/rest/indices-ticker_types.py @@ -1,16 +1,16 @@ from typing import Optional, Union, List from urllib3 import HTTPResponse -from polygon import RESTClient -from polygon.rest.models import ( +from massive import RESTClient +from massive.rest.models import ( TickerTypes, ) # docs -# https://polygon.io/docs/indices/get_v3_reference_tickers_types -# https://polygon-api-client.readthedocs.io/en/latest/Reference.html#get-ticker-types +# https://massive.com/docs/indices/get_v3_reference_tickers_types +# https://massive-api-client.readthedocs.io/en/latest/Reference.html#get-ticker-types # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used types: Optional[Union[List[TickerTypes], HTTPResponse]] = None diff --git a/examples/rest/indices-tickers.py b/examples/rest/indices-tickers.py index a0786f19..0270a9be 100644 --- a/examples/rest/indices-tickers.py +++ b/examples/rest/indices-tickers.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/indices/get_v3_reference_tickers -# https://polygon-api-client.readthedocs.io/en/latest/Reference.html#list-tickers +# https://massive.com/docs/indices/get_v3_reference_tickers +# https://massive-api-client.readthedocs.io/en/latest/Reference.html#list-tickers # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used tickers = [] for t in client.list_tickers(market="indices", limit=1000): diff --git a/examples/rest/options-aggregates_bars.py b/examples/rest/options-aggregates_bars.py index 62e3297b..71c5343f 100644 --- a/examples/rest/options-aggregates_bars.py +++ b/examples/rest/options-aggregates_bars.py @@ -1,20 +1,20 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/options/get_v2_aggs_ticker__optionsticker__range__multiplier___timespan___from___to -# https://polygon-api-client.readthedocs.io/en/latest/Aggs.html#polygon.RESTClient.list_aggs +# https://massive.com/docs/options/get_v2_aggs_ticker__optionsticker__range__multiplier___timespan___from___to +# https://massive-api-client.readthedocs.io/en/latest/Aggs.html#massive.RESTClient.list_aggs # API key injected below for easy use. If not provided, the script will attempt -# to use the environment variable "POLYGON_API_KEY". +# to use the environment variable "MASSIVE_API_KEY". # -# setx POLYGON_API_KEY "" <- windows -# export POLYGON_API_KEY="" <- mac/linux +# setx MASSIVE_API_KEY "" <- windows +# export MASSIVE_API_KEY="" <- mac/linux # # Note: To persist the environment variable you need to add the above command # to the shell startup script (e.g. .bashrc or .bash_profile. # # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used aggs = [] for a in client.list_aggs( diff --git a/examples/rest/options-conditions.py b/examples/rest/options-conditions.py index 3d72e3e7..30e40905 100644 --- a/examples/rest/options-conditions.py +++ b/examples/rest/options-conditions.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/options/get_v3_reference_conditions -# https://polygon-api-client.readthedocs.io/en/latest/Reference.html#list-conditions +# https://massive.com/docs/options/get_v3_reference_conditions +# https://massive-api-client.readthedocs.io/en/latest/Reference.html#list-conditions # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used conditions = [] for c in client.list_conditions("options", limit=1000): diff --git a/examples/rest/options-contract.py b/examples/rest/options-contract.py index f87c161e..84093aa1 100644 --- a/examples/rest/options-contract.py +++ b/examples/rest/options-contract.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/options/get_v3_reference_options_contracts__options_ticker -# https://polygon-api-client.readthedocs.io/en/latest/Contracts.html +# https://massive.com/docs/options/get_v3_reference_options_contracts__options_ticker +# https://massive-api-client.readthedocs.io/en/latest/Contracts.html # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used contract = client.get_options_contract("O:EVRI240119C00002500") diff --git a/examples/rest/options-contracts.py b/examples/rest/options-contracts.py index 34d7327b..08995c10 100644 --- a/examples/rest/options-contracts.py +++ b/examples/rest/options-contracts.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/options/get_v3_reference_options_contracts -# https://polygon-api-client.readthedocs.io/en/latest/Contracts.html#list-options-contracts +# https://massive.com/docs/options/get_v3_reference_options_contracts +# https://massive-api-client.readthedocs.io/en/latest/Contracts.html#list-options-contracts # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used contracts = [] for c in client.list_options_contracts("HCP"): diff --git a/examples/rest/options-daily_open_close.py b/examples/rest/options-daily_open_close.py index 54a700ce..7a756613 100644 --- a/examples/rest/options-daily_open_close.py +++ b/examples/rest/options-daily_open_close.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/options/get_v1_open-close__optionsticker___date -# https://polygon-api-client.readthedocs.io/en/latest/Aggs.html#get-daily-open-close-agg +# https://massive.com/docs/options/get_v1_open-close__optionsticker___date +# https://massive-api-client.readthedocs.io/en/latest/Aggs.html#get-daily-open-close-agg # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used # make request request = client.get_daily_open_close_agg( diff --git a/examples/rest/options-exchanges.py b/examples/rest/options-exchanges.py index 881eed3a..9678e19a 100644 --- a/examples/rest/options-exchanges.py +++ b/examples/rest/options-exchanges.py @@ -1,14 +1,14 @@ -from polygon import RESTClient -from polygon.rest.models import ( +from massive import RESTClient +from massive.rest.models import ( Exchange, ) # docs -# https://polygon.io/docs/options/get_v3_reference_exchanges -# https://polygon-api-client.readthedocs.io/en/latest/Reference.html#get-exchanges +# https://massive.com/docs/options/get_v3_reference_exchanges +# https://massive-api-client.readthedocs.io/en/latest/Reference.html#get-exchanges # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used exchanges = client.get_exchanges("options") print(exchanges) diff --git a/examples/rest/options-last_trade.py b/examples/rest/options-last_trade.py index bf3e7662..d24cc79d 100644 --- a/examples/rest/options-last_trade.py +++ b/examples/rest/options-last_trade.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/options/get_v2_last_trade__optionsticker -# https://polygon-api-client.readthedocs.io/en/latest/Trades.html#get-last-trade +# https://massive.com/docs/options/get_v2_last_trade__optionsticker +# https://massive-api-client.readthedocs.io/en/latest/Trades.html#get-last-trade # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used trade = client.get_last_trade( "O:TSLA210903C00700000", diff --git a/examples/rest/options-market_holidays.py b/examples/rest/options-market_holidays.py index d6b03ab2..134aff86 100644 --- a/examples/rest/options-market_holidays.py +++ b/examples/rest/options-market_holidays.py @@ -1,14 +1,14 @@ -from polygon import RESTClient -from polygon.rest.models import ( +from massive import RESTClient +from massive.rest.models import ( MarketHoliday, ) # docs -# https://polygon.io/docs/options/get_v1_marketstatus_upcoming -# https://polygon-api-client.readthedocs.io/en/latest/Reference.html#get-market-holidays +# https://massive.com/docs/options/get_v1_marketstatus_upcoming +# https://massive-api-client.readthedocs.io/en/latest/Reference.html#get-market-holidays # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used holidays = client.get_market_holidays() # print(holidays) diff --git a/examples/rest/options-market_status.py b/examples/rest/options-market_status.py index fb8e5ccd..8a8e7bfc 100644 --- a/examples/rest/options-market_status.py +++ b/examples/rest/options-market_status.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/options/get_v1_marketstatus_now -# https://polygon-api-client.readthedocs.io/en/latest/Reference.html#get-market-status +# https://massive.com/docs/options/get_v1_marketstatus_now +# https://massive-api-client.readthedocs.io/en/latest/Reference.html#get-market-status # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used result = client.get_market_status() print(result) diff --git a/examples/rest/options-previous_close.py b/examples/rest/options-previous_close.py index f7b9d06b..720dc9d0 100644 --- a/examples/rest/options-previous_close.py +++ b/examples/rest/options-previous_close.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/options/get_v2_aggs_ticker__optionsticker__prev -# https://polygon-api-client.readthedocs.io/en/latest/Aggs.html#get-previous-close-agg +# https://massive.com/docs/options/get_v2_aggs_ticker__optionsticker__prev +# https://massive-api-client.readthedocs.io/en/latest/Aggs.html#get-previous-close-agg # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used aggs = client.get_previous_close_agg( "O:SPY251219C00650000", diff --git a/examples/rest/options-quotes.py b/examples/rest/options-quotes.py index 71d2577a..1cdf9b8a 100644 --- a/examples/rest/options-quotes.py +++ b/examples/rest/options-quotes.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/options/get_v3_quotes__optionsticker -# https://polygon-api-client.readthedocs.io/en/latest/Quotes.html#list-quotes +# https://massive.com/docs/options/get_v3_quotes__optionsticker +# https://massive-api-client.readthedocs.io/en/latest/Quotes.html#list-quotes # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used quotes = [] for t in client.list_quotes("O:SPY241220P00720000", limit=50000): diff --git a/examples/rest/options-snapshots_option_contract.py b/examples/rest/options-snapshots_option_contract.py index 280e3315..bffc9ff4 100644 --- a/examples/rest/options-snapshots_option_contract.py +++ b/examples/rest/options-snapshots_option_contract.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/options/get_v3_snapshot_options__underlyingasset___optioncontract -# https://polygon-api-client.readthedocs.io/en/latest/Snapshot.html +# https://massive.com/docs/options/get_v3_snapshot_options__underlyingasset___optioncontract +# https://massive-api-client.readthedocs.io/en/latest/Snapshot.html # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used snapshot = client.get_snapshot_option("AAPL", "O:AAPL230616C00150000") diff --git a/examples/rest/options-snapshots_options_chain.py b/examples/rest/options-snapshots_options_chain.py index de890884..8b0c5f02 100644 --- a/examples/rest/options-snapshots_options_chain.py +++ b/examples/rest/options-snapshots_options_chain.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/options/get_v3_snapshot_options__underlyingasset -# https://polygon-api-client.readthedocs.io/en/latest/Snapshot.html#get-all-snapshots +# https://massive.com/docs/options/get_v3_snapshot_options__underlyingasset +# https://massive-api-client.readthedocs.io/en/latest/Snapshot.html#get-all-snapshots # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used options_chain = [] for o in client.list_snapshot_options_chain( diff --git a/examples/rest/options-technical_indicators_ema.py b/examples/rest/options-technical_indicators_ema.py index ff04ff76..82dd99d7 100644 --- a/examples/rest/options-technical_indicators_ema.py +++ b/examples/rest/options-technical_indicators_ema.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/options/get_v1_indicators_ema__optionsticker -# https://github.com/polygon-io/client-python/blob/master/polygon/rest/indicators.py +# https://massive.com/docs/options/get_v1_indicators_ema__optionsticker +# https://github.com/massive-com/client-python/blob/master/massive/rest/indicators.py # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used ema = client.get_ema( ticker="O:SPY241220P00720000", timespan="day", window=50, series_type="close" diff --git a/examples/rest/options-technical_indicators_macd.py b/examples/rest/options-technical_indicators_macd.py index e7961c8f..a49f78a1 100644 --- a/examples/rest/options-technical_indicators_macd.py +++ b/examples/rest/options-technical_indicators_macd.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/options/get_v1_indicators_macd__optionsticker -# https://github.com/polygon-io/client-python/blob/master/polygon/rest/indicators.py +# https://massive.com/docs/options/get_v1_indicators_macd__optionsticker +# https://github.com/massive-com/client-python/blob/master/massive/rest/indicators.py # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used macd = client.get_macd( ticker="O:SPY241220P00720000", diff --git a/examples/rest/options-technical_indicators_rsi.py b/examples/rest/options-technical_indicators_rsi.py index 4bf9ebde..0a92caec 100644 --- a/examples/rest/options-technical_indicators_rsi.py +++ b/examples/rest/options-technical_indicators_rsi.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/options/get_v1_indicators_rsi__optionsticker -# https://github.com/polygon-io/client-python/blob/master/polygon/rest/indicators.py +# https://massive.com/docs/options/get_v1_indicators_rsi__optionsticker +# https://github.com/massive-com/client-python/blob/master/massive/rest/indicators.py # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used rsi = client.get_rsi( ticker="O:SPY241220P00720000", timespan="day", window=14, series_type="close" diff --git a/examples/rest/options-technical_indicators_sma.py b/examples/rest/options-technical_indicators_sma.py index ce6f3d0c..a6f0870e 100644 --- a/examples/rest/options-technical_indicators_sma.py +++ b/examples/rest/options-technical_indicators_sma.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/options/get_v1_indicators_sma__optionsticker -# https://github.com/polygon-io/client-python/blob/master/polygon/rest/indicators.py +# https://massive.com/docs/options/get_v1_indicators_sma__optionsticker +# https://github.com/massive-com/client-python/blob/master/massive/rest/indicators.py # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used sma = client.get_sma( ticker="O:SPY241220P00720000", timespan="day", window=50, series_type="close" diff --git a/examples/rest/options-ticker_details.py b/examples/rest/options-ticker_details.py index 43d59156..fe742286 100644 --- a/examples/rest/options-ticker_details.py +++ b/examples/rest/options-ticker_details.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/options/get_v3_reference_tickers__ticker -# https://polygon-api-client.readthedocs.io/en/latest/Reference.html#get-ticker-details +# https://massive.com/docs/options/get_v3_reference_tickers__ticker +# https://massive-api-client.readthedocs.io/en/latest/Reference.html#get-ticker-details # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used details = client.get_ticker_details("TSLA") print(details) diff --git a/examples/rest/options-ticker_news.py b/examples/rest/options-ticker_news.py index be9497d7..76b36c03 100644 --- a/examples/rest/options-ticker_news.py +++ b/examples/rest/options-ticker_news.py @@ -1,14 +1,14 @@ -from polygon import RESTClient -from polygon.rest.models import ( +from massive import RESTClient +from massive.rest.models import ( TickerNews, ) # docs -# https://polygon.io/docs/options/get_v2_reference_news -# https://polygon-api-client.readthedocs.io/en/latest/Reference.html#list-ticker-news +# https://massive.com/docs/options/get_v2_reference_news +# https://massive-api-client.readthedocs.io/en/latest/Reference.html#list-ticker-news # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used news = [] for n in client.list_ticker_news("AAPL", order="desc", limit=1000): diff --git a/examples/rest/options-tickers.py b/examples/rest/options-tickers.py index d77ef641..4a5e1104 100644 --- a/examples/rest/options-tickers.py +++ b/examples/rest/options-tickers.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/options/get_v3_reference_tickers -# https://polygon-api-client.readthedocs.io/en/latest/Reference.html#list-tickers +# https://massive.com/docs/options/get_v3_reference_tickers +# https://massive-api-client.readthedocs.io/en/latest/Reference.html#list-tickers # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used tickers = [] for t in client.list_tickers(limit=1000): diff --git a/examples/rest/options-trades.py b/examples/rest/options-trades.py index 210362d5..8ff559ec 100644 --- a/examples/rest/options-trades.py +++ b/examples/rest/options-trades.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/options/get_v3_trades__optionsticker -# https://polygon-api-client.readthedocs.io/en/latest/Trades.html#polygon.RESTClient.list_trades +# https://massive.com/docs/options/get_v3_trades__optionsticker +# https://massive-api-client.readthedocs.io/en/latest/Trades.html#massive.RESTClient.list_trades # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used trades = [] for t in client.list_trades("O:TSLA210903C00700000", limit=50000): diff --git a/examples/rest/raw-get.py b/examples/rest/raw-get.py index 89800015..8eab428b 100644 --- a/examples/rest/raw-get.py +++ b/examples/rest/raw-get.py @@ -1,4 +1,4 @@ -from polygon import RESTClient +from massive import RESTClient from typing import cast from urllib3 import HTTPResponse @@ -16,7 +16,7 @@ ), ) print(aggs.geturl()) -# https://api.polygon.io/v2/aggs/ticker/AAPL/range/1/day/2022-04-01/2022-04-04 +# https://api.massive.com/v2/aggs/ticker/AAPL/range/1/day/2022-04-01/2022-04-04 print(aggs.status) # 200 print(aggs.data) diff --git a/examples/rest/raw-list.py b/examples/rest/raw-list.py index 9dd0020e..05455a1f 100644 --- a/examples/rest/raw-list.py +++ b/examples/rest/raw-list.py @@ -1,4 +1,4 @@ -from polygon import RESTClient +from massive import RESTClient from typing import cast from urllib3 import HTTPResponse @@ -79,5 +79,5 @@ # ], # "status": "OK", # "request_id": "618bb99e7a632ed9f55454a541404b44", -# "next_url": "https://api.polygon.io/v3/trades/AAA?cursor=YXA9NSZhcz0mbGltaXQ9NSZvcmRlcj1kZXNjJnNvcnQ9dGltZXN0YW1wJnRpbWVzdGFtcC5ndGU9MjAyMi0wNC0yMFQwNCUzQTAwJTNBMDBaJnRpbWVzdGFtcC5sdGU9MjAyMi0wNC0yMFQyMCUzQTEwJTNBMDAuMDAzODY5OTUyWg" +# "next_url": "https://api.massive.com/v3/trades/AAA?cursor=YXA9NSZhcz0mbGltaXQ9NSZvcmRlcj1kZXNjJnNvcnQ9dGltZXN0YW1wJnRpbWVzdGFtcC5ndGU9MjAyMi0wNC0yMFQwNCUzQTAwJTNBMDBaJnRpbWVzdGFtcC5sdGU9MjAyMi0wNC0yMFQyMCUzQTEwJTNBMDAuMDAzODY5OTUyWg" # }' diff --git a/examples/rest/simple-get.py b/examples/rest/simple-get.py index 8a9586ad..377943cc 100644 --- a/examples/rest/simple-get.py +++ b/examples/rest/simple-get.py @@ -1,5 +1,5 @@ -from polygon import RESTClient -from polygon.rest import models +from massive import RESTClient +from massive.rest import models client = RESTClient() diff --git a/examples/rest/simple-list.py b/examples/rest/simple-list.py index dc93f315..c83d3a89 100644 --- a/examples/rest/simple-list.py +++ b/examples/rest/simple-list.py @@ -1,4 +1,4 @@ -from polygon import RESTClient +from massive import RESTClient client = RESTClient() diff --git a/examples/rest/stocks-aggregates_bars.py b/examples/rest/stocks-aggregates_bars.py index c553b00e..3f2d0e59 100644 --- a/examples/rest/stocks-aggregates_bars.py +++ b/examples/rest/stocks-aggregates_bars.py @@ -1,20 +1,20 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/stocks/get_v2_aggs_ticker__stocksticker__range__multiplier___timespan___from___to -# https://polygon-api-client.readthedocs.io/en/latest/Aggs.html#polygon.RESTClient.list_aggs +# https://massive.com/docs/stocks/get_v2_aggs_ticker__stocksticker__range__multiplier___timespan___from___to +# https://massive-api-client.readthedocs.io/en/latest/Aggs.html#massive.RESTClient.list_aggs # API key injected below for easy use. If not provided, the script will attempt -# to use the environment variable "POLYGON_API_KEY". +# to use the environment variable "MASSIVE_API_KEY". # -# setx POLYGON_API_KEY "" <- windows -# export POLYGON_API_KEY="" <- mac/linux +# setx MASSIVE_API_KEY "" <- windows +# export MASSIVE_API_KEY="" <- mac/linux # # Note: To persist the environment variable you need to add the above command # to the shell startup script (e.g. .bashrc or .bash_profile. # # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used aggs = [] for a in client.list_aggs( diff --git a/examples/rest/stocks-aggregates_bars_extra.py b/examples/rest/stocks-aggregates_bars_extra.py index 4fd76c37..feeb3218 100644 --- a/examples/rest/stocks-aggregates_bars_extra.py +++ b/examples/rest/stocks-aggregates_bars_extra.py @@ -1,13 +1,13 @@ # This code retrieves stock market data for a specific stock using the -# Polygon REST API and writes it to a CSV file. It uses the "polygon" +# Massive REST API and writes it to a CSV file. It uses the "massive" # library to communicate with the API and the "csv" library to write # the data to a CSV file. The script retrieves data for the stock "AAPL" # for the dates "2023-01-30" to "2023-02-03" in 1 hour intervals. The # resulting data includes the open, high, low, close, volume, vwap, # timestamp, transactions, and otc values for each hour. The output is # then printed to the console. -from polygon import RESTClient -from polygon.rest.models import ( +from massive import RESTClient +from massive.rest.models import ( Agg, ) import csv @@ -15,11 +15,11 @@ import io # docs -# https://polygon.io/docs/stocks/get_v2_aggs_ticker__stocksticker__range__multiplier___timespan___from___to -# https://polygon-api-client.readthedocs.io/en/latest/Aggs.html#polygon.RESTClient.list_aggs +# https://massive.com/docs/stocks/get_v2_aggs_ticker__stocksticker__range__multiplier___timespan___from___to +# https://massive-api-client.readthedocs.io/en/latest/Aggs.html#massive.RESTClient.list_aggs # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used aggs = [] for a in client.list_aggs( diff --git a/examples/rest/stocks-aggregates_bars_highcharts.py b/examples/rest/stocks-aggregates_bars_highcharts.py index b2529972..4695ed9d 100644 --- a/examples/rest/stocks-aggregates_bars_highcharts.py +++ b/examples/rest/stocks-aggregates_bars_highcharts.py @@ -1,5 +1,5 @@ -from polygon import RESTClient -from polygon.rest.models import ( +from massive import RESTClient +from massive.rest.models import ( Agg, ) import datetime @@ -8,13 +8,13 @@ import traceback import json -# This program retrieves stock price data for the AAPL stock from the Polygon +# This program retrieves stock price data for the AAPL stock from the Massive # API using a REST client, and formats the data in a format expected by the # Highcharts JavaScript library. The program creates a web server that serves # an HTML page that includes a candlestick chart of the AAPL stock prices using # Highcharts. The chart displays data for the time range from January 1, 2019, # to February 16, 2023. The chart data is updated by retrieving the latest data -# from the Polygon API every time the HTML page is loaded or refreshed. The +# from the Massive API every time the HTML page is loaded or refreshed. The # server listens on port 8888 and exits gracefully when a KeyboardInterrupt is # received. # @@ -68,7 +68,7 @@ """ -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used aggs = [] for a in client.list_aggs( diff --git a/examples/rest/stocks-conditions.py b/examples/rest/stocks-conditions.py index 1be9b483..99740665 100644 --- a/examples/rest/stocks-conditions.py +++ b/examples/rest/stocks-conditions.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/stocks/get_v3_reference_conditions -# https://polygon-api-client.readthedocs.io/en/latest/Reference.html#list-conditions +# https://massive.com/docs/stocks/get_v3_reference_conditions +# https://massive-api-client.readthedocs.io/en/latest/Reference.html#list-conditions # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used conditions = [] for c in client.list_conditions(limit=1000): diff --git a/examples/rest/stocks-daily_open_close.py b/examples/rest/stocks-daily_open_close.py index 65c96265..0e811597 100644 --- a/examples/rest/stocks-daily_open_close.py +++ b/examples/rest/stocks-daily_open_close.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/stocks/get_v1_open-close__stocksticker___date -# https://polygon-api-client.readthedocs.io/en/latest/Aggs.html#get-daily-open-close-agg +# https://massive.com/docs/stocks/get_v1_open-close__stocksticker___date +# https://massive-api-client.readthedocs.io/en/latest/Aggs.html#get-daily-open-close-agg # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used # make request request = client.get_daily_open_close_agg( diff --git a/examples/rest/stocks-dividends.py b/examples/rest/stocks-dividends.py index 75cd795c..0c312195 100644 --- a/examples/rest/stocks-dividends.py +++ b/examples/rest/stocks-dividends.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/stocks/get_v3_reference_dividends -# https://polygon-api-client.readthedocs.io/en/latest/Reference.html#list-dividends +# https://massive.com/docs/stocks/get_v3_reference_dividends +# https://massive-api-client.readthedocs.io/en/latest/Reference.html#list-dividends # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used dividends = [] for d in client.list_dividends("MSFT", limit=1000): diff --git a/examples/rest/stocks-exchanges.py b/examples/rest/stocks-exchanges.py index 20c9477a..a8208163 100644 --- a/examples/rest/stocks-exchanges.py +++ b/examples/rest/stocks-exchanges.py @@ -1,14 +1,14 @@ -from polygon import RESTClient -from polygon.rest.models import ( +from massive import RESTClient +from massive.rest.models import ( Exchange, ) # docs -# https://polygon.io/docs/stocks/get_v3_reference_exchanges -# https://polygon-api-client.readthedocs.io/en/latest/Reference.html#get-exchanges +# https://massive.com/docs/stocks/get_v3_reference_exchanges +# https://massive-api-client.readthedocs.io/en/latest/Reference.html#get-exchanges # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used exchanges = client.get_exchanges() print(exchanges) diff --git a/examples/rest/stocks-grouped_daily_bars.py b/examples/rest/stocks-grouped_daily_bars.py index ea0ff1cd..e5e75722 100644 --- a/examples/rest/stocks-grouped_daily_bars.py +++ b/examples/rest/stocks-grouped_daily_bars.py @@ -1,12 +1,12 @@ -from polygon import RESTClient +from massive import RESTClient import pprint # docs -# https://polygon.io/docs/stocks/get_v2_aggs_grouped_locale_us_market_stocks__date -# https://polygon-api-client.readthedocs.io/en/latest/Aggs.html#get-grouped-daily-aggs +# https://massive.com/docs/stocks/get_v2_aggs_grouped_locale_us_market_stocks__date +# https://massive-api-client.readthedocs.io/en/latest/Aggs.html#get-grouped-daily-aggs # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used grouped = client.get_grouped_daily_aggs( "2023-02-16", diff --git a/examples/rest/stocks-ipos.py b/examples/rest/stocks-ipos.py index cc09f61b..abaf8b04 100644 --- a/examples/rest/stocks-ipos.py +++ b/examples/rest/stocks-ipos.py @@ -1,10 +1,10 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/rest/stocks/corporate-actions/ipos +# https://massive.com/docs/rest/stocks/corporate-actions/ipos # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used ipos = [] for ipo in client.vx.list_ipos(ticker="RDDT"): diff --git a/examples/rest/stocks-last_quote.py b/examples/rest/stocks-last_quote.py index 15b83e55..78da1600 100644 --- a/examples/rest/stocks-last_quote.py +++ b/examples/rest/stocks-last_quote.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/stocks/get_v2_last_nbbo__stocksticker -# https://polygon-api-client.readthedocs.io/en/latest/Quotes.html#get-last-quote +# https://massive.com/docs/stocks/get_v2_last_nbbo__stocksticker +# https://massive-api-client.readthedocs.io/en/latest/Quotes.html#get-last-quote # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used quote = client.get_last_quote( "AAPL", diff --git a/examples/rest/stocks-last_trade.py b/examples/rest/stocks-last_trade.py index 42278ba0..77f19451 100644 --- a/examples/rest/stocks-last_trade.py +++ b/examples/rest/stocks-last_trade.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/stocks/get_v2_last_trade__stocksticker -# https://polygon-api-client.readthedocs.io/en/latest/Trades.html#get-last-trade +# https://massive.com/docs/stocks/get_v2_last_trade__stocksticker +# https://massive-api-client.readthedocs.io/en/latest/Trades.html#get-last-trade # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used trade = client.get_last_trade( "AAPL", diff --git a/examples/rest/stocks-market_holidays.py b/examples/rest/stocks-market_holidays.py index 054bfa87..8e55248d 100644 --- a/examples/rest/stocks-market_holidays.py +++ b/examples/rest/stocks-market_holidays.py @@ -1,14 +1,14 @@ -from polygon import RESTClient -from polygon.rest.models import ( +from massive import RESTClient +from massive.rest.models import ( MarketHoliday, ) # docs -# https://polygon.io/docs/stocks/get_v1_marketstatus_upcoming -# https://polygon-api-client.readthedocs.io/en/latest/Reference.html#get-market-holidays +# https://massive.com/docs/stocks/get_v1_marketstatus_upcoming +# https://massive-api-client.readthedocs.io/en/latest/Reference.html#get-market-holidays # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used holidays = client.get_market_holidays() # print(holidays) diff --git a/examples/rest/stocks-market_status.py b/examples/rest/stocks-market_status.py index bd4362b3..dc143f57 100644 --- a/examples/rest/stocks-market_status.py +++ b/examples/rest/stocks-market_status.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/stocks/get_v1_marketstatus_now -# https://polygon-api-client.readthedocs.io/en/latest/Reference.html#get-market-status +# https://massive.com/docs/stocks/get_v1_marketstatus_now +# https://massive-api-client.readthedocs.io/en/latest/Reference.html#get-market-status # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used result = client.get_market_status() print(result) diff --git a/examples/rest/stocks-previous_close.py b/examples/rest/stocks-previous_close.py index 9785ab2e..a1d0fab0 100644 --- a/examples/rest/stocks-previous_close.py +++ b/examples/rest/stocks-previous_close.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/stocks/get_v2_aggs_ticker__stocksticker__prev -# https://polygon-api-client.readthedocs.io/en/latest/Aggs.html#get-previous-close-agg +# https://massive.com/docs/stocks/get_v2_aggs_ticker__stocksticker__prev +# https://massive-api-client.readthedocs.io/en/latest/Aggs.html#get-previous-close-agg # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used aggs = client.get_previous_close_agg( "AAPL", diff --git a/examples/rest/stocks-quotes.py b/examples/rest/stocks-quotes.py index 4d615dab..80f61c2b 100644 --- a/examples/rest/stocks-quotes.py +++ b/examples/rest/stocks-quotes.py @@ -1,8 +1,8 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/stocks/get_v3_quotes__stockticker -# https://polygon-api-client.readthedocs.io/en/latest/Quotes.html#list-quotes +# https://massive.com/docs/stocks/get_v3_quotes__stockticker +# https://massive-api-client.readthedocs.io/en/latest/Quotes.html#list-quotes # NBBO (National Best Bid and Offer) is a term used in the financial industry # to describe the best bid and offer prices for a particular stock or security @@ -13,7 +13,7 @@ # investment decisions and execute trades at the best available price. # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used quotes = [] for t in client.list_quotes("IBIO", "2023-02-01", limit=50000): diff --git a/examples/rest/stocks-related_companies.py b/examples/rest/stocks-related_companies.py index 84b3a405..f0dc6fea 100644 --- a/examples/rest/stocks-related_companies.py +++ b/examples/rest/stocks-related_companies.py @@ -1,10 +1,10 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/stocks/get_v1_related-companies__ticker +# https://massive.com/docs/stocks/get_v1_related-companies__ticker # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used related_companies = client.get_related_companies("AAPL") print(related_companies) diff --git a/examples/rest/stocks-short_interest.py b/examples/rest/stocks-short_interest.py index 6a9f7ea1..075f079c 100644 --- a/examples/rest/stocks-short_interest.py +++ b/examples/rest/stocks-short_interest.py @@ -1,10 +1,10 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/rest/stocks/fundamentals/short-interest +# https://massive.com/docs/rest/stocks/fundamentals/short-interest # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used items = [] for item in client.list_short_interest(ticker="RDDT"): diff --git a/examples/rest/stocks-short_volume.py b/examples/rest/stocks-short_volume.py index c127867a..31aa03ae 100644 --- a/examples/rest/stocks-short_volume.py +++ b/examples/rest/stocks-short_volume.py @@ -1,10 +1,10 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/rest/stocks/fundamentals/short-volume +# https://massive.com/docs/rest/stocks/fundamentals/short-volume # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used items = [] for item in client.list_short_volume(ticker="RDDT"): diff --git a/examples/rest/stocks-snapshots_all.py b/examples/rest/stocks-snapshots_all.py index d1682983..f351f918 100644 --- a/examples/rest/stocks-snapshots_all.py +++ b/examples/rest/stocks-snapshots_all.py @@ -1,15 +1,15 @@ -from polygon import RESTClient -from polygon.rest.models import ( +from massive import RESTClient +from massive.rest.models import ( TickerSnapshot, Agg, ) # docs -# https://polygon.io/docs/stocks/get_v2_snapshot_locale_us_markets_stocks_tickers -# https://polygon-api-client.readthedocs.io/en/latest/Snapshot.html#get-all-snapshots +# https://massive.com/docs/stocks/get_v2_snapshot_locale_us_markets_stocks_tickers +# https://massive-api-client.readthedocs.io/en/latest/Snapshot.html#get-all-snapshots # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used # tickers we are interested in tickers = ["TSLA", "AAPL", "MSFT", "META"] diff --git a/examples/rest/stocks-snapshots_gainers_losers.py b/examples/rest/stocks-snapshots_gainers_losers.py index d0a0e365..80fadc14 100644 --- a/examples/rest/stocks-snapshots_gainers_losers.py +++ b/examples/rest/stocks-snapshots_gainers_losers.py @@ -1,14 +1,14 @@ -from polygon import RESTClient -from polygon.rest.models import ( +from massive import RESTClient +from massive.rest.models import ( TickerSnapshot, ) # docs -# https://polygon.io/docs/stocks/get_v2_snapshot_locale_us_markets_stocks__direction -# https://polygon-api-client.readthedocs.io/en/latest/Snapshot.html#get-gainers-losers-snapshot +# https://massive.com/docs/stocks/get_v2_snapshot_locale_us_markets_stocks__direction +# https://massive-api-client.readthedocs.io/en/latest/Snapshot.html#get-gainers-losers-snapshot # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used # get gainers gainers = client.get_snapshot_direction("stocks", "gainers") diff --git a/examples/rest/stocks-snapshots_ticker.py b/examples/rest/stocks-snapshots_ticker.py index 2b264338..f12107ec 100644 --- a/examples/rest/stocks-snapshots_ticker.py +++ b/examples/rest/stocks-snapshots_ticker.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/stocks/get_v2_snapshot_locale_us_markets_stocks_tickers__stocksticker -# https://polygon-api-client.readthedocs.io/en/latest/Snapshot.html#get-ticker-snapshot +# https://massive.com/docs/stocks/get_v2_snapshot_locale_us_markets_stocks_tickers__stocksticker +# https://massive-api-client.readthedocs.io/en/latest/Snapshot.html#get-ticker-snapshot # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used ticker = client.get_snapshot_ticker("stocks", "AAPL") print(ticker) diff --git a/examples/rest/stocks-stock_financials.py b/examples/rest/stocks-stock_financials.py index a75087e7..2eb0c957 100644 --- a/examples/rest/stocks-stock_financials.py +++ b/examples/rest/stocks-stock_financials.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/stocks/get_vx_reference_financials -# https://polygon-api-client.readthedocs.io/en/latest/vX.html#list-stock-financials +# https://massive.com/docs/stocks/get_vx_reference_financials +# https://massive-api-client.readthedocs.io/en/latest/vX.html#list-stock-financials # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used financials = [] for f in client.vx.list_stock_financials("AAPL", filing_date="2024-11-01"): diff --git a/examples/rest/stocks-stock_splits.py b/examples/rest/stocks-stock_splits.py index 55980973..4a43cad2 100644 --- a/examples/rest/stocks-stock_splits.py +++ b/examples/rest/stocks-stock_splits.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/stocks/get_v3_reference_splits -# https://polygon-api-client.readthedocs.io/en/latest/Reference.html#list-splits +# https://massive.com/docs/stocks/get_v3_reference_splits +# https://massive-api-client.readthedocs.io/en/latest/Reference.html#list-splits # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used splits = [] for s in client.list_splits("TSLA", limit=1000): diff --git a/examples/rest/stocks-technical_indicators_ema.py b/examples/rest/stocks-technical_indicators_ema.py index 20092d7e..b71abe46 100644 --- a/examples/rest/stocks-technical_indicators_ema.py +++ b/examples/rest/stocks-technical_indicators_ema.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/stocks/get_v1_indicators_ema__stockticker -# https://github.com/polygon-io/client-python/blob/master/polygon/rest/indicators.py +# https://massive.com/docs/stocks/get_v1_indicators_ema__stockticker +# https://github.com/massive-com/client-python/blob/master/massive/rest/indicators.py # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used ema = client.get_ema( ticker="AAPL", diff --git a/examples/rest/stocks-technical_indicators_macd.py b/examples/rest/stocks-technical_indicators_macd.py index 187e8ae6..4b9bd323 100644 --- a/examples/rest/stocks-technical_indicators_macd.py +++ b/examples/rest/stocks-technical_indicators_macd.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/stocks/get_v1_indicators_macd__stockticker -# https://github.com/polygon-io/client-python/blob/master/polygon/rest/indicators.py +# https://massive.com/docs/stocks/get_v1_indicators_macd__stockticker +# https://github.com/massive-com/client-python/blob/master/massive/rest/indicators.py # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used macd = client.get_macd( ticker="AAPL", diff --git a/examples/rest/stocks-technical_indicators_rsi.py b/examples/rest/stocks-technical_indicators_rsi.py index a69d6ae3..20ac8758 100644 --- a/examples/rest/stocks-technical_indicators_rsi.py +++ b/examples/rest/stocks-technical_indicators_rsi.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/stocks/get_v1_indicators_rsi__stockticker -# https://github.com/polygon-io/client-python/blob/master/polygon/rest/indicators.py +# https://massive.com/docs/stocks/get_v1_indicators_rsi__stockticker +# https://github.com/massive-com/client-python/blob/master/massive/rest/indicators.py # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used rsi = client.get_rsi( ticker="AAPL", diff --git a/examples/rest/stocks-technical_indicators_sma.py b/examples/rest/stocks-technical_indicators_sma.py index 41a9c7c4..a08fec13 100644 --- a/examples/rest/stocks-technical_indicators_sma.py +++ b/examples/rest/stocks-technical_indicators_sma.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/stocks/get_v1_indicators_sma__stockticker -# https://github.com/polygon-io/client-python/blob/master/polygon/rest/indicators.py +# https://massive.com/docs/stocks/get_v1_indicators_sma__stockticker +# https://github.com/massive-com/client-python/blob/master/massive/rest/indicators.py # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used sma = client.get_sma( ticker="AAPL", diff --git a/examples/rest/stocks-ticker_details.py b/examples/rest/stocks-ticker_details.py index 5f81b4bc..ac3b6b1e 100644 --- a/examples/rest/stocks-ticker_details.py +++ b/examples/rest/stocks-ticker_details.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/stocks/get_v3_reference_tickers__ticker -# https://polygon-api-client.readthedocs.io/en/latest/Reference.html#get-ticker-details +# https://massive.com/docs/stocks/get_v3_reference_tickers__ticker +# https://massive-api-client.readthedocs.io/en/latest/Reference.html#get-ticker-details # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used details = client.get_ticker_details("AAPL") print(details) diff --git a/examples/rest/stocks-ticker_events.py b/examples/rest/stocks-ticker_events.py index 09b13432..b8337f43 100644 --- a/examples/rest/stocks-ticker_events.py +++ b/examples/rest/stocks-ticker_events.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/stocks/get_vx_reference_tickers__id__events -# https://github.com/polygon-io/client-python/blob/master/polygon/rest/reference.py +# https://massive.com/docs/stocks/get_vx_reference_tickers__id__events +# https://github.com/massive-com/client-python/blob/master/massive/rest/reference.py # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used events = client.get_ticker_events("META") print(events) diff --git a/examples/rest/stocks-ticker_news.py b/examples/rest/stocks-ticker_news.py index fa834891..cea11857 100644 --- a/examples/rest/stocks-ticker_news.py +++ b/examples/rest/stocks-ticker_news.py @@ -1,14 +1,14 @@ -from polygon import RESTClient -from polygon.rest.models import ( +from massive import RESTClient +from massive.rest.models import ( TickerNews, ) # docs -# https://polygon.io/docs/stocks/get_v2_reference_news -# https://polygon-api-client.readthedocs.io/en/latest/Reference.html#list-ticker-news +# https://massive.com/docs/stocks/get_v2_reference_news +# https://massive-api-client.readthedocs.io/en/latest/Reference.html#list-ticker-news # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used news = [] for n in client.list_ticker_news("BBBY", order="desc", limit=1000): diff --git a/examples/rest/stocks-ticker_types.py b/examples/rest/stocks-ticker_types.py index fa09338d..7748868c 100644 --- a/examples/rest/stocks-ticker_types.py +++ b/examples/rest/stocks-ticker_types.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/stocks/get_v3_reference_tickers_types -# https://polygon-api-client.readthedocs.io/en/latest/Reference.html#get-ticker-types +# https://massive.com/docs/stocks/get_v3_reference_tickers_types +# https://massive-api-client.readthedocs.io/en/latest/Reference.html#get-ticker-types # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used types = client.get_ticker_types() print(types) diff --git a/examples/rest/stocks-tickers.py b/examples/rest/stocks-tickers.py index 7fc09230..c441fab2 100644 --- a/examples/rest/stocks-tickers.py +++ b/examples/rest/stocks-tickers.py @@ -1,11 +1,11 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/stocks/get_v3_reference_tickers -# https://polygon-api-client.readthedocs.io/en/latest/Reference.html#list-tickers +# https://massive.com/docs/stocks/get_v3_reference_tickers +# https://massive-api-client.readthedocs.io/en/latest/Reference.html#list-tickers # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used tickers = [] for t in client.list_tickers(market="stocks", type="CS", active=True, limit=1000): diff --git a/examples/rest/stocks-trades.py b/examples/rest/stocks-trades.py index 8f2f147b..9d1de07c 100644 --- a/examples/rest/stocks-trades.py +++ b/examples/rest/stocks-trades.py @@ -1,8 +1,8 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/stocks/get_v3_trades__stockticker -# https://polygon-api-client.readthedocs.io/en/latest/Trades.html#polygon.RESTClient.list_trades +# https://massive.com/docs/stocks/get_v3_trades__stockticker +# https://massive-api-client.readthedocs.io/en/latest/Trades.html#massive.RESTClient.list_trades # Trade data refers to the tick records of individual transactions that have # taken place in a financial market, such as the price, size, and time of @@ -11,7 +11,7 @@ # market behavior and inform their investment decisions. # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used trades = [] for t in client.list_trades("IBIO", "2023-02-01", limit=50000): diff --git a/examples/rest/stocks-trades_extra.py b/examples/rest/stocks-trades_extra.py index 1fcf566d..0aa27142 100644 --- a/examples/rest/stocks-trades_extra.py +++ b/examples/rest/stocks-trades_extra.py @@ -1,15 +1,15 @@ # This code retrieves trade records and counts the amount of money that changes hands. -from polygon import RESTClient -from polygon.rest.models import ( +from massive import RESTClient +from massive.rest.models import ( Trade, ) # docs -# https://polygon.io/docs/stocks/get_v3_trades__stockticker -# https://polygon-api-client.readthedocs.io/en/latest/Trades.html#polygon.RESTClient.list_trades +# https://massive.com/docs/stocks/get_v3_trades__stockticker +# https://massive-api-client.readthedocs.io/en/latest/Trades.html#massive.RESTClient.list_trades # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used # used to track money across trades money = float(0) diff --git a/examples/rest/universal-snapshot.py b/examples/rest/universal-snapshot.py index 1ab5e804..ba37c62d 100644 --- a/examples/rest/universal-snapshot.py +++ b/examples/rest/universal-snapshot.py @@ -1,14 +1,14 @@ from typing import cast, Iterator, Union from urllib3 import HTTPResponse -from polygon import RESTClient -from polygon.rest.models import UniversalSnapshot, SnapshotMarketType +from massive import RESTClient +from massive.rest.models import UniversalSnapshot, SnapshotMarketType # docs -# https://polygon.io/docs/stocks/get_v3_snapshot -# https://polygon-api-client.readthedocs.io/en/latest/Snapshot.html +# https://massive.com/docs/stocks/get_v3_snapshot +# https://massive-api-client.readthedocs.io/en/latest/Snapshot.html # client = RESTClient("XXXXXX") # hardcoded api_key is used -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used def print_snapshots(iterator: Union[Iterator[UniversalSnapshot], HTTPResponse]): diff --git a/examples/tools/async_websocket_rest_handler/async_websocket_rest_handler.py b/examples/tools/async_websocket_rest_handler/async_websocket_rest_handler.py index d60a257c..c19975f1 100644 --- a/examples/tools/async_websocket_rest_handler/async_websocket_rest_handler.py +++ b/examples/tools/async_websocket_rest_handler/async_websocket_rest_handler.py @@ -4,15 +4,15 @@ import re from concurrent.futures import ThreadPoolExecutor from typing import Optional, Union -from polygon import RESTClient, WebSocketClient -from polygon.websocket.models import Market, Feed +from massive import RESTClient, WebSocketClient +from massive.websocket.models import Market, Feed class ApiCallHandler: def __init__(self): self.api_call_queue = asyncio.Queue() self.executor = ThreadPoolExecutor() # Thread pool for running synchronous code - self.client = RESTClient() # Assumes POLYGON_API_KEY is set in the environment + self.client = RESTClient() # Assumes MASSIVE_API_KEY is set in the environment async def enqueue_api_call(self, options_ticker): await self.api_call_queue.put(options_ticker) @@ -75,8 +75,8 @@ def extract_symbol(self, input_string): class MyClient: def __init__(self, feed, market, subscriptions): - api_key = os.getenv("POLYGON_API_KEY") - self.polygon_websocket_client = WebSocketClient( + api_key = os.getenv("MASSIVE_API_KEY") + self.massive_websocket_client = WebSocketClient( api_key=api_key, feed=feed, market=market, @@ -89,7 +89,7 @@ def __init__(self, feed, market, subscriptions): async def start_event_stream(self): try: await asyncio.gather( - self.polygon_websocket_client.connect(self.message_handler.add), + self.massive_websocket_client.connect(self.message_handler.add), self.message_handler.start_handling(), self.api_call_handler.start_processing_api_calls(), ) diff --git a/examples/tools/async_websocket_rest_handler/readme.md b/examples/tools/async_websocket_rest_handler/readme.md index a4482ff3..f68f535f 100644 --- a/examples/tools/async_websocket_rest_handler/readme.md +++ b/examples/tools/async_websocket_rest_handler/readme.md @@ -2,12 +2,12 @@ This script demonstrates a non-blocking pattern for handling WebSocket streams and REST API calls in Python using asyncio. It focuses on efficient, concurrent processing of real-time financial data and asynchronous fetching of additional information, ensuring that real-time data streams are managed without delays or blockages. The tutorial provides both theoretical insights and a practical, adaptable example, ideal for applications in financial data processing and similar real-time data handling scenarios. -Please see the [tutorial](https://polygon.io/blog/pattern-for-non-blocking-websocket-and-rest-calls-in-python) for more details. +Please see the [tutorial](https://massive.com/blog/pattern-for-non-blocking-websocket-and-rest-calls-in-python) for more details. ### Prerequisites - Python 3.x -- Polygon.io account and Options API key +- Massive.com account and Options API key ### Running the Example diff --git a/examples/tools/docker/Dockerfile b/examples/tools/docker/Dockerfile index 253c1fc1..b79a7af1 100644 --- a/examples/tools/docker/Dockerfile +++ b/examples/tools/docker/Dockerfile @@ -8,12 +8,12 @@ WORKDIR /usr/src/app COPY . . # Install any needed packages specified in requirements.txt -RUN pip install --no-cache-dir polygon-api-client +RUN pip install --no-cache-dir massive -# Set the environment variable for the Polygon API key +# Set the environment variable for the Massive API key # Note: Replace "" with your actual API key or use Docker's --env flag when running the container to set it dynamically # Warning: Not recommended for production or shared environments -ENV POLYGON_API_KEY= +ENV MASSIVE_API_KEY= # Run the script when the container launches CMD ["python", "./app.py"] diff --git a/examples/tools/docker/app.py b/examples/tools/docker/app.py index 8e5c0223..321bb4b9 100644 --- a/examples/tools/docker/app.py +++ b/examples/tools/docker/app.py @@ -1,10 +1,10 @@ -from polygon import RESTClient +from massive import RESTClient # docs -# https://polygon.io/docs/stocks/get_v2_aggs_ticker__stocksticker__range__multiplier___timespan___from___to -# https://polygon-api-client.readthedocs.io/en/latest/Aggs.html#polygon.RESTClient.list_aggs +# https://massive.com/docs/stocks/get_v2_aggs_ticker__stocksticker__range__multiplier___timespan___from___to +# https://massive-api-client.readthedocs.io/en/latest/Aggs.html#massive.RESTClient.list_aggs -client = RESTClient() # POLYGON_API_KEY environment variable is used +client = RESTClient() # MASSIVE_API_KEY environment variable is used aggs = [] for a in client.list_aggs( diff --git a/examples/tools/docker/readme.md b/examples/tools/docker/readme.md index 776fd70c..ff3f24e4 100644 --- a/examples/tools/docker/readme.md +++ b/examples/tools/docker/readme.md @@ -1,16 +1,16 @@ -# Dockerized Python Application with Polygon API Client +# Dockerized Python Application with Massive API Client -This Docker setup provides a ready-to-use environment for running Python scripts that utilize the `polygon-api-client` for financial data processing. It encapsulates the Python environment and the `polygon-api-client` library in a Docker container, making it easy to deploy and run the application consistently across any system with Docker installed. This approach is particularly useful for developers looking to integrate Polygon's financial data APIs into their applications without worrying about environment inconsistencies. +This Docker setup provides a ready-to-use environment for running Python scripts that utilize the `massive-api-client` for financial data processing. It encapsulates the Python environment and the `massive-api-client` library in a Docker container, making it easy to deploy and run the application consistently across any system with Docker installed. This approach is particularly useful for developers looking to integrate Massive's financial data APIs into their applications without worrying about environment inconsistencies. ### Prerequisites - [Docker](https://www.docker.com/) installed on your machine -- [Polygon.io](https://polygon.io/) account and API key +- [Massive.com](https://massive.com/) account and API key ### Setup and Configuration 1. Clone the repository or download the Dockerfile and your Python script into a directory. -2. Use Docker's `--env` flag when running the container to set the `POLYGON_API_KEY` environment variable dynamically, or replace `` in the Dockerfile with your Polygon API key (not recommended for production or shared environments). +2. Use Docker's `--env` flag when running the container to set the `MASSIVE_API_KEY` environment variable dynamically, or replace `` in the Dockerfile with your Massive API key (not recommended for production or shared environments). 3. Ensure your Python script (e.g., `app.py`) is in the same directory as the Dockerfile. ### Building the Docker Image @@ -20,22 +20,22 @@ Any modifications to the Python script will require rebuilding the Docker image Navigate to the directory containing your Dockerfile and execute the following command to build your Docker image: ``` -docker build -t polygon-client-app . +docker build -t massive-client-app . ``` -This command creates a Docker image named `polygon-client-app` based on the instructions in your Dockerfile. +This command creates a Docker image named `massive-client-app` based on the instructions in your Dockerfile. ### Running the Docker Container Run your Docker container using the following command: ``` -docker run --env POLYGON_API_KEY="" polygon-client-app +docker run --env MASSIVE_API_KEY="" massive-client-app ``` -Replace `` with your actual Polygon API key. This command starts a Docker container based on the `polygon-client-app` image, sets the `POLYGON_API_KEY` environment variable to your provided API key, and runs your Python script inside the container. +Replace `` with your actual Massive API key. This command starts a Docker container based on the `massive-client-app` image, sets the `MASSIVE_API_KEY` environment variable to your provided API key, and runs your Python script inside the container. ### Additional Notes - The Docker setup provided here is a very basic example. Depending on your specific requirements, you might need to customize the Dockerfile, such as adding volume mounts for persistent data or exposing ports for network communication. -- For more details on using the Polygon API and the `polygon-api-client` library, please refer to the [Polygon documentation](https://polygon.io/docs), the [polygon-io/client-python](https://github.com/polygon-io/client-python) repo, or the [polygon-api-client documentation](https://polygon-api-client.readthedocs.io/en/latest/). \ No newline at end of file +- For more details on using the Massive API and the `massive-api-client` library, please refer to the [Massive documentation](https://massive.com/docs), the [massive-com/client-python](https://github.com/massive-com/client-python) repo, or the [massive-api-client documentation](https://massive-api-client.readthedocs.io/en/latest/). \ No newline at end of file diff --git a/examples/tools/flatfiles-stock-trades/exchange-heatmap.py b/examples/tools/flatfiles-stock-trades/exchange-heatmap.py index 060b6350..0ea4ce4f 100644 --- a/examples/tools/flatfiles-stock-trades/exchange-heatmap.py +++ b/examples/tools/flatfiles-stock-trades/exchange-heatmap.py @@ -1,7 +1,7 @@ # We can use a Python script that aggregates trades by exchange into 30-minute # chunks, setting the stage for a visual analysis. This approach will highlight # trade flows, including opening hours and peak activity times, across the -# exchanges. Please see https://polygon.io/blog/insights-from-trade-level-data +# exchanges. Please see https://massive.com/blog/insights-from-trade-level-data # import pandas as pd # type: ignore import seaborn as sns # type: ignore diff --git a/examples/tools/flatfiles-stock-trades/exchanges-seen.py b/examples/tools/flatfiles-stock-trades/exchanges-seen.py index 70fb5081..fcb42572 100644 --- a/examples/tools/flatfiles-stock-trades/exchanges-seen.py +++ b/examples/tools/flatfiles-stock-trades/exchanges-seen.py @@ -1,7 +1,7 @@ # Here's a Python script for analyzing the dataset, that identifies the # distribution of trades across different exchanges and calculates their # respective percentages of the total trades. Please see -# https://polygon.io/blog/insights-from-trade-level-data +# https://massive.com/blog/insights-from-trade-level-data # import pandas as pd # type: ignore diff --git a/examples/tools/flatfiles-stock-trades/readme.md b/examples/tools/flatfiles-stock-trades/readme.md index c794b3ba..5465e29f 100644 --- a/examples/tools/flatfiles-stock-trades/readme.md +++ b/examples/tools/flatfiles-stock-trades/readme.md @@ -1,8 +1,8 @@ -# Polygon.io Flat Files Stock Trades Analysis Scripts +# Massive.com Flat Files Stock Trades Analysis Scripts -This repository contains Python scripts for analyzing stock market trading data using Flat Files from Polygon.io. These scripts demonstrate various ways to dissect and visualize trade data for comprehensive market analysis. +This repository contains Python scripts for analyzing stock market trading data using Flat Files from Massive.com. These scripts demonstrate various ways to dissect and visualize trade data for comprehensive market analysis. -Please see the tutorial: [Deep Dive into Trade-Level Data with Flat Files](https://polygon.io/blog/insights-from-trade-level-data) +Please see the tutorial: [Deep Dive into Trade-Level Data with Flat Files](https://massive.com/blog/insights-from-trade-level-data) ## Scripts Overview @@ -58,7 +58,7 @@ Creates a histogram that aggregates trades into 30-minute intervals throughout t ## Download the Data -First, let's download an actual file and explore the data and see what we can learn. We start by downloading the trades for 2024-04-05 via the [File Browser](https://polygon.io/flat-files/stocks-trades/2024/04). The `us_stocks_sip/trades_v1/2024/04/2024-04-05.csv.gz` file is about 1.35GB and is in a compressed gzip format. +First, let's download an actual file and explore the data and see what we can learn. We start by downloading the trades for 2024-04-05 via the [File Browser](https://massive.com/flat-files/stocks-trades/2024/04). The `us_stocks_sip/trades_v1/2024/04/2024-04-05.csv.gz` file is about 1.35GB and is in a compressed gzip format. ``` gunzip 2024-04-05.csv.gz diff --git a/examples/tools/flatfiles-stock-trades/top-10-tickers.py b/examples/tools/flatfiles-stock-trades/top-10-tickers.py index ec046e0b..35d59a4e 100644 --- a/examples/tools/flatfiles-stock-trades/top-10-tickers.py +++ b/examples/tools/flatfiles-stock-trades/top-10-tickers.py @@ -1,6 +1,6 @@ # Here's a Python script for analyzing the dataset, that identifies the top 10 # most traded stocks and calculates their respective percentages of the total -# trades. Please see https://polygon.io/blog/insights-from-trade-level-data +# trades. Please see https://massive.com/blog/insights-from-trade-level-data # import pandas as pd # type: ignore diff --git a/examples/tools/flatfiles-stock-trades/trades-histogram.py b/examples/tools/flatfiles-stock-trades/trades-histogram.py index 6651978d..3e89cdfc 100644 --- a/examples/tools/flatfiles-stock-trades/trades-histogram.py +++ b/examples/tools/flatfiles-stock-trades/trades-histogram.py @@ -2,7 +2,7 @@ # aggregating trades into 30-minute intervals, providing a clear view of when # trading activity concentrates during the day. This analysis aims to highlight # the distribution of trading volume across the day, from pre-market to after- -# hours. Please see https://polygon.io/blog/insights-from-trade-level-data +# hours. Please see https://massive.com/blog/insights-from-trade-level-data # import pandas as pd # type: ignore import matplotlib.pyplot as plt # type: ignore diff --git a/examples/tools/hunting-anomalies/README.md b/examples/tools/hunting-anomalies/README.md index 4b36f1b5..874ad568 100644 --- a/examples/tools/hunting-anomalies/README.md +++ b/examples/tools/hunting-anomalies/README.md @@ -1,12 +1,12 @@ # Hunting Anomalies in the Stock Market -This repository contains all the necessary scripts and data directories used in the [Hunting Anomalies in the Stock Market](https://polygon.io/blog/hunting-anomalies-in-stock-market/) tutorial, hosted on Polygon.io's blog. The tutorial demonstrates how to detect statistical anomalies in historical US stock market data through a comprehensive workflow that involves downloading data, building a lookup table, querying for anomalies, and visualizing them through a web interface. +This repository contains all the necessary scripts and data directories used in the [Hunting Anomalies in the Stock Market](https://massive.com/blog/hunting-anomalies-in-stock-market/) tutorial, hosted on Massive.com's blog. The tutorial demonstrates how to detect statistical anomalies in historical US stock market data through a comprehensive workflow that involves downloading data, building a lookup table, querying for anomalies, and visualizing them through a web interface. ### Prerequisites - Python 3.8+ -- Access to Polygon.io's historical data via Flat Files -- An active Polygon.io API key, obtainable by signing up for a Stocks paid plan +- Access to Massive.com's historical data via Flat Files +- An active Massive.com API key, obtainable by signing up for a Stocks paid plan ### Repository Contents @@ -18,16 +18,16 @@ This repository contains all the necessary scripts and data directories used in ### Running the Tutorial -1. **Ensure Python 3.8+ is installed:** Check your Python version and ensure all required libraries (polygon-api-client, pandas, pickle, and argparse) are installed. +1. **Ensure Python 3.8+ is installed:** Check your Python version and ensure all required libraries (massive-api-client, pandas, pickle, and argparse) are installed. -2. **Set up your API key:** Make sure you have an active paid Polygon.io Stock subscription for accessing Flat Files. Set up your API key in your environment or directly in the scripts where required. +2. **Set up your API key:** Make sure you have an active paid Massive.com Stock subscription for accessing Flat Files. Set up your API key in your environment or directly in the scripts where required. 3. **Download Historical Data:** Use the MinIO client to download historical stock market data. Adjust the commands and paths based on the data you are interested in. ```bash - mc alias set s3polygon https://files.polygon.io YOUR_ACCESS_KEY YOUR_SECRET_KEY - mc cp --recursive s3polygon/flatfiles/us_stocks_sip/day_aggs_v1/2024/08/ ./aggregates_day/ - mc cp --recursive s3polygon/flatfiles/us_stocks_sip/day_aggs_v1/2024/09/ ./aggregates_day/ - mc cp --recursive s3polygon/flatfiles/us_stocks_sip/day_aggs_v1/2024/10/ ./aggregates_day/ + mc alias set s3massive https://files.massive.com YOUR_ACCESS_KEY YOUR_SECRET_KEY + mc cp --recursive s3massive/flatfiles/us_stocks_sip/day_aggs_v1/2024/08/ ./aggregates_day/ + mc cp --recursive s3massive/flatfiles/us_stocks_sip/day_aggs_v1/2024/09/ ./aggregates_day/ + mc cp --recursive s3massive/flatfiles/us_stocks_sip/day_aggs_v1/2024/10/ ./aggregates_day/ gunzip ./aggregates_day/*.gz ``` @@ -46,4 +46,4 @@ This repository contains all the necessary scripts and data directories used in python gui-lookup-table.py ``` -For a complete step-by-step guide on each phase of the anomaly detection process, including additional configurations and troubleshooting, refer to the detailed [tutorial on our blog](https://polygon.io/blog/hunting-anomalies-in-stock-market/). +For a complete step-by-step guide on each phase of the anomaly detection process, including additional configurations and troubleshooting, refer to the detailed [tutorial on our blog](https://massive.com/blog/hunting-anomalies-in-stock-market/). diff --git a/examples/tools/hunting-anomalies/gui-lookup-table.py b/examples/tools/hunting-anomalies/gui-lookup-table.py index df58746c..8d8e49c2 100644 --- a/examples/tools/hunting-anomalies/gui-lookup-table.py +++ b/examples/tools/hunting-anomalies/gui-lookup-table.py @@ -2,8 +2,8 @@ import pickle import json from datetime import datetime -from polygon import RESTClient -from polygon.rest.models import Agg +from massive import RESTClient +from massive.rest.models import Agg import http.server import socketserver import traceback @@ -166,7 +166,7 @@ def do_GET(self): # Fetch minute aggregates for the ticker and date client = RESTClient( trace=True - ) # POLYGON_API_KEY environment variable is used + ) # MASSIVE_API_KEY environment variable is used try: aggs = [] date_from = date diff --git a/examples/tools/related-companies/readme.md b/examples/tools/related-companies/readme.md index 9f107550..75327a35 100644 --- a/examples/tools/related-companies/readme.md +++ b/examples/tools/related-companies/readme.md @@ -1,16 +1,16 @@ # See Connections with the Related Companies API -This repository contains the Python script and HTML file used in our tutorial to demonstrate how to identify and visualize relationships between companies using Polygon.io's Related Companies API. The tutorial showcases how to fetch related company data and create a dynamic network graph using Python and vis.js, providing insights into the interconnected corporate landscape. +This repository contains the Python script and HTML file used in our tutorial to demonstrate how to identify and visualize relationships between companies using Massive.com's Related Companies API. The tutorial showcases how to fetch related company data and create a dynamic network graph using Python and vis.js, providing insights into the interconnected corporate landscape. ![Related Companies](./related-companies.png) -Please see the [tutorial](https://polygon.io/blog/related-companies-api) for more details. +Please see the [tutorial](https://massive.com/blog/related-companies-api) for more details. ### Prerequisites - Python 3.8+ -- Have Polygon.io's [python client](https://github.com/polygon-io/client-python) installed -- An active Polygon.io account with an API key +- Have Massive.com's [python client](https://github.com/massive-com/client-python) installed +- An active Massive.com account with an API key ### Repository Contents @@ -33,4 +33,4 @@ To visualize the relationships: 2. Open `index.html` in your web browser. 3. The web page should display the network graph. -For a complete step-by-step guide on setting up and exploring the capabilities of the Related Companies API, refer to our detailed [tutorial](https://polygon.io/blog/related-companies-api). \ No newline at end of file +For a complete step-by-step guide on setting up and exploring the capabilities of the Related Companies API, refer to our detailed [tutorial](https://massive.com/blog/related-companies-api). \ No newline at end of file diff --git a/examples/tools/related-companies/related-companies-demo.py b/examples/tools/related-companies/related-companies-demo.py index 221d5f0f..774bb353 100644 --- a/examples/tools/related-companies/related-companies-demo.py +++ b/examples/tools/related-companies/related-companies-demo.py @@ -1,4 +1,4 @@ -from polygon import RESTClient +from massive import RESTClient import json diff --git a/examples/tools/treemap/polygon_sic_code_data_gatherer.py b/examples/tools/treemap/polygon_sic_code_data_gatherer.py index bb1a2611..04307e3c 100644 --- a/examples/tools/treemap/polygon_sic_code_data_gatherer.py +++ b/examples/tools/treemap/polygon_sic_code_data_gatherer.py @@ -1,11 +1,11 @@ import json import concurrent.futures -from polygon import RESTClient +from massive import RESTClient -# Initialize Polygon API client +# Initialize Massive API client client = RESTClient( trace=True -) # Assuming you have POLYGON_API_KEY environment variable set up +) # Assuming you have MASSIVE_API_KEY environment variable set up # Initialize the data structure to hold SIC code groups sic_code_groups = {} diff --git a/examples/tools/treemap/readme.md b/examples/tools/treemap/readme.md index f0512051..8c55ec3f 100644 --- a/examples/tools/treemap/readme.md +++ b/examples/tools/treemap/readme.md @@ -1,47 +1,47 @@ -# Mapping Market Movements with Polygon.io and D3.js Treemap +# Mapping Market Movements with Massive.com and D3.js Treemap -This repository offers a tutorial on how to create a Treemap visualization of the current stock market conditions. Using D3.js Treemap, Polygon.io's [Snapshot API](https://polygon.io/docs/stocks/get_v2_snapshot_locale_us_markets_stocks_tickers), and the [python-client library](https://github.com/polygon-io/client-python), we'll guide you through building an interactive visualization. The Snapshot API allows us to fetch the most recent market data for all US-traded stocks, transforming them into color-coded nested rectangles within the Treemap. This presents an insightful and interactive snapshot of the market's current status. +This repository offers a tutorial on how to create a Treemap visualization of the current stock market conditions. Using D3.js Treemap, Massive.com's [Snapshot API](https://massive.com/docs/stocks/get_v2_snapshot_locale_us_markets_stocks_tickers), and the [python-client library](https://github.com/massive-com/client-python), we'll guide you through building an interactive visualization. The Snapshot API allows us to fetch the most recent market data for all US-traded stocks, transforming them into color-coded nested rectangles within the Treemap. This presents an insightful and interactive snapshot of the market's current status. ![Treemap Visualization](./market-wide-treemap.png) -Please see the [tutorial](https://polygon.io/blog/market-movements-with-treemap) for more details. +Please see the [tutorial](https://massive.com/blog/market-movements-with-treemap) for more details. ## Structure The repo consists of: -- `polygon_sic_code_data_gatherer.py`: Builds ticker to SIC code mapping for treemap groups. +- `massive_sic_code_data_gatherer.py`: Builds ticker to SIC code mapping for treemap groups. - `sic_code_groups.json`: Pre-built JSON file containing grouped ticker to SIC code data. - `treemap_server.py`: Simple server to host the treemap visualization (requires sic_code_groups.json). -For those interested in the underlying mechanics, the `polygon_sic_code_data_gatherer.py` script retrieves a snapshot of all ticker symbols, processes each one to obtain its SIC code via the Ticker Details API, and then saves these classifications into the file named `sic_code_groups.json`. +For those interested in the underlying mechanics, the `massive_sic_code_data_gatherer.py` script retrieves a snapshot of all ticker symbols, processes each one to obtain its SIC code via the Ticker Details API, and then saves these classifications into the file named `sic_code_groups.json`. The logic of this SIC code-to-group enables us to transform a large dataset into a neatly structured visualization. This structured approach facilitates easy identification of market conditions, providing a snapshot of the market's overall health. You don't need to do anything since it is pre-built but we added the script if you wanted to modify anything. ## Getting Started -Setting up and visualizing the stock market's current conditions is straightforward. All you'll need to do is clone the repository, secure an API key from Polygon.io, install the required Python library, launch the visualization server example, and then dive into the visualization through your web browser. +Setting up and visualizing the stock market's current conditions is straightforward. All you'll need to do is clone the repository, secure an API key from Massive.com, install the required Python library, launch the visualization server example, and then dive into the visualization through your web browser. ### Prerequisites - Python 3.x -- Polygon.io account and API key +- Massive.com account and API key ### Setup 1. Clone the repository: ``` - git clone https://github.com/polygon-io/client-python.git + git clone https://github.com/massive-com/client-python.git ``` 2. Install the necessary Python packages. ``` - pip install -U polygon-api-client + pip install -U massive-api-client ``` -3. Store your Polygon.io API key securely, or set it as an environment variable: +3. Store your Massive.com API key securely, or set it as an environment variable: ``` - export POLYGON_API_KEY=YOUR_API_KEY_HERE + export MASSIVE_API_KEY=YOUR_API_KEY_HERE ``` ### Running the Treemap Server diff --git a/examples/tools/treemap/treemap_server.py b/examples/tools/treemap/treemap_server.py index 67267fc5..fca539e5 100644 --- a/examples/tools/treemap/treemap_server.py +++ b/examples/tools/treemap/treemap_server.py @@ -1,4 +1,4 @@ -from polygon import RESTClient +from massive import RESTClient from collections import defaultdict import http.server import socketserver @@ -14,7 +14,7 @@ - Polygon.io Snapshot + D3.js Treemap + Massive.com Snapshot + D3.js Treemap