diff --git a/openbb_platform/core/openbb_core/provider/standard_models/company_news.py b/openbb_platform/core/openbb_core/provider/standard_models/company_news.py index 24f8e1edc8b..90047c81127 100644 --- a/openbb_platform/core/openbb_core/provider/standard_models/company_news.py +++ b/openbb_platform/core/openbb_core/provider/standard_models/company_news.py @@ -36,6 +36,11 @@ class CompanyNewsQueryParams(QueryParams): class CompanyNewsData(Data): """Company News Data.""" + symbols: str = Field( + min_length=1, + description=DATA_DESCRIPTIONS.get("symbols", "") + + " Here it is a separated list of symbols.", + ) date: datetime = Field( description=DATA_DESCRIPTIONS.get("date", "") + " Here it is the date of the news." diff --git a/openbb_platform/providers/benzinga/openbb_benzinga/models/company_news.py b/openbb_platform/providers/benzinga/openbb_benzinga/models/company_news.py index 2061aedf79a..238f5c789ef 100644 --- a/openbb_platform/providers/benzinga/openbb_benzinga/models/company_news.py +++ b/openbb_platform/providers/benzinga/openbb_benzinga/models/company_news.py @@ -82,7 +82,12 @@ class BenzingaCompanyNewsQueryParams(CompanyNewsQueryParams): class BenzingaCompanyNewsData(CompanyNewsData): """Benzinga Company News Data.""" - __alias_dict__ = {"date": "created", "text": "body", "images": "image"} + __alias_dict__ = { + "symbols": "stocks", + "date": "created", + "text": "body", + "images": "image", + } id: str = Field(description="ID of the news.") author: Optional[str] = Field(default=None, description="Author of the news.") @@ -106,6 +111,12 @@ class BenzingaCompanyNewsData(CompanyNewsData): default=None, description="Updated date of the news." ) + @field_validator("symbols", mode="before", check_fields=False) + @classmethod + def symbols_string(cls, v): + """Symbols string validator.""" + return ",".join([item["name"] for item in v]) + @field_validator("date", "updated", mode="before", check_fields=False) def date_validate(cls, v): # pylint: disable=E0213 """Return the date as a datetime object.""" diff --git a/openbb_platform/providers/fmp/openbb_fmp/models/company_news.py b/openbb_platform/providers/fmp/openbb_fmp/models/company_news.py index f379a7ab1a1..b87711f2b14 100644 --- a/openbb_platform/providers/fmp/openbb_fmp/models/company_news.py +++ b/openbb_platform/providers/fmp/openbb_fmp/models/company_news.py @@ -27,9 +27,8 @@ class FMPCompanyNewsQueryParams(CompanyNewsQueryParams): class FMPCompanyNewsData(CompanyNewsData): """FMP Company News Data.""" - __alias_dict__ = {"date": "publishedDate"} + __alias_dict__ = {"symbols": "symbol", "date": "publishedDate"} - symbol: str = Field(description="Ticker of the fetched news.") image: Optional[Union[List[str], str]] = Field( default=None, description="URL to the image of the news source." ) diff --git a/openbb_platform/providers/intrinio/openbb_intrinio/models/company_news.py b/openbb_platform/providers/intrinio/openbb_intrinio/models/company_news.py index 5f238ec6f89..b01a4e3c0c4 100644 --- a/openbb_platform/providers/intrinio/openbb_intrinio/models/company_news.py +++ b/openbb_platform/providers/intrinio/openbb_intrinio/models/company_news.py @@ -31,7 +31,11 @@ class IntrinioCompanyNewsQueryParams(CompanyNewsQueryParams): class IntrinioCompanyNewsData(CompanyNewsData): """Intrinio Company News Data.""" - __alias_dict__ = {"date": "publication_date", "text": "summary"} + __alias_dict__ = { + "symbols": "symbol", + "date": "publication_date", + "text": "summary", + } id: str = Field(description="Intrinio ID for the article.") diff --git a/openbb_platform/providers/polygon/openbb_polygon/models/company_news.py b/openbb_platform/providers/polygon/openbb_polygon/models/company_news.py index b886fd42f6b..7b165aaf3f4 100644 --- a/openbb_platform/providers/polygon/openbb_polygon/models/company_news.py +++ b/openbb_platform/providers/polygon/openbb_polygon/models/company_news.py @@ -48,11 +48,18 @@ class PolygonCompanyNewsData(CompanyNewsData): """Polygon Company News Data.""" __alias_dict__ = { + "symbols": "tickers", "url": "article_url", "text": "description", "date": "published_utc", } + @field_validator("symbols", mode="before", check_fields=False) + @classmethod + def symbols_string(cls, v): + """Symbols string validator.""" + return ",".join(v) + amp_url: Optional[str] = Field(default=None, description="AMP URL.") author: Optional[str] = Field(default=None, description="Author of the article.") id: str = Field(description="Article ID.") @@ -61,7 +68,6 @@ class PolygonCompanyNewsData(CompanyNewsData): default=None, description="Keywords in the article" ) publisher: PolygonPublisher = Field(description="Publisher of the article.") - tickers: List[str] = Field(description="Tickers covered in the article.") class PolygonCompanyNewsFetcher( diff --git a/openbb_platform/providers/polygon/tests/record/http/test_polygon_fetchers/test_polygon_company_news_fetcher.yaml b/openbb_platform/providers/polygon/tests/record/http/test_polygon_fetchers/test_polygon_company_news_fetcher.yaml index f54852f208b..07217ed8078 100644 --- a/openbb_platform/providers/polygon/tests/record/http/test_polygon_fetchers/test_polygon_company_news_fetcher.yaml +++ b/openbb_platform/providers/polygon/tests/record/http/test_polygon_fetchers/test_polygon_company_news_fetcher.yaml @@ -5,7 +5,7 @@ interactions: Accept: - '*/*' Accept-Encoding: - - gzip, deflate + - gzip, deflate, br Connection: - keep-alive method: GET @@ -13,165 +13,105 @@ interactions: response: body: string: !!binary | - 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 headers: Connection: - keep-alive @@ -180,9 +120,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 26 Sep 2023 19:08:15 GMT + - Mon, 27 Nov 2023 22:38:16 GMT Link: - - ; + - ; rel="next" Server: - nginx/1.19.2 @@ -195,7 +135,7 @@ interactions: X-Item-Count: - '20' X-Request-Id: - - f4d7a566acd5a6c028ff525ef8961c18 + - dd0711558b767c3afb95daf8636217bc status: code: 200 message: OK diff --git a/openbb_platform/providers/tiingo/openbb_tiingo/models/company_news.py b/openbb_platform/providers/tiingo/openbb_tiingo/models/company_news.py index eae14225c50..812964ec4d9 100644 --- a/openbb_platform/providers/tiingo/openbb_tiingo/models/company_news.py +++ b/openbb_platform/providers/tiingo/openbb_tiingo/models/company_news.py @@ -31,13 +31,11 @@ class TiingoCompanyNewsData(CompanyNewsData): """Tiingo Company News data.""" __alias_dict__ = { + "symbols": "tickers", "date": "publishedDate", "text": "description", } - symbols: str = Field( - description="Ticker tagged in the fetched news.", alias="tickers" - ) article_id: int = Field(description="Unique ID of the news article.", alias="id") site: str = Field(description="Name of the news source.", alias="source") tags: str = Field(description="Tags associated with the news article.") diff --git a/openbb_platform/providers/yfinance/openbb_yfinance/models/company_news.py b/openbb_platform/providers/yfinance/openbb_yfinance/models/company_news.py index 6cc34c79952..d6d48e2839b 100644 --- a/openbb_platform/providers/yfinance/openbb_yfinance/models/company_news.py +++ b/openbb_platform/providers/yfinance/openbb_yfinance/models/company_news.py @@ -23,7 +23,11 @@ class YFinanceCompanyNewsQueryParams(CompanyNewsQueryParams): class YFinanceCompanyNewsData(CompanyNewsData): """YFinance Company News Data.""" - __alias_dict__ = {"date": "providerPublishTime", "url": "link"} + __alias_dict__ = { + "symbols": "relatedTickers", + "date": "providerPublishTime", + "url": "link", + } uuid: str = Field(description="Unique identifier for the news article") publisher: str = Field(description="Publisher of the news article") @@ -31,7 +35,12 @@ class YFinanceCompanyNewsData(CompanyNewsData): thumbnail: Optional[List] = Field( default=None, description="Thumbnail related data to the ticker news article." ) - relatedTickers: str = Field(description="Tickers related to the news article.") + + @field_validator("symbols", mode="before", check_fields=False) + @classmethod + def symbols_string(cls, v): + """Symbols string validator.""" + return ",".join(v) @field_validator("providerPublishTime", mode="before", check_fields=False) @classmethod