Files
OpenBB/openbb_platform/extensions/platform_api
Danglewood d75b22f819 [Feature] Add SSL Certificate Context And Setting For Async/Sync HTTP Requests (#6976)
* add SSL certificate context and setting

* codespell

* linting

* cleanup section

* allow defining uvicorn.run kwargs in system_settings

* refactor to return session objects

* hub service rename it as _request_session

* typing

* more linting

* pylint

* missing __init__ files

* fix test_hub_service

* missing init files..?

* shouldn't need an init file there..

* now for some random linting

* maybe need that __init__ after all...?

* fix test_make_request

* relative import in conftest..?

* issue can't be from missing init files..

* revert the inits

* small cleanup

* pass the kwargs to the async session object on init for use outside of amake_request

* try something...

* try something else..

* turn on verbosity for errors..

* try something else...

* undo test change

* Update lock files

* undo another test check thing

* Revert "Update lock files"

This reverts commit 714df64416.

* try with just the platform lock

* unexpected argument

* do a dummy check to return the session object if it is passed in the kwargs

* also dummy check for TCPConnector instance

* bit more cleanup

* no implementation of server_hostname

* Move setting session to PosthogHandler init

* add comments

* review items

* update PythonSettings model definitions and annotations

* fix latest yfinance breaking changes

* unused import

---------

Co-authored-by: Theodore Aptekarev <aptekarev@gmail.com>
2025-01-21 01:39:32 +00:00
..

OpenBB Platform API Meta Package

This is a meta package for installing a command line script to launch the OpenBB Platform API, and the OpenBB Terminal Pro data connector widgets build script.

Installation

Install this package within an existing OpenBB Platform Python environment.

pip install openbb-platform-api

Usage

The script is run from the command line, with the environment active, by entering:

openbb-api

This will launch a Fast API instance, via uvicorn, at http://127.0.0.1:6900

Keyword Arguments

The behavior of the script can be configured with the use of arguments and keyword arguments.

Launcher specific arguments:

--build                         Build the widgets.json file.
--no-build                      Do not build the widgets.json file.
--login                         Login to the OpenBB Platform.
--no-filter                     Do not filter the widgets.json file.

All other arguments will be passed to uvicorn. Here are the most common ones:

--host TEXT                     Host IP address or hostname.
                                  [default: 127.0.0.1]
--port INTEGER                  Port number.
                                  [default: 6900]
--ssl-keyfile TEXT              SSL key file.
--ssl-certfile TEXT             SSL certificate file.
--ssl-keyfile-password TEXT     SSL keyfile password.
--ssl-version INTEGER           SSL version to use.
                                  (see stdlib ssl module's)
                                  [default: 17]
--ssl-cert-reqs INTEGER         Whether client certificate is required.
                                  (see stdlib ssl module's)
                                  [default: 0]
--ssl-ca-certs TEXT             CA certificates file.
--ssl-ciphers TEXT              Ciphers to use.
                                  (see stdlib ssl module's)
                                  [default: TLSv1]

Run uvicorn --help to get the full list of arguments.

API Over HTTPS

To run the API over the HTTPS protocol, you must first create a self-signed certificate and the associated key. After activating the environment, you can generate the files by entering this to the command line:

openssl req -x509 -days 3650 -out localhost.crt -keyout localhost.key   -newkey rsa:4096 -nodes -sha256   -subj '/CN=localhost' -extensions EXT -config <( \
   printf "[dn]\nCN=localhost\n[req]\ndistinguished_name = dn\n[EXT]\nsubjectAltName=DNS:localhost\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth")

Two files will be created, in the current working directory, that are passed as keyword arguments to the openbb-api entry point.

openbb-api --ssl_keyfile localhost.key --ssl_certfile localhost.crt

Note: Adjust the command to include the full path to the file if the current working directory is not where they are located.

The certificate - localhost.crt - will need to be added to system's trust store. The process for this will depend on the operating system and the user account privilege.

A quick solution is to visit the server's URL, show the details of the warning, and choose to continue anyways.

Contact the system administrator if you are using a work device and require additional permissions to complete the configuration.

This Connection Is Not Private

Location of widgets.json

An OpenBB Terminal Pro data connector requires a file, widgets.json, to be served by the API. It contains the configuration for each widget available to be added to a dashboard. The file is stored, and served from, the environment's assets folder.

/Path/to/environments/envs/obb/assets/widgets.json

It can be manually edited and served without the build process by passing --no-build to the API launch script.

openbb-api --no-build

If you would like to construct this file manually for a custom backend configuration, save the file in the path above.