Remove Ultima provider (#6012)

This commit is contained in:
Igor Radovanovic
2024-01-30 10:57:01 +01:00
committed by GitHub
parent e21721ca39
commit 7a07970fc8
20 changed files with 8 additions and 2298 deletions

View File

@@ -2,10 +2,9 @@
| Provider | URL | Package name | Description | Maintainer |
| --- | --- | --- | --- | --- |
| [FMP](./providers/fmp/README.md) | https://financialmodelingprep.com/ | `openbb-fmp` | Access all stocks discounted cash flow statements, market price, stock markets news, and learn more about Financial Modeling. | [@OpenBB-Finance](https://github.com/OpenBB-finance) |
| [Polygon](./providers/polygon/README.md) | https://polygon.io/ | `openbb-polygon` | Free stock data APIs. Real time and historical data, unlimited usage, tick level and aggregate granularity, in standardized JSON and CSV formats. | [@OpenBB-Finance](https://github.com/OpenBB-finance) |
| [Benzinga](./providers/benzinga/README.md) | https://www.benzinga.com/ | `openbb-benzinga` | Stock Market Quotes, Business News, Financial News, Trading Ideas, and Stock Research by Professionals. | [@OpenBB-Finance](https://github.com/OpenBB-finance) |
| [FRED](./providers/fred/README.md) | https://fred.stlouisfed.org/ | `openbb-fred` | Download, graph, and track 823000 economic time series from 114 sources. | [@OpenBB-Finance](https://github.com/OpenBB-finance) |
| [Ultima](./providers/ultima/README.md) | https://ultimainsights.ai | `openbb-ultima` | Ultima Insights harnesses the power of LLMs + GPT to present relevant news to investors, often before it appears on platforms like Bloomberg. Ultima aims to provide timely and significant information for its users. | [@Ultima-Insights](https://github.com/Ultima-Insights)
| [FMP](./providers/fmp/README.md) | <https://financialmodelingprep.com/> | `openbb-fmp` | Access all stocks discounted cash flow statements, market price, stock markets news, and learn more about Financial Modeling. | [@OpenBB-Finance](https://github.com/OpenBB-finance) |
| [Polygon](./providers/polygon/README.md) | <https://polygon.io/> | `openbb-polygon` | Free stock data APIs. Real time and historical data, unlimited usage, tick level and aggregate granularity, in standardized JSON and CSV formats. | [@OpenBB-Finance](https://github.com/OpenBB-finance) |
| [Benzinga](./providers/benzinga/README.md) | <https://www.benzinga.com/> | `openbb-benzinga` | Stock Market Quotes, Business News, Financial News, Trading Ideas, and Stock Research by Professionals. | [@OpenBB-Finance](https://github.com/OpenBB-finance) |
| [FRED](./providers/fred/README.md) | <https://fred.stlouisfed.org/> | `openbb-fred` | Download, graph, and track 823000 economic time series from 114 sources. | [@OpenBB-Finance](https://github.com/OpenBB-finance) |
<!-- Add your Data Provider integration above this line -->

View File

@@ -37,8 +37,6 @@ This will install the following data providers:
| openbb-sec | [SEC](https://www.sec.gov/edgar/sec-api-documentation) data connector | pip install openbb-sec | Free |
| openbb-tiingo | [Tiingo](https://www.tiingo.com/about/pricing) data connector | pip install openbb-tiingo | Free |
| openbb-tradingeconomics | [TradingEconomics](https://tradingeconomics.com/api) data connector | pip install openbb-tradingeconomics | Paid |
| openbb-ultima | [Ultima Insights](https://ultimainsights.ai/openbb) data connector | pip install openbb-ultima | Paid |
To install extensions that expand the core functionalities specify the extension name or use `all` to install all.
@@ -48,9 +46,10 @@ pip install openbb[charting]
pip install openbb-yfinance
```
Alternatively, you can install all extensions at once.
Alternatively, you can install all extensions at once.
```bash
pip install openbb[all]
pip install openbb[all]
```
> Note: These instruction are specific to v4. For installation instructions and documentation for v3 go to our [website](https://docs.openbb.co/sdk).
@@ -83,7 +82,7 @@ To fully leverage the OpenBB Platform you need to get some API keys to connect w
### 1. OpenBB Hub
Set your keys at [OpenBB Hub](https://my.openbb.co/app/sdk/api-keys) and get your personal access token from https://my.openbb.co/app/sdk/pat to connect with your account.
Set your keys at [OpenBB Hub](https://my.openbb.co/app/sdk/api-keys) and get your personal access token from <https://my.openbb.co/app/sdk/pat> to connect with your account.
```python
>>> from openbb import obb

View File

@@ -229,7 +229,6 @@ class HubService:
intrinio_api_key=settings.features_keys.API_INTRINIO_KEY,
polygon_api_key=settings.features_keys.API_POLYGON_KEY,
nasdaq_api_key=settings.features_keys.API_KEY_QUANDL,
ultima_api_key=settings.features_keys.API_ULTIMA_KEY,
)
return credentials
@@ -249,7 +248,6 @@ class HubService:
API_KEY_FINANCIALMODELINGPREP=get_cred("fmp_api_key"),
API_POLYGON_KEY=get_cred("polygon_api_key"),
API_KEY_QUANDL=get_cred("nasdaq_api_key"),
API_ULTIMA_KEY=get_cred("ultima_api_key"),
)
hub_user_settings = HubUserSettings(features_keys=features_keys)
return hub_user_settings

View File

@@ -147,12 +147,6 @@ def test_news_world(params, headers):
"source": "bloomberg.com",
}
),
# (
# {
# "provider": "ultima",
# "sectors": "Real Estate",
# }
# ),
],
)
@pytest.mark.integration
@@ -164,26 +158,3 @@ def test_news_company(params, headers):
result = requests.get(url, headers=headers, timeout=10)
assert isinstance(result, requests.Response)
assert result.status_code == 200
@pytest.mark.skip("openbb-ultima is not installed on the CI.")
@parametrize(
"params",
[
(
{
"provider": "ultima",
"sectors": "Real Estate",
}
),
],
)
@pytest.mark.integration
def test_news_sector(params, headers):
params = {p: v for p, v in params.items() if v}
query_str = get_querystring(params, [])
url = f"http://0.0.0.0:8000/api/v1/news/sector?{query_str}"
result = requests.get(url, headers=headers, timeout=10)
assert isinstance(result, requests.Response)
assert result.status_code == 200

View File

@@ -141,12 +141,6 @@ def test_news_world(params, obb):
"source": "bloomberg.com",
}
),
# (
# {
# "provider": "ultima",
# "symbols": "AAPL,MSFT",
# }
# ),
],
)
@pytest.mark.integration
@@ -157,25 +151,3 @@ def test_news_company(params, obb):
assert result
assert isinstance(result, OBBject)
assert len(result.results) > 0
@pytest.mark.skip("openbb-ultima is not installed on the CI.")
@parametrize(
"params",
[
(
{
"provider": "ultima",
"sectors": "Real Estate",
}
),
],
)
@pytest.mark.integration
def test_news_sector(params, obb):
params = {p: v for p, v in params.items() if v}
result = obb.news.sector(**params)
assert result
assert isinstance(result, OBBject)
assert len(result.results) > 0

View File

@@ -1,15 +0,0 @@
# OpenBB Ultima Provider
This extension integrates the [Ultima Insights](https://www.ultimainsights.ai/) data provider into the OpenBB Platform.
## Installation
To install the extension:
```bash
pip install openbb-ultima
```
For development please check [Contribution Guidelines](https://github.com/OpenBB-finance/OpenBBTerminal/blob/develop/openbb_platform/CONTRIBUTING.md).
Documentation available [here](https://docs.openbb.co/platform).

View File

@@ -1,27 +0,0 @@
"""Ultima provider module."""
import warnings
from typing import Union
from openbb_core.provider.abstract.provider import Provider
ultima_provider: Union[Provider, None] = None
try:
from openbb_ultima.models.company_news import UltimaCompanyNewsFetcher
from openbb_ultima.models.sector_news import UltimaSectorNewsFetcher
ultima_provider = Provider(
name="ultima",
website="https://www.ultimainsights.ai/openbb",
description="""Ultima harnesses the power of LLMs to deliver news before it hits the frontpage of Bloomberg.""",
credentials=["api_key"],
fetcher_dict={
"CompanyNews": UltimaCompanyNewsFetcher,
"SectorNews": UltimaSectorNewsFetcher,
},
)
except ImportError:
warnings.warn(
"openbb-ultima is not installed. Please install openbb-ultima to use the Ultima provider."
)

View File

@@ -1,95 +0,0 @@
"""Ultima Company News Model."""
from datetime import datetime
from typing import Any, Dict, List, Optional
from openbb_core.provider.abstract.fetcher import Fetcher
from openbb_core.provider.standard_models.company_news import (
CompanyNewsData,
CompanyNewsQueryParams,
)
from openbb_ultima.utils.helpers import get_data
from pydantic import Field
class UltimaCompanyNewsQueryParams(CompanyNewsQueryParams):
"""Ultima Company News Query.
Source: https://api.ultimainsights.ai/v1/api-docs#/default/get_v1_getOpenBBProInsights__tickers_
"""
__alias_dict__ = {
"symbols": "tickers",
}
class UltimaCompanyNewsData(CompanyNewsData):
"""Ultima Company News Data."""
__alias_dict__ = {
"symbols": "ticker",
"date": "publishedDate",
"text": "summary",
"title": "headline",
}
publisher: str = Field(description="Publisher of the news.")
risk_category: str = Field(description="Risk category of the news.")
class UltimaCompanyNewsFetcher(
Fetcher[
UltimaCompanyNewsQueryParams,
List[UltimaCompanyNewsData],
]
):
"""Transform the query, extract and transform the data from the Ultima endpoints."""
@staticmethod
def transform_query(params: Dict[str, Any]) -> UltimaCompanyNewsQueryParams:
"""Transform query."""
return UltimaCompanyNewsQueryParams(**params)
@staticmethod
def extract_data(
query: UltimaCompanyNewsQueryParams,
credentials: Optional[Dict[str, str]],
**kwargs: Any,
) -> List[Dict]:
"""Extract data from Ultima Insights API."""
token = credentials.get("ultima_api_key") if credentials else ""
kwargs["auth"] = token
base_url = "https://api.ultimainsights.ai/v1/getOpenBBProInsights"
querystring = str(query).split("=")[1].split("'")[1].replace(" ", "")
data = []
url = f"{base_url}/{querystring}"
response = get_data(url, **kwargs)
data.extend(response)
return data
@staticmethod
def transform_data(
query: UltimaCompanyNewsQueryParams,
data: List[Dict],
**kwargs: Any,
) -> List[UltimaCompanyNewsData]:
"""Transform data."""
results = []
for ele in data:
for key in ["8k_filings", "articles", "industry_summary"]:
for item in ele[key]:
# manual assignment required for Pydantic to work
item["symbols"] = ele["ticker"]
item["date"] = datetime.strptime(
item["publishedDate"], "%Y-%m-%d %H:%M:%S"
)
item["title"] = item["headline"]
item["url"] = item["url"]
item["publisher"] = item["publisher"]
item["risk_category"] = item["riskCategory"]
results.append(UltimaCompanyNewsData.model_validate(item))
return results

View File

@@ -1,103 +0,0 @@
"""Ultima Sector News Model."""
from datetime import datetime
from typing import Any, Dict, List, Optional
from openbb_core.provider.abstract.fetcher import Fetcher
from openbb_core.provider.standard_models.sector_news import (
SectorNewsData,
SectorNewsQueryParams,
)
from openbb_ultima.utils.helpers import get_data
from pydantic import Field
class UltimaSectorNewsQueryParams(SectorNewsQueryParams):
"""Ultima Sector News Query.
Source: https://api.ultimainsights.ai/v1/api-docs#/default/get_v1_getOpenBBProInsights__tickers_
"""
__alias_dict__ = {
"symbols": "sectors",
}
class UltimaSectorNewsData(SectorNewsData):
"""Ultima Sector News Data."""
__alias_dict__ = {
"symbols": "ticker",
"date": "publishedDate",
"text": "summary",
"title": "headline",
}
publisher: str = Field(description="Publisher of the news.")
risk_category: str = Field(description="Risk category of the news.")
class UltimaSectorNewsFetcher(
Fetcher[
UltimaSectorNewsQueryParams,
List[UltimaSectorNewsData],
]
):
"""Transform the query, extract and transform the data from the Ultima endpoints."""
@staticmethod
def transform_query(params: Dict[str, Any]) -> UltimaSectorNewsQueryParams:
"""Transform query."""
return UltimaSectorNewsQueryParams(**params)
@staticmethod
def extract_data(
query: UltimaSectorNewsQueryParams,
credentials: Optional[Dict[str, str]],
**kwargs: Any,
) -> List[Dict]:
"""Extract data from Ultima Insights API."""
token = credentials.get("ultima_api_key") if credentials else ""
kwargs["auth"] = token
base_url = "https://api.ultimainsights.ai/v1/getCompaniesForSectors"
pro_base_url = "https://api.ultimainsights.ai/v1/getOpenBBProInsights"
querystring = str(query).split("=")[1].split("'")[1]
tickers = []
url = f"{base_url}/{querystring}"
response = get_data(url, **kwargs)
tickers.extend(response)
querystring = ",".join(tickers)
data = []
url = f"{pro_base_url}/{querystring}"
response = get_data(url, **kwargs)
data.extend(response)
return data
@staticmethod
def transform_data(
query: UltimaSectorNewsQueryParams,
data: List[Dict],
**kwargs: Any,
) -> List[UltimaSectorNewsData]:
"""Transform data."""
results = []
for ele in data:
for key in ["8k_filings", "articles", "industry_summary"]:
for item in ele[key]:
# manual assignment required for Pydantic to work
item["symbols"] = ele["ticker"]
item["date"] = datetime.strptime(
item["publishedDate"], "%Y-%m-%d %H:%M:%S"
)
item["title"] = item["headline"]
item["url"] = item["url"]
item["publisher"] = item["publisher"]
item["risk_category"] = item["riskCategory"]
results.append(UltimaSectorNewsData.model_validate(item))
return results

View File

@@ -1,26 +0,0 @@
"""Ultima Helpers."""
from typing import Any, Dict
from openbb_core.provider import helpers
def get_data(url: str, **kwargs: Any) -> Dict:
"""Do an API request to Ultima and return the data."""
auth = kwargs.pop("auth", "")
if auth is None or len(auth) == 0:
raise RuntimeError("Ultima API key is required.")
if "Bearer" not in auth:
auth = f"Bearer {auth}"
result = helpers.make_request(
url,
timeout=10,
headers={"accept": "application/json", "Authorization": auth},
**kwargs,
)
if result.status_code != 200:
data = result.json()
message = data.get("message")
raise RuntimeError(f"Error in Ultima request -> {message}")
return result.json()

File diff suppressed because it is too large Load Diff

View File

@@ -1,18 +0,0 @@
[tool.poetry]
name = "openbb-ultima"
version = "1.1.1"
description = "Ultima Insights extension for OpenBB"
authors = ["Ultima Insights Team <hello@ultimainsights.ai>"]
readme = "README.md"
packages = [{ include = "openbb_ultima" }]
[tool.poetry.dependencies]
python = "^3.8"
openbb-core = "^1.1.1"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
[tool.poetry.plugins."openbb_provider_extension"]
ultima = "openbb_ultima:ultima_provider"

View File

@@ -1,112 +0,0 @@
interactions:
- request:
body: null
headers:
Accept-Encoding:
- gzip, deflate
Authorization:
- Bearer MOCK_API_KEY
Connection:
- keep-alive
accept:
- application/json
method: GET
uri: https://api.ultimainsights.ai/v1/getOpenBBProInsights/AAPL,MSFT
response:
body:
string: "[\n {\n \"8k_filings\": [],\n \"articles\": [],\n \"critical_factors\":
{},\n \"earnings_summary\": {},\n \"industry_summary\": [],\n \"metadata\":
{\n \"is_day_after_earnings\": false,\n \"is_day_before_or_of_earnings\":
false,\n \"n_8k_articles_with_summaries\": 0,\n \"n_articles_with_summaries\":
0,\n \"n_pr_articles_with_summaries\": 0,\n \"symbol_type\": \"Company\"\n
\ },\n \"pr_articles\": [],\n \"ticker\": \"AAPL\"\n },\n {\n \"8k_filings\":
[],\n \"articles\": [\n {\n \"headline\": \"With global regulators
examining Microsoft Corp. ... The unorthodox structure was concocted because
OpenAI is a capped for-profit company housed inside&nbsp;...\",\n \"publishedDate\":
\"2023-12-09 03:57:12\",\n \"publisher\": \"Bloomberg\",\n \"riskCategory\":
\"Competition News\",\n \"summary\": \"Microsoft's $13 billion investment
in OpenAI is under scrutiny by global regulators. Microsoft argues that it
doesn't control OpenAI as it doesn't own a traditional stake. Regulators are
examining whether the collaboration threatens competition and violates antitrust
laws. Microsoft faces intense competition and government regulations, which
may reduce its attractiveness and revenue.\",\n \"url\": \"https://www.bloomberg.com/news/articles/2023-12-08/microsoft-s-answer-to-openai-inquiry-it-doesn-t-own-a-stake\"\n
\ },\n {\n \"headline\": \"The US Federal Trade Commission&#39;s
antitrust case against Amazon.com Inc ... The US Federal Trade Commission
is examining the nature of Microsoft Corp.\",\n \"publishedDate\":
\"2023-12-09 16:02:34\",\n \"publisher\": \"Bloomberg\",\n \"riskCategory\":
\"Competition News\",\n \"summary\": \"Amazon's antitrust case challenges
the agency's assertion that it causes prices to go up on competing websites,
which may impact Microsoft's revenue.\",\n \"url\": \"https://www.bloomberg.com/news/articles/2023-12-08/amazon-seeks-dismissal-of-ftc-antitrust-lawsuit\"\n
\ },\n {\n \"headline\": \"Former Microsoft Product Leader
to Help Launch VERSES AI Developer Platform ... Amazon and the Amazon logo
are trademarks of Amazon.com, Inc. or its&nbsp;...\",\n \"publishedDate\":
\"2023-12-09 04:09:29\",\n \"publisher\": \"The Tech Outlook\",\n \"riskCategory\":
\"Competition News\",\n \"summary\": \"VERSES AI Inc. welcomes Peter
Provost, former Microsoft product leader, as VP of Product, Developer Platforms.
Provost will lead the strategic development and enhancement of VERSES' Intelligence-as-a-Service
platform, leveraging his experience in product engineering and deep understanding
of the developer community.\",\n \"url\": \"https://www.thetechoutlook.com/press-release/former-microsoft-product-leader-to-help-launch-verses-ai-developer-platform/\"\n
\ }\n ],\n \"critical_factors\": {},\n \"earnings_summary\":
{},\n \"industry_summary\": [],\n \"metadata\": {\n \"is_day_after_earnings\":
false,\n \"is_day_before_or_of_earnings\": false,\n \"n_8k_articles_with_summaries\":
0,\n \"n_articles_with_summaries\": 3,\n \"n_pr_articles_with_summaries\":
0,\n \"symbol_type\": \"Company\"\n },\n \"pr_articles\": [],\n
\ \"ticker\": \"MSFT\"\n },\n {\n \"8k_filings\": [],\n \"articles\":
[],\n \"critical_factors\": {},\n \"earnings_summary\": {},\n \"industry_summary\":
[\n {\n \"headline\": \"Microsoft\\\\'s OpenAI Inquiry\",\n \"publishedDate\":
\"2023-12-09 03:57:12\",\n \"publisher\": \"Bloomberg\",\n \"riskCategory\":
\"Financial News\",\n \"summary\": \"Microsoft's $13 billion investment
in OpenAI is being examined by global regulators for potential antitrust violations.
Microsoft argues that it doesn't control OpenAI due to an unusual investment
arrangement. Regulators in the UK and the US are gathering information to
determine if the collaboration threatens competition. Microsoft faces potential
regulatory headaches in Europe as well. The partnership raises competition
concerns if Microsoft reduces its own AI research or restricts OpenAI from
partnering with rivals.\",\n \"url\": \"https://www.bloomberg.com/news/articles/2023-12-08/microsoft-s-answer-to-openai-inquiry-it-doesn-t-own-a-stake\"\n
\ },\n {\n \"headline\": \"Amazon FTC Antitrust Lawsuit\",\n
\ \"publishedDate\": \"2023-12-09 16:02:34\",\n \"publisher\":
\"Bloomberg\",\n \"riskCategory\": \"Legal News\",\n \"summary\":
\"Amazon seeks dismissal of FTC antitrust lawsuit, arguing that the agency's
case lacks evidence of harm to consumers and fails to prove that Amazon's
practices raise prices on competing websites.\",\n \"url\": \"https://www.bloomberg.com/news/articles/2023-12-08/amazon-seeks-dismissal-of-ftc-antitrust-lawsuit\"\n
\ },\n {\n \"headline\": \"Former Microsoft Product Leader\",\n
\ \"publishedDate\": \"2023-12-09 04:09:29\",\n \"publisher\":
\"The Tech Outlook\",\n \"riskCategory\": \"Competition News\",\n \"summary\":
\"VERSES AI Inc. welcomes Peter Provost as VP of Product, Developer Platforms.
Provost brings 18 years of experience from Microsoft and will lead the strategic
development of VERSES' Intelligence-as-a-Service platform.\",\n \"url\":
\"https://www.thetechoutlook.com/press-release/former-microsoft-product-leader-to-help-launch-verses-ai-developer-platform/\"\n
\ },\n {\n \"headline\": \"Microsoft\\\\'s Partnership Controversy\",\n
\ \"publishedDate\": \"2023-12-09 12:23:13\",\n \"publisher\":
\"Digital Information World\",\n \"riskCategory\": \"Competition News\",\n
\ \"summary\": \"Microsoft's partnership with a major tech company is
causing controversy in the Software\\u2014Infrastructure industry.\",\n \"url\":
\"https://www.digitalinformationworld.com/2023/12/microsofts-much-debated-partnership.html\"\n
\ },\n {\n \"headline\": \"EU AI Act\",\n \"publishedDate\":
\"2023-12-09 18:06:52\",\n \"publisher\": \"WIRED\",\n \"riskCategory\":
\"Regulatory News\",\n \"summary\": \"The European Union has agreed
on the AI Act, a comprehensive set of rules for artificial intelligence. The
act includes bans on biometric systems, transparency requirements for AI models,
and fines for non-compliance.\",\n \"url\": \"https://www.wired.com/story/eu-ai-act/\"\n
\ }\n ],\n \"metadata\": {\n \"is_day_after_earnings\": false,\n
\ \"is_day_before_or_of_earnings\": false,\n \"n_8k_articles_with_summaries\":
0,\n \"n_articles_with_summaries\": 5,\n \"n_pr_articles_with_summaries\":
0,\n \"symbol_type\": \"Industry\"\n },\n \"pr_articles\": [],\n
\ \"ticker\": \"Software\\u2014Infrastructure\"\n }\n]\n"
headers:
Access-Control-Allow-Origin:
- '*'
Connection:
- keep-alive
Content-Length:
- '6540'
Content-Type:
- application/json
Date:
- Mon, 11 Dec 2023 12:13:48 GMT
Server:
- nginx/1.18.0 (Ubuntu)
status:
code: 200
message: OK
version: 1

View File

@@ -1,395 +0,0 @@
interactions:
- request:
body: null
headers:
Accept-Encoding:
- gzip, deflate
Authorization:
- Bearer MOCK_API_KEY
Connection:
- keep-alive
accept:
- application/json
method: GET
uri: https://api.ultimainsights.ai/v1/getCompaniesForSectors/Real%20Estate,%20Financial%20Services
response:
body:
string: !!binary |
H4sIAAAAAAAEAyXOWxLCIAwF0K04fLuJAGkbpTYFpHUc978N597+cMgTvkHWHu630HwmXWguFaHu
JCVjMUqCKVaFS+Po6GySEZGsygVPWxHF04HudtLWgL3GAt+Zk1bZ6yUjmbyTNjscdj1+aCmIVxHg
Kk+oJ1dsuB8fnFPlvDf2yfVVyQm1Vmcg8XrXnFadjOkpsfzYNPz+W2p4hxoBAAA=
headers:
Access-Control-Allow-Origin:
- '*'
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- text/html; charset=utf-8
Date:
- Mon, 11 Dec 2023 12:13:48 GMT
Server:
- nginx/1.18.0 (Ubuntu)
Transfer-Encoding:
- chunked
status:
code: 200
message: OK
- request:
body: null
headers:
Accept-Encoding:
- gzip, deflate
Authorization:
- Bearer MOCK_API_KEY
Connection:
- keep-alive
accept:
- application/json
method: GET
uri: https://api.ultimainsights.ai/v1/getOpenBBProInsights/AMT,SPG,STAG,DLR,EQR,CCI,SBAC,CBRE,HST,VTR,AVB,REG,KIM,BXP,EQIX,ESS,INVH,UDR,IRM,PLD,CPT,CSGP,VICI,WELL,MAA,PEAK,EXR,O,WY,FRT,PSA,ARE,ADC,SRG,ABR,IIPR,REFI,AFCG,JOE
response:
body:
string: "[\n {\n \"8k_filings\": [],\n \"articles\": [],\n \"critical_factors\":
{},\n \"earnings_summary\": {},\n \"industry_summary\": [],\n \"metadata\":
{\n \"is_day_after_earnings\": false,\n \"is_day_before_or_of_earnings\":
false,\n \"n_8k_articles_with_summaries\": 0,\n \"n_articles_with_summaries\":
0,\n \"n_pr_articles_with_summaries\": 0,\n \"symbol_type\": \"Company\"\n
\ },\n \"pr_articles\": [],\n \"ticker\": \"AMT\"\n },\n {\n \"8k_filings\":
[],\n \"articles\": [],\n \"critical_factors\": {},\n \"earnings_summary\":
{},\n \"industry_summary\": [],\n \"metadata\": {\n \"is_day_after_earnings\":
false,\n \"is_day_before_or_of_earnings\": false,\n \"n_8k_articles_with_summaries\":
0,\n \"n_articles_with_summaries\": 0,\n \"n_pr_articles_with_summaries\":
0,\n \"symbol_type\": \"Company\"\n },\n \"pr_articles\": [],\n
\ \"ticker\": \"SPG\"\n },\n {\n \"8k_filings\": [],\n \"articles\":
[],\n \"critical_factors\": {},\n \"earnings_summary\": {},\n \"industry_summary\":
[],\n \"metadata\": {\n \"is_day_after_earnings\": false,\n \"is_day_before_or_of_earnings\":
false,\n \"n_8k_articles_with_summaries\": 0,\n \"n_articles_with_summaries\":
0,\n \"n_pr_articles_with_summaries\": 0,\n \"symbol_type\": \"Company\"\n
\ },\n \"pr_articles\": [],\n \"ticker\": \"STAG\"\n },\n {\n \"8k_filings\":
[],\n \"articles\": [],\n \"critical_factors\": {},\n \"earnings_summary\":
{},\n \"industry_summary\": [],\n \"metadata\": {\n \"is_day_after_earnings\":
false,\n \"is_day_before_or_of_earnings\": false,\n \"n_8k_articles_with_summaries\":
0,\n \"n_articles_with_summaries\": 0,\n \"n_pr_articles_with_summaries\":
0,\n \"symbol_type\": \"Company\"\n },\n \"pr_articles\": [],\n
\ \"ticker\": \"DLR\"\n },\n {\n \"8k_filings\": [],\n \"articles\":
[\n {\n \"headline\": \"... purchase, Redfall and Starfield are
new intellectual properties \\u2013 a distinction that might decide how Redmond
handles future exclusives. However&nbsp;...\",\n \"publishedDate\":
\"2023-12-09 15:57:06\",\n \"publisher\": \"TechSpot\",\n \"riskCategory\":
\"Competition News\",\n \"summary\": \"FTC continues fighting Microsoft-Activision
deal post-closure, raising concerns about Microsoft's potential exclusivity
with Call of Duty and other Activision Blizzard properties. This could impact
EQR's competition risk as it faces other real estate companies.\",\n \"url\":
\"https://www.techspot.com/news/101136-ftc-continues-fighting-microsoft-activision-deal-post-closure.html\"\n
\ },\n {\n \"headline\": \"... home rental property acquired
as an investment towards retirement. So, the home is sold to a large management
company that raises the rent and has&nbsp;...\",\n \"publishedDate\":
\"2023-12-09 08:23:03\",\n \"publisher\": \"The Jolt News\",\n \"riskCategory\":
\"Interest Rate News, Competition News, Regulatory News, Economic News, Political
News, Financial News, Legal News\",\n \"summary\": \"Residents of Western
Plaza Mobile Home Park in Tumwater, WA, are organizing against rent hikes
imposed by Legacy Communities LLC. The company acquired the park and announced
monthly rental increases of 18%, causing concern among tenants on fixed incomes.
This article highlights the impact of rising rents on vulnerable seniors and
the efforts of Resident Action to advocate for rent caps and regulations.
EQR, as a real estate investment trust, faces similar risks related to rental
income, regulatory changes, and competition.\",\n \"url\": \"https://www.thejoltnews.com/stories/tumwater-mobile-home-tenants-lobby-against-rent-hikes,13259\"\n
\ }\n ],\n \"critical_factors\": {},\n \"earnings_summary\":
{},\n \"industry_summary\": [],\n \"metadata\": {\n \"is_day_after_earnings\":
false,\n \"is_day_before_or_of_earnings\": false,\n \"n_8k_articles_with_summaries\":
0,\n \"n_articles_with_summaries\": 2,\n \"n_pr_articles_with_summaries\":
0,\n \"symbol_type\": \"Company\"\n },\n \"pr_articles\": [],\n
\ \"ticker\": \"EQR\"\n },\n {\n \"8k_filings\": [],\n \"articles\":
[\n {\n \"headline\": \"Everest Infrastructure Partners and TowerCo
acquire 546 towers from Charter Communications ... Tower companies Everest
Infrastructure Partners and&nbsp;...\",\n \"publishedDate\": \"2023-12-09
02:12:09\",\n \"publisher\": \"Data Center Dynamics\",\n \"riskCategory\":
\"Competition News\",\n \"summary\": \"Everest Infrastructure Partners
and TowerCo acquire 546 towers from Charter Communications, with Charter receiving
tower-use rights and becoming preferred fiber provider. The deal expands network
coverage and leasing activities for Everest and TowerCo.\",\n \"url\":
\"https://www.datacenterdynamics.com/en/news/everest-infrastructure-partners-and-towerco-acquire-546-towers-from-charter-communications/\"\n
\ }\n ],\n \"critical_factors\": {},\n \"earnings_summary\":
{},\n \"industry_summary\": [],\n \"metadata\": {\n \"is_day_after_earnings\":
false,\n \"is_day_before_or_of_earnings\": false,\n \"n_8k_articles_with_summaries\":
0,\n \"n_articles_with_summaries\": 1,\n \"n_pr_articles_with_summaries\":
0,\n \"symbol_type\": \"Company\"\n },\n \"pr_articles\": [],\n
\ \"ticker\": \"CCI\"\n },\n {\n \"8k_filings\": [],\n \"articles\":
[\n {\n \"headline\": \"Everest Infrastructure Partners and TowerCo
acquire 546 towers from Charter Communications ... Tower companies Everest
Infrastructure Partners and&nbsp;...\",\n \"publishedDate\": \"2023-12-09
02:12:09\",\n \"publisher\": \"Data Center Dynamics\",\n \"riskCategory\":
\"Competition News\",\n \"summary\": \"SBAC's tower assets are not
involved in the acquisition of 546 wireless towers by Everest Infrastructure
Partners and TowerCo from Charter Communications.\",\n \"url\": \"https://www.datacenterdynamics.com/en/news/everest-infrastructure-partners-and-towerco-acquire-546-towers-from-charter-communications/\"\n
\ }\n ],\n \"critical_factors\": {},\n \"earnings_summary\":
{},\n \"industry_summary\": [],\n \"metadata\": {\n \"is_day_after_earnings\":
false,\n \"is_day_before_or_of_earnings\": false,\n \"n_8k_articles_with_summaries\":
0,\n \"n_articles_with_summaries\": 1,\n \"n_pr_articles_with_summaries\":
0,\n \"symbol_type\": \"Company\"\n },\n \"pr_articles\": [],\n
\ \"ticker\": \"SBAC\"\n },\n {\n \"8k_filings\": [],\n \"articles\":
[],\n \"critical_factors\": {},\n \"earnings_summary\": {},\n \"industry_summary\":
[],\n \"metadata\": {\n \"is_day_after_earnings\": false,\n \"is_day_before_or_of_earnings\":
false,\n \"n_8k_articles_with_summaries\": 0,\n \"n_articles_with_summaries\":
0,\n \"n_pr_articles_with_summaries\": 0,\n \"symbol_type\": \"Company\"\n
\ },\n \"pr_articles\": [],\n \"ticker\": \"CBRE\"\n },\n {\n \"8k_filings\":
[],\n \"articles\": [],\n \"critical_factors\": {},\n \"earnings_summary\":
{},\n \"industry_summary\": [],\n \"metadata\": {\n \"is_day_after_earnings\":
false,\n \"is_day_before_or_of_earnings\": false,\n \"n_8k_articles_with_summaries\":
0,\n \"n_articles_with_summaries\": 0,\n \"n_pr_articles_with_summaries\":
0,\n \"symbol_type\": \"Company\"\n },\n \"pr_articles\": [],\n
\ \"ticker\": \"HST\"\n },\n {\n \"8k_filings\": [],\n \"articles\":
[],\n \"critical_factors\": {},\n \"earnings_summary\": {},\n \"industry_summary\":
[],\n \"metadata\": {\n \"is_day_after_earnings\": false,\n \"is_day_before_or_of_earnings\":
false,\n \"n_8k_articles_with_summaries\": 0,\n \"n_articles_with_summaries\":
0,\n \"n_pr_articles_with_summaries\": 0,\n \"symbol_type\": \"Company\"\n
\ },\n \"pr_articles\": [],\n \"ticker\": \"VTR\"\n },\n {\n \"8k_filings\":
[],\n \"articles\": [\n {\n \"headline\": \"... home rental
property acquired as an investment towards retirement. So, the home is sold
to a large management company that raises the rent and has&nbsp;...\",\n \"publishedDate\":
\"2023-12-09 08:23:03\",\n \"publisher\": \"The Jolt News\",\n \"riskCategory\":
\"Real Estate\",\n \"summary\": \"Residents of Western Plaza Mobile
Home Park in Tumwater, WA, are organizing against rent hikes imposed by Legacy
Communities LLC. The company acquired the park and announced monthly rental
increases of 18%, causing concern among tenants on fixed incomes. This article
highlights the efforts of the tenant group and their push for legislative
action to address the issue. AVB, as a real estate company, may face similar
challenges related to rent increases and tenant rights.\",\n \"url\":
\"https://www.thejoltnews.com/stories/tumwater-mobile-home-tenants-lobby-against-rent-hikes,13259\"\n
\ }\n ],\n \"critical_factors\": {},\n \"earnings_summary\":
{},\n \"industry_summary\": [],\n \"metadata\": {\n \"is_day_after_earnings\":
false,\n \"is_day_before_or_of_earnings\": false,\n \"n_8k_articles_with_summaries\":
0,\n \"n_articles_with_summaries\": 1,\n \"n_pr_articles_with_summaries\":
0,\n \"symbol_type\": \"Company\"\n },\n \"pr_articles\": [],\n
\ \"ticker\": \"AVB\"\n },\n {\n \"8k_filings\": [],\n \"articles\":
[],\n \"critical_factors\": {},\n \"earnings_summary\": {},\n \"industry_summary\":
[],\n \"metadata\": {\n \"is_day_after_earnings\": false,\n \"is_day_before_or_of_earnings\":
false,\n \"n_8k_articles_with_summaries\": 0,\n \"n_articles_with_summaries\":
0,\n \"n_pr_articles_with_summaries\": 0,\n \"symbol_type\": \"Company\"\n
\ },\n \"pr_articles\": [],\n \"ticker\": \"REG\"\n },\n {\n \"8k_filings\":
[],\n \"articles\": [],\n \"critical_factors\": {},\n \"earnings_summary\":
{},\n \"industry_summary\": [],\n \"metadata\": {\n \"is_day_after_earnings\":
false,\n \"is_day_before_or_of_earnings\": false,\n \"n_8k_articles_with_summaries\":
0,\n \"n_articles_with_summaries\": 0,\n \"n_pr_articles_with_summaries\":
0,\n \"symbol_type\": \"Company\"\n },\n \"pr_articles\": [],\n
\ \"ticker\": \"KIM\"\n },\n {\n \"8k_filings\": [],\n \"articles\":
[\n {\n \"headline\": \"Dream Office REIT (. D-UN-T -3.12%decrease.
) also has gained 26 per cent from its low. Among U.S. REITs, Boston Properties
Inc. (. BXP-N -1.25%&nbsp;...\",\n \"publishedDate\": \"2023-12-09
08:00:29\",\n \"publisher\": \"The Globe and Mail\",\n \"riskCategory\":
\"Economic News and Financial News\",\n \"summary\": \"Office REITs
are rallying despite high vacancies, posing a threat to BXP.\",\n \"url\":
\"https://www.theglobeandmail.com/investing/markets/inside-the-market/article-office-reits-are-rallying-but-high-vacancies-are-still-a-threat/\"\n
\ }\n ],\n \"critical_factors\": {},\n \"earnings_summary\":
{},\n \"industry_summary\": [],\n \"metadata\": {\n \"is_day_after_earnings\":
false,\n \"is_day_before_or_of_earnings\": false,\n \"n_8k_articles_with_summaries\":
0,\n \"n_articles_with_summaries\": 1,\n \"n_pr_articles_with_summaries\":
0,\n \"symbol_type\": \"Company\"\n },\n \"pr_articles\": [],\n
\ \"ticker\": \"BXP\"\n },\n {\n \"8k_filings\": [],\n \"articles\":
[],\n \"critical_factors\": {},\n \"earnings_summary\": {},\n \"industry_summary\":
[],\n \"metadata\": {\n \"is_day_after_earnings\": false,\n \"is_day_before_or_of_earnings\":
false,\n \"n_8k_articles_with_summaries\": 0,\n \"n_articles_with_summaries\":
0,\n \"n_pr_articles_with_summaries\": 0,\n \"symbol_type\": \"Company\"\n
\ },\n \"pr_articles\": [],\n \"ticker\": \"EQIX\"\n },\n {\n \"8k_filings\":
[],\n \"articles\": [],\n \"critical_factors\": {},\n \"earnings_summary\":
{},\n \"industry_summary\": [],\n \"metadata\": {\n \"is_day_after_earnings\":
false,\n \"is_day_before_or_of_earnings\": false,\n \"n_8k_articles_with_summaries\":
0,\n \"n_articles_with_summaries\": 0,\n \"n_pr_articles_with_summaries\":
0,\n \"symbol_type\": \"Company\"\n },\n \"pr_articles\": [],\n
\ \"ticker\": \"ESS\"\n },\n {\n \"8k_filings\": [],\n \"articles\":
[],\n \"critical_factors\": {},\n \"earnings_summary\": {},\n \"industry_summary\":
[],\n \"metadata\": {\n \"is_day_after_earnings\": false,\n \"is_day_before_or_of_earnings\":
false,\n \"n_8k_articles_with_summaries\": 0,\n \"n_articles_with_summaries\":
0,\n \"n_pr_articles_with_summaries\": 0,\n \"symbol_type\": \"Company\"\n
\ },\n \"pr_articles\": [],\n \"ticker\": \"INVH\"\n },\n {\n \"8k_filings\":
[],\n \"articles\": [\n {\n \"headline\": \"... home rental
property acquired as an investment towards retirement. So, the home is sold
to a large management company that raises the rent and has&nbsp;...\",\n \"publishedDate\":
\"2023-12-09 08:23:03\",\n \"publisher\": \"The Jolt News\",\n \"riskCategory\":
\"Competition, Economic Conditions, Interest Rate News, Regulatory News, Technology
News, Reputational News, Cybersecurity News, Financial News, Legal News\",\n
\ \"summary\": \"UDR, Inc. may face regulatory risk as tenants in mobile
home communities organize against rent hikes, impacting the demand for services
and potentially affecting UDR's business. The article highlights the challenges
faced by residents of Western Plaza Mobile Home Park and their efforts to
oppose rent increases imposed by a national management company. This situation
underscores the regulatory risks UDR faces in relation to tenant rights and
ownership restrictions.\",\n \"url\": \"https://www.thejoltnews.com/stories/tumwater-mobile-home-tenants-lobby-against-rent-hikes,13259\"\n
\ }\n ],\n \"critical_factors\": {},\n \"earnings_summary\":
{},\n \"industry_summary\": [],\n \"metadata\": {\n \"is_day_after_earnings\":
false,\n \"is_day_before_or_of_earnings\": false,\n \"n_8k_articles_with_summaries\":
0,\n \"n_articles_with_summaries\": 1,\n \"n_pr_articles_with_summaries\":
0,\n \"symbol_type\": \"Company\"\n },\n \"pr_articles\": [],\n
\ \"ticker\": \"UDR\"\n },\n {\n \"8k_filings\": [],\n \"articles\":
[],\n \"critical_factors\": {},\n \"earnings_summary\": {},\n \"industry_summary\":
[],\n \"metadata\": {\n \"is_day_after_earnings\": false,\n \"is_day_before_or_of_earnings\":
false,\n \"n_8k_articles_with_summaries\": 0,\n \"n_articles_with_summaries\":
0,\n \"n_pr_articles_with_summaries\": 0,\n \"symbol_type\": \"Company\"\n
\ },\n \"pr_articles\": [],\n \"ticker\": \"IRM\"\n },\n {\n \"8k_filings\":
[],\n \"articles\": [],\n \"critical_factors\": {},\n \"earnings_summary\":
{},\n \"industry_summary\": [],\n \"metadata\": {\n \"is_day_after_earnings\":
false,\n \"is_day_before_or_of_earnings\": false,\n \"n_8k_articles_with_summaries\":
0,\n \"n_articles_with_summaries\": 0,\n \"n_pr_articles_with_summaries\":
0,\n \"symbol_type\": \"Company\"\n },\n \"pr_articles\": [],\n
\ \"ticker\": \"PLD\"\n },\n {\n \"8k_filings\": [],\n \"articles\":
[\n {\n \"headline\": \"... home rental property acquired as an
investment towards retirement. So, the home is sold to a large management
company that raises the rent and has&nbsp;...\",\n \"publishedDate\":
\"2023-12-09 08:23:03\",\n \"publisher\": \"The Jolt News\",\n \"riskCategory\":
\"Interest Rate News, Economic News, Political News, Regulatory News, Competition
News, Financial News, Legal News\",\n \"summary\": \"Camden Property
Trust faces challenges as large management companies raise rents on rental
properties, potentially decreasing the pool of affordable housing. The article
highlights the impact of rent increases on seniors and the efforts of tenant
associations to advocate for rent caps and regulations. This demonstrates
the economic and regulatory risks faced by CPT.\",\n \"url\": \"https://www.thejoltnews.com/stories/tumwater-mobile-home-tenants-lobby-against-rent-hikes,13259\"\n
\ }\n ],\n \"critical_factors\": {},\n \"earnings_summary\":
{},\n \"industry_summary\": [],\n \"metadata\": {\n \"is_day_after_earnings\":
false,\n \"is_day_before_or_of_earnings\": false,\n \"n_8k_articles_with_summaries\":
0,\n \"n_articles_with_summaries\": 1,\n \"n_pr_articles_with_summaries\":
0,\n \"symbol_type\": \"Company\"\n },\n \"pr_articles\": [],\n
\ \"ticker\": \"CPT\"\n },\n {\n \"8k_filings\": [],\n \"articles\":
[],\n \"critical_factors\": {},\n \"earnings_summary\": {},\n \"industry_summary\":
[],\n \"metadata\": {\n \"is_day_after_earnings\": false,\n \"is_day_before_or_of_earnings\":
false,\n \"n_8k_articles_with_summaries\": 0,\n \"n_articles_with_summaries\":
0,\n \"n_pr_articles_with_summaries\": 0,\n \"symbol_type\": \"Company\"\n
\ },\n \"pr_articles\": [],\n \"ticker\": \"CSGP\"\n },\n {\n \"8k_filings\":
[],\n \"articles\": [],\n \"critical_factors\": {},\n \"earnings_summary\":
{},\n \"industry_summary\": [],\n \"metadata\": {\n \"is_day_after_earnings\":
false,\n \"is_day_before_or_of_earnings\": false,\n \"n_8k_articles_with_summaries\":
0,\n \"n_articles_with_summaries\": 0,\n \"n_pr_articles_with_summaries\":
0,\n \"symbol_type\": \"Company\"\n },\n \"pr_articles\": [],\n
\ \"ticker\": \"VICI\"\n },\n {\n \"8k_filings\": [],\n \"articles\":
[],\n \"critical_factors\": {},\n \"earnings_summary\": {},\n \"industry_summary\":
[],\n \"metadata\": {\n \"is_day_after_earnings\": false,\n \"is_day_before_or_of_earnings\":
false,\n \"n_8k_articles_with_summaries\": 0,\n \"n_articles_with_summaries\":
0,\n \"n_pr_articles_with_summaries\": 0,\n \"symbol_type\": \"Company\"\n
\ },\n \"pr_articles\": [],\n \"ticker\": \"WELL\"\n },\n {\n \"8k_filings\":
[],\n \"articles\": [\n {\n \"headline\": \"... home rental
property acquired as an investment towards retirement. So, the home is sold
to a large management company that raises the rent and has&nbsp;...\",\n \"publishedDate\":
\"2023-12-09 08:23:03\",\n \"publisher\": \"The Jolt News\",\n \"riskCategory\":
\"Competition News\",\n \"summary\": \"Residents of Western Plaza Mobile
Home Park in Tumwater, WA, are organizing against rent hikes imposed by Legacy
Communities LLC. The rent increases have alarmed tenants on fixed incomes
and sparked a collective urgency to organize opposition. Mid-America Apartment
Communities (MAA) faces Competition Risk from other apartment communities,
which can lead to higher prices, lower occupancy rates, and reduced revenue.\",\n
\ \"url\": \"https://www.thejoltnews.com/stories/tumwater-mobile-home-tenants-lobby-against-rent-hikes,13259\"\n
\ }\n ],\n \"critical_factors\": {},\n \"earnings_summary\":
{},\n \"industry_summary\": [],\n \"metadata\": {\n \"is_day_after_earnings\":
false,\n \"is_day_before_or_of_earnings\": false,\n \"n_8k_articles_with_summaries\":
0,\n \"n_articles_with_summaries\": 1,\n \"n_pr_articles_with_summaries\":
0,\n \"symbol_type\": \"Company\"\n },\n \"pr_articles\": [],\n
\ \"ticker\": \"MAA\"\n },\n {\n \"8k_filings\": [],\n \"articles\":
[],\n \"critical_factors\": {},\n \"earnings_summary\": {},\n \"industry_summary\":
[],\n \"metadata\": {\n \"is_day_after_earnings\": false,\n \"is_day_before_or_of_earnings\":
false,\n \"n_8k_articles_with_summaries\": 0,\n \"n_articles_with_summaries\":
0,\n \"n_pr_articles_with_summaries\": 0,\n \"symbol_type\": \"Company\"\n
\ },\n \"pr_articles\": [],\n \"ticker\": \"PEAK\"\n },\n {\n \"8k_filings\":
[],\n \"articles\": [],\n \"critical_factors\": {},\n \"earnings_summary\":
{},\n \"industry_summary\": [],\n \"metadata\": {\n \"is_day_after_earnings\":
false,\n \"is_day_before_or_of_earnings\": false,\n \"n_8k_articles_with_summaries\":
0,\n \"n_articles_with_summaries\": 0,\n \"n_pr_articles_with_summaries\":
0,\n \"symbol_type\": \"Company\"\n },\n \"pr_articles\": [],\n
\ \"ticker\": \"EXR\"\n },\n {\n \"8k_filings\": [],\n \"articles\":
[],\n \"critical_factors\": {},\n \"earnings_summary\": {},\n \"industry_summary\":
[],\n \"metadata\": {\n \"is_day_after_earnings\": false,\n \"is_day_before_or_of_earnings\":
false,\n \"n_8k_articles_with_summaries\": 0,\n \"n_articles_with_summaries\":
0,\n \"n_pr_articles_with_summaries\": 0,\n \"symbol_type\": \"Company\"\n
\ },\n \"pr_articles\": [],\n \"ticker\": \"O\"\n },\n {\n \"8k_filings\":
[],\n \"articles\": [],\n \"critical_factors\": {},\n \"earnings_summary\":
{},\n \"industry_summary\": [],\n \"metadata\": {\n \"is_day_after_earnings\":
false,\n \"is_day_before_or_of_earnings\": false,\n \"n_8k_articles_with_summaries\":
0,\n \"n_articles_with_summaries\": 0,\n \"n_pr_articles_with_summaries\":
0,\n \"symbol_type\": \"Company\"\n },\n \"pr_articles\": [],\n
\ \"ticker\": \"WY\"\n },\n {\n \"8k_filings\": [],\n \"articles\":
[],\n \"critical_factors\": {},\n \"earnings_summary\": {},\n \"industry_summary\":
[],\n \"metadata\": {\n \"is_day_after_earnings\": false,\n \"is_day_before_or_of_earnings\":
false,\n \"n_8k_articles_with_summaries\": 0,\n \"n_articles_with_summaries\":
0,\n \"n_pr_articles_with_summaries\": 0,\n \"symbol_type\": \"Company\"\n
\ },\n \"pr_articles\": [],\n \"ticker\": \"FRT\"\n },\n {\n \"8k_filings\":
[],\n \"articles\": [],\n \"critical_factors\": {},\n \"earnings_summary\":
{},\n \"industry_summary\": [],\n \"metadata\": {\n \"is_day_after_earnings\":
false,\n \"is_day_before_or_of_earnings\": false,\n \"n_8k_articles_with_summaries\":
0,\n \"n_articles_with_summaries\": 0,\n \"n_pr_articles_with_summaries\":
0,\n \"symbol_type\": \"Company\"\n },\n \"pr_articles\": [],\n
\ \"ticker\": \"PSA\"\n },\n {\n \"8k_filings\": [],\n \"articles\":
[],\n \"critical_factors\": {},\n \"earnings_summary\": {},\n \"industry_summary\":
[],\n \"metadata\": {\n \"is_day_after_earnings\": false,\n \"is_day_before_or_of_earnings\":
false,\n \"n_8k_articles_with_summaries\": 0,\n \"n_articles_with_summaries\":
0,\n \"n_pr_articles_with_summaries\": 0,\n \"symbol_type\": \"Company\"\n
\ },\n \"pr_articles\": [],\n \"ticker\": \"ARE\"\n },\n {\n \"8k_filings\":
[],\n \"articles\": [],\n \"critical_factors\": {},\n \"earnings_summary\":
{},\n \"industry_summary\": [],\n \"metadata\": {\n \"is_day_after_earnings\":
false,\n \"is_day_before_or_of_earnings\": false,\n \"n_8k_articles_with_summaries\":
0,\n \"n_articles_with_summaries\": 0,\n \"n_pr_articles_with_summaries\":
0,\n \"symbol_type\": \"Company\"\n },\n \"pr_articles\": [],\n
\ \"ticker\": \"ADC\"\n },\n {\n \"8k_filings\": [],\n \"articles\":
[],\n \"critical_factors\": {},\n \"earnings_summary\": {},\n \"industry_summary\":
[],\n \"metadata\": {\n \"is_day_after_earnings\": false,\n \"is_day_before_or_of_earnings\":
false,\n \"n_8k_articles_with_summaries\": 0,\n \"n_articles_with_summaries\":
0,\n \"n_pr_articles_with_summaries\": 0,\n \"symbol_type\": \"Company\"\n
\ },\n \"pr_articles\": [],\n \"ticker\": \"SRG\"\n },\n {\n \"8k_filings\":
[],\n \"articles\": [],\n \"critical_factors\": {},\n \"earnings_summary\":
{},\n \"industry_summary\": [],\n \"metadata\": {\n \"is_day_after_earnings\":
false,\n \"is_day_before_or_of_earnings\": false,\n \"n_8k_articles_with_summaries\":
0,\n \"n_articles_with_summaries\": 0,\n \"n_pr_articles_with_summaries\":
0,\n \"symbol_type\": \"Company\"\n },\n \"pr_articles\": [],\n
\ \"ticker\": \"ABR\"\n },\n {\n \"8k_filings\": [],\n \"articles\":
[],\n \"critical_factors\": {},\n \"earnings_summary\": {},\n \"industry_summary\":
[],\n \"metadata\": {\n \"is_day_after_earnings\": false,\n \"is_day_before_or_of_earnings\":
false,\n \"n_8k_articles_with_summaries\": 0,\n \"n_articles_with_summaries\":
0,\n \"n_pr_articles_with_summaries\": 0,\n \"symbol_type\": \"Company\"\n
\ },\n \"pr_articles\": [],\n \"ticker\": \"IIPR\"\n },\n {\n \"8k_filings\":
[],\n \"articles\": [],\n \"critical_factors\": {},\n \"earnings_summary\":
{},\n \"industry_summary\": [],\n \"metadata\": {\n \"is_day_after_earnings\":
false,\n \"is_day_before_or_of_earnings\": false,\n \"n_8k_articles_with_summaries\":
0,\n \"n_articles_with_summaries\": 0,\n \"n_pr_articles_with_summaries\":
0,\n \"symbol_type\": \"Company\"\n },\n \"pr_articles\": [],\n
\ \"ticker\": \"REFI\"\n },\n {\n \"8k_filings\": [],\n \"articles\":
[],\n \"critical_factors\": {},\n \"earnings_summary\": {},\n \"industry_summary\":
[],\n \"metadata\": {\n \"is_day_after_earnings\": false,\n \"is_day_before_or_of_earnings\":
false,\n \"n_8k_articles_with_summaries\": 0,\n \"n_articles_with_summaries\":
0,\n \"n_pr_articles_with_summaries\": 0,\n \"symbol_type\": \"Company\"\n
\ },\n \"pr_articles\": [],\n \"ticker\": \"AFCG\"\n },\n {\n \"8k_filings\":
[],\n \"articles\": [],\n \"critical_factors\": {},\n \"earnings_summary\":
{},\n \"industry_summary\": [],\n \"metadata\": {\n \"is_day_after_earnings\":
false,\n \"is_day_before_or_of_earnings\": false,\n \"n_8k_articles_with_summaries\":
0,\n \"n_articles_with_summaries\": 0,\n \"n_pr_articles_with_summaries\":
0,\n \"symbol_type\": \"Company\"\n },\n \"pr_articles\": [],\n
\ \"ticker\": \"JOE\"\n },\n {\n \"8k_filings\": [],\n \"articles\":
[],\n \"critical_factors\": {},\n \"earnings_summary\": {},\n \"industry_summary\":
[\n {\n \"headline\": \"FTC Microsoft-Activision Deal\",\n \"publishedDate\":
\"2023-12-09 15:57:06\",\n \"publisher\": \"TechSpot\",\n \"riskCategory\":
\"Competition News\",\n \"summary\": \"The US Federal Trade Commission
(FTC) continues to challenge Microsoft's acquisition of Activision Blizzard,
arguing that Microsoft could withhold Activision Blizzard content from rival
platforms. The FTC claims that Microsoft's decision to make Zenimax titles
Xbox exclusive after purchasing that company supports this concern. However,
Microsoft has made concessions to regulators and signed a deal with Sony to
keep future Call of Duty entries on PlayStation.\",\n \"url\": \"https://www.techspot.com/news/101136-ftc-continues-fighting-microsoft-activision-deal-post-closure.html\"\n
\ }\n ],\n \"metadata\": {\n \"is_day_after_earnings\": false,\n
\ \"is_day_before_or_of_earnings\": false,\n \"n_8k_articles_with_summaries\":
0,\n \"n_articles_with_summaries\": 1,\n \"n_pr_articles_with_summaries\":
0,\n \"symbol_type\": \"Industry\"\n },\n \"pr_articles\": [],\n
\ \"ticker\": \"REIT\\u2014Residential\"\n }\n]\n"
headers:
Access-Control-Allow-Origin:
- '*'
Connection:
- keep-alive
Content-Length:
- '26011'
Content-Type:
- application/json
Date:
- Mon, 11 Dec 2023 12:13:49 GMT
Server:
- nginx/1.18.0 (Ubuntu)
status:
code: 200
message: OK
version: 1

View File

@@ -1,45 +0,0 @@
import pytest
from openbb_core.app.service.user_service import UserService
try:
from openbb_ultima.models.company_news import UltimaCompanyNewsFetcher
from openbb_ultima.models.sector_news import UltimaSectorNewsFetcher
except ImportError:
pytest.skip("openbb-ultima is not installed on the CI.", allow_module_level=True)
test_credentials = UserService().default_user_settings.credentials.model_dump(
mode="json"
)
test_credentials["ultima_api_key"] = "MOCK_API_KEY" # pragma: allowlist secret
@pytest.fixture(scope="module")
def vcr_config():
return {
"filter_headers": [
("User-Agent", None),
("Authorization", "Bearer MOCK_API_KEY"),
],
}
@pytest.mark.record_http
@pytest.mark.skip(reason="openbb-ultima is not installed on the CI.")
def test_ultima_company_news_fetcher(credentials=test_credentials):
params = {"symbols": "AAPL, MSFT"}
fetcher = UltimaCompanyNewsFetcher()
result = fetcher.test(params, credentials)
assert result is None
@pytest.mark.record_http
@pytest.mark.skip(reason="openbb-ultima is not installed on the CI.")
def test_ultima_sector_news_fetcher(credentials=test_credentials):
params = {"sectors": "Real Estate, Financial Services"}
fetcher = UltimaSectorNewsFetcher()
result = fetcher.test(params, credentials)
assert result is None