Files
OpenBB/platform/development/standardization.html
github-actions[bot] f7d5e34f76 deploy: 11023f8c27
2024-04-01 17:15:31 +00:00

19 lines
68 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-platform/development/standardization" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v2.4.3">
<title data-rh="true">Standardization - Development | OpenBB Platform Docs</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://docs.openbb.co/img/banner.png"><meta data-rh="true" name="twitter:image" content="https://docs.openbb.co/img/banner.png"><meta data-rh="true" property="og:url" content="https://docs.openbb.co/platform/development/standardization"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Standardization | OpenBB Docs"><meta data-rh="true" name="description" content="Learn about the OpenBB Platform, an open-source solution built by the community. Understand its use via Python interface and REST API, and acquaint yourself with how to build a custom extension or contribute directly to the platform"><meta data-rh="true" property="og:description" content="Learn about the OpenBB Platform, an open-source solution built by the community. Understand its use via Python interface and REST API, and acquaint yourself with how to build a custom extension or contribute directly to the platform"><meta data-rh="true" name="keywords" content="OpenBB Platform,Open source,Python interface,REST API,Data integration,Data standardization,OpenBB extensions,openbb-core,Python package,High-Level Architecture,Custom extension,Contribution"><link data-rh="true" rel="icon" href="/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://docs.openbb.co/platform/development/standardization"><link data-rh="true" rel="alternate" href="https://docs.openbb.co/platform/development/standardization" hreflang="en"><link data-rh="true" rel="alternate" href="https://docs.openbb.co/platform/development/standardization" hreflang="x-default"><link data-rh="true" rel="preconnect" href="https://7D1HQ0IXAS-dsn.algolia.net" crossorigin="anonymous"><link rel="search" type="application/opensearchdescription+xml" title="OpenBB Docs" href="/opensearch.xml">
<link rel="stylesheet" href="/katex/katex.min.css"><link rel="stylesheet" href="/assets/css/styles.22849d6d.css">
<link rel="preload" href="/assets/js/runtime~main.0450b786.js" as="script">
<link rel="preload" href="/assets/js/main.f1cd3a3e.js" as="script">
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"dark")}()</script><div id="__docusaurus">
<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav class="border-b border-grey-600 lg:px-12 header_docs_sdk navbar navbar--fixed-top"><div class="navbar__inner items-center"><div class="navbar__items"><div class="items-center ml-2 flex"><a href="/"><svg viewBox="0 0 271 19" width="271" height="19" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill="#fff" d="M126.316.99V14.33l-1.144-1.11-1.142-1.113-1.144-1.11-1.142-1.114-1.144-1.11-1.145-1.113-1.141-1.11-1.145-1.114-1.142-1.113-1.144-1.11-1.142-1.11-1.144-1.114H110.311v17.788H112.597V4.323l1.144 1.113 1.142 1.113 1.144 1.11 1.142 1.114 1.145 1.11 1.141 1.113 1.145 1.11 1.144 1.114 1.142 1.11 1.144 1.113 1.142 1.113 1.144 1.11 1.142 1.111h1.145V.989h-2.287ZM163.123 7.66h-2.286V.99H147.12v17.79h18.294V7.65h-2.286l-.005.01ZM149.406 6.54V3.213h9.144V7.66h-9.144V6.54Zm13.717 4.447v5.566h-13.717V9.886h13.717v1.102ZM201.057 7.66h-3.427V.99h-13.72v17.79h18.289V7.65l-1.142.01ZM186.196 6.54V3.213h9.148V7.66h-9.148V6.54Zm13.72 4.447v5.566h-13.72V9.886h13.72v1.102ZM89.662.99H73.656v17.787H91.942v-2.22H75.945V12.106H89.656V9.883H75.945V3.213H91.942V.99H89.661ZM16.02.99H.018v17.79h18.291V.99H16.02Zm0 3.336v12.23H2.301V3.213h13.72v1.113ZM52.862.99H36.86v17.79h2.286v-6.673h16.003V.977h-2.287V.99Zm0 3.336v5.565H39.146V3.213h13.716v1.113ZM226.316 10.14h-6.117v8.64h6.141l.992-1v-7l-1.016-.64Zm-.002 1.62v5.94h-5.1v-6.48h5.1v.54ZM240.447 10.14h-7.115v8.64h8.133v-8.64h-1.018Zm0 1.62v5.94h-6.1v-6.48h6.1v.54ZM254.9 10.14H247.465v8.64H255.959V17.7H248.528V11.22H255.959v-1.08H254.9ZM269.404 10.14h-7.444V15h7.448v2.701h-5.853l-1.596.005.001.535v.539h8.505V17.7h-1.061.004H263.555l6.913.066.002-.607-.002-.41-.003-.67.005-1.08h-6.248 6.248l-.002-1.08H263.024v-2.7h7.441v-1.08h-1.061Z"></path></svg></a></div></div><div class="navbar__items navbar__items--right hidden sm:block"><div class="flex items-center"><div class="flex gap-4 mr-12 md:mr-0 ml-4"><button type="button" aria-haspopup="dialog" aria-expanded="false" aria-controls="" data-state="closed" class="bg-grey-900 radix-state-open:text-white hover:border-grey-200 hover:text-grey-200 radix-state-open:border-white border -mt-[0.6px] h-[34px] w-[34px] text-grey-400 border-grey-400 rounded flex items-center justify-center"><svg viewBox="0 0 24 24" width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg" class="w-4 h-4"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg></button></div><div class="searchBox_ZlJk"><div class="flex gap-2"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button><a href="https://my.openbb.co/" class="_btn-dark text-xs hover:text-black"><span class="md:hidden">Hub</span><span class="hidden md:inline">OpenBB Hub</span></a></div></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><aside class="theme-doc-sidebar-container docSidebarContainer_b6E3"><div class="sidebarViewport_Xe31"><div class="sidebar_njMd"><nav class="menu thin-scrollbar !px-10 text-sm !pb-10 mt-[40px] menu_Y1UP"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--active" aria-expanded="true" href="/platform">OpenBB Platform</a><button aria-label="Toggle the collapsible sidebar category &#x27;OpenBB Platform&#x27;" type="button" class="clean-btn menu__caret"></button></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/platform">Introduction</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/platform/installation">Installation</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" aria-expanded="false" tabindex="0" href="/platform/extensions">Extensions</a><button aria-label="Toggle the collapsible sidebar category &#x27;Extensions&#x27;" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" aria-expanded="false" tabindex="0" href="/platform/usage">Usage</a><button aria-label="Toggle the collapsible sidebar category &#x27;Usage&#x27;" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" aria-expanded="false" tabindex="0" href="/platform/reference">Reference</a><button aria-label="Toggle the collapsible sidebar category &#x27;Reference&#x27;" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" aria-expanded="false" tabindex="0" href="/platform/data_models">Data Models</a><button aria-label="Toggle the collapsible sidebar category &#x27;Data Models&#x27;" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--active" aria-expanded="true" tabindex="0" href="/platform/development">Development</a><button aria-label="Toggle the collapsible sidebar category &#x27;Development&#x27;" type="button" class="clean-btn menu__caret"></button></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/platform/development/standardization">Standardization</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/platform/development/architecture_overview">Architecture Overview</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/platform/development/obbject">OBBject</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-3 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" aria-expanded="false" tabindex="0" href="/platform/development/how-to">How-To Guides</a><button aria-label="Toggle the collapsible sidebar category &#x27;How-To Guides&#x27;" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-3 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" aria-expanded="false" tabindex="0" href="/platform/development/contributing">Contributing</a><button aria-label="Toggle the collapsible sidebar category &#x27;Contributing&#x27;" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/platform/development/tests">Tests</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/platform/development/dependency_management">Dependency Management</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/platform/development/devtools">DevTools</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" aria-expanded="false" tabindex="0" href="/platform/faqs">FAQs</a><button aria-label="Toggle the collapsible sidebar category &#x27;FAQs&#x27;" type="button" class="clean-btn menu__caret"></button></div></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" aria-expanded="false" href="/terminal">OpenBB Terminal</a><button aria-label="Toggle the collapsible sidebar category &#x27;OpenBB Terminal&#x27;" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" aria-expanded="false" href="/bot">OpenBB Bot</a><button aria-label="Toggle the collapsible sidebar category &#x27;OpenBB Bot&#x27;" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1"><span class="sidebar-divider"></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menuHtmlItem_PEWV menu__list-item sidebar-title">LEGACY</li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/sdk">OpenBB SDK</a></div></li></ul></nav></div></div></aside><main class="docMainContainer_gTbr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">OpenBB Platform</span><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item"><a class="breadcrumbs__link" itemprop="item" href="/platform/development"><span itemprop="name">Development</span></a><meta itemprop="position" content="2"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Standardization</span><meta itemprop="position" content="3"></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_bxCs"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Standardization</h1></header><h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-is-the-standardization-framework">What Is The Standardization Framework?<a href="#what-is-the-standardization-framework" class="hash-link" aria-label="Direct link to What Is The Standardization Framework?" title="Direct link to What Is The Standardization Framework?">​</a></h2><p>The Standardization Framework is a set of tools and guidelines that enable the user to query and obtain data in a consistent way across multiple providers.</p><p>Each provider data model should inherit from an already defined <a href="/platform/data_models">standard</a> model. All standard models are created and maintained by the OpenBB team. If a standard model needs to be created, please open a pull request and detail its use.</p><p>Standardizing provider query parameters and response data enhances the user experience by overcoming things like:</p><ul><li>Consistent query parameters across all data sources for a function, or type of function.</li><li>Output data that has conformed types, is validated, and will be JSON serializable.<ul><li><code>NaN</code>, <code>NaT</code>, <code>&quot;None&quot;</code>, empty strings, are always returned as <code>NoneType</code> (null).</li></ul></li><li>Transparently defined schemas for the data and query parameters.</li><li>Outputs from multiple sources are comparable with each other and easily interchanged.</li></ul><p>The standard models are all defined in the <code>/OpenBBTerminal/openbb_platform/platform/core/provider/standard_models/</code> <a href="https://github.com/OpenBB-finance/OpenBBTerminal/tree/develop/openbb_platform/core/openbb_core/provider/standard_models" target="_blank" rel="noopener noreferrer">directory</a>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="what-is-a-standard-model">What Is A Standard Model?<a href="#what-is-a-standard-model" class="hash-link" aria-label="Direct link to What Is A Standard Model?" title="Direct link to What Is A Standard Model?">​</a></h3><p>Every standard model consists of two classes, with each being a Pydantic model.</p><ul><li><a href="https://github.com/OpenBB-finance/OpenBBTerminal/tree/develop/openbb_platform/core/openbb_core/provider/abstract/query_params.py" target="_blank" rel="noopener noreferrer"><code>QueryParams</code></a></li><li><a href="https://github.com/OpenBB-finance/OpenBBTerminal/tree/develop/openbb_platform/core/openbb_core/provider/abstract/data.py" target="_blank" rel="noopener noreferrer"><code>Data</code></a></li></ul><p>Any parameter or field can be assigned a custom <code>field_validator</code>, or the entire model can be passed through a <code>model_validator</code> on creation.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="caveats">Caveats<a href="#caveats" class="hash-link" aria-label="Direct link to Caveats" title="Direct link to Caveats">​</a></h3><p>The standardization framework is a very powerful tool, but it has some caveats that you should be aware of:</p><ul><li>We standardize fields and parameters that are shared between multiple providers.<ul><li>In some cases, it can be undesirable to define common items in the standard model. In this event, we still want consistent names and descriptions.</li></ul></li><li>When mapping the column names from a provider-specific model to the standard model, the CamelCase to snake_case conversion is done automatically. If the column names are not the same, you&#x27;ll need to manually map them.<ul><li>e.g., <code>__alias_dict__ = {&quot;o&quot;: &quot;open&quot;}</code></li></ul></li><li>The standard models are created and maintained by the OpenBB team. If you want to add or modify a field within a standard model, you&#x27;ll need to open a PR to the OpenBB Platform.</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="queryparams">QueryParams<a href="#queryparams" class="hash-link" aria-label="Direct link to QueryParams" title="Direct link to QueryParams">​</a></h3><p>The <code>QueryParams</code> is an abstract class that defines what parameters will be needed to make a query to a data source. Below is the <a href="/platform/development/data_models/EquityHistorical">EquityHistorical</a> standard model.</p><div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-python codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#9CDCFE"><span class="token triple-quoted-string string" style="color:rgb(206, 145, 120)">&quot;&quot;&quot;Equity Historical Price Standard Model.&quot;&quot;&quot;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">from</span><span class="token plain"> datetime </span><span class="token keyword" style="color:rgb(86, 156, 214)">import</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> date </span><span class="token keyword" style="color:rgb(86, 156, 214)">as</span><span class="token plain"> dateType</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> datetime</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">from</span><span class="token plain"> typing </span><span class="token keyword" style="color:rgb(86, 156, 214)">import</span><span class="token plain"> Optional</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> Union</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">from</span><span class="token plain"> dateutil </span><span class="token keyword" style="color:rgb(86, 156, 214)">import</span><span class="token plain"> parser</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">from</span><span class="token plain"> pydantic </span><span class="token keyword" style="color:rgb(86, 156, 214)">import</span><span class="token plain"> Field</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> field_validator</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">from</span><span class="token plain"> openbb_core</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">provider</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">abstract</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">data </span><span class="token keyword" style="color:rgb(86, 156, 214)">import</span><span class="token plain"> Data</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">from</span><span class="token plain"> openbb_core</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">provider</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">abstract</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">query_params </span><span class="token keyword" style="color:rgb(86, 156, 214)">import</span><span class="token plain"> QueryParams</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">from</span><span class="token plain"> openbb_core</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">provider</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">utils</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">descriptions </span><span class="token keyword" style="color:rgb(86, 156, 214)">import</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> DATA_DESCRIPTIONS</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> QUERY_DESCRIPTIONS</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">class</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">EquityHistoricalQueryParams</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">QueryParams</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token triple-quoted-string string" style="color:rgb(206, 145, 120)">&quot;&quot;&quot;Equity Historical Price Query.&quot;&quot;&quot;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> symbol</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token builtin" style="color:rgb(86, 156, 214)">str</span><span class="token plain"> </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> Field</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">description</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain">QUERY_DESCRIPTIONS</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">get</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token string" style="color:rgb(206, 145, 120)">&quot;symbol&quot;</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> interval</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> Optional</span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token builtin" style="color:rgb(86, 156, 214)">str</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token plain"> </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> Field</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> default</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token string" style="color:rgb(206, 145, 120)">&quot;1d&quot;</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> description</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain">QUERY_DESCRIPTIONS</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">get</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token string" style="color:rgb(206, 145, 120)">&quot;interval&quot;</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> start_date</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> Optional</span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token plain">dateType</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token plain"> </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> Field</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> default</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token boolean">None</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> description</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain">QUERY_DESCRIPTIONS</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">get</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token string" style="color:rgb(206, 145, 120)">&quot;start_date&quot;</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> end_date</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> Optional</span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token plain">dateType</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token plain"> </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> Field</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> default</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token boolean">None</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> description</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain">QUERY_DESCRIPTIONS</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">get</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token string" style="color:rgb(206, 145, 120)">&quot;end_date&quot;</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token decorator annotation punctuation" style="color:rgb(212, 212, 212)">@field_validator</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token string" style="color:rgb(206, 145, 120)">&quot;symbol&quot;</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> mode</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token string" style="color:rgb(206, 145, 120)">&quot;before&quot;</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> check_fields</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token boolean">False</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token decorator annotation punctuation" style="color:rgb(212, 212, 212)">@classmethod</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token keyword" style="color:rgb(86, 156, 214)">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(220, 220, 170)">to_upper</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">cls</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> v</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token builtin" style="color:rgb(86, 156, 214)">str</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token operator" style="color:rgb(212, 212, 212)">-</span><span class="token operator" style="color:rgb(212, 212, 212)">&gt;</span><span class="token plain"> </span><span class="token builtin" style="color:rgb(86, 156, 214)">str</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token triple-quoted-string string" style="color:rgb(206, 145, 120)">&quot;&quot;&quot;Convert field to uppercase.&quot;&quot;&quot;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token keyword" style="color:rgb(86, 156, 214)">return</span><span class="token plain"> v</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">upper</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><br></span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="theme-admonition theme-admonition-info alert alert--info admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_S0QG"><p>Note that not all possible parameters are defined here, and can be further refined in the provider-specific model.</p><p>For example, <code>interval</code> is defined as a string in the standard model, but is defined again as a <code>Literal</code> with explicit choices specific to that source. Here, it would not be possible to define all valid choices in a way that is compatible with all providers.</p></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="data">Data<a href="#data" class="hash-link" aria-label="Direct link to Data" title="Direct link to Data">​</a></h3><p>The <code>Data</code> model for the <code>EquityHistorical</code> standard model is shown below, which is a continuation of the code block above.</p><div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-python codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">class</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">EquityHistoricalData</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">Data</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token triple-quoted-string string" style="color:rgb(206, 145, 120)">&quot;&quot;&quot;Equity Historical Price Data.&quot;&quot;&quot;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> date</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> Union</span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token plain">dateType</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> datetime</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token plain"> </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> Field</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> description</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain">DATA_DESCRIPTIONS</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">get</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token string" style="color:rgb(206, 145, 120)">&quot;date&quot;</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token builtin" style="color:rgb(86, 156, 214)">open</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token builtin" style="color:rgb(86, 156, 214)">float</span><span class="token plain"> </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> Field</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">description</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain">DATA_DESCRIPTIONS</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">get</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token string" style="color:rgb(206, 145, 120)">&quot;open&quot;</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> high</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token builtin" style="color:rgb(86, 156, 214)">float</span><span class="token plain"> </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> Field</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">description</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain">DATA_DESCRIPTIONS</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">get</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token string" style="color:rgb(206, 145, 120)">&quot;high&quot;</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> low</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token builtin" style="color:rgb(86, 156, 214)">float</span><span class="token plain"> </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> Field</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">description</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain">DATA_DESCRIPTIONS</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">get</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token string" style="color:rgb(206, 145, 120)">&quot;low&quot;</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> close</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token builtin" style="color:rgb(86, 156, 214)">float</span><span class="token plain"> </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> Field</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">description</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain">DATA_DESCRIPTIONS</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">get</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token string" style="color:rgb(206, 145, 120)">&quot;close&quot;</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> volume</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> Optional</span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token plain">Union</span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token builtin" style="color:rgb(86, 156, 214)">float</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token builtin" style="color:rgb(86, 156, 214)">int</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token plain"> </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> Field</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> default</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token boolean">None</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> description</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain">DATA_DESCRIPTIONS</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">get</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token string" style="color:rgb(206, 145, 120)">&quot;volume&quot;</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> vwap</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> Optional</span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token builtin" style="color:rgb(86, 156, 214)">float</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token plain"> </span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain"> Field</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> default</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token boolean">None</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> description</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token plain">DATA_DESCRIPTIONS</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">get</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token string" style="color:rgb(206, 145, 120)">&quot;vwap&quot;</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token decorator annotation punctuation" style="color:rgb(212, 212, 212)">@field_validator</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token string" style="color:rgb(206, 145, 120)">&quot;date&quot;</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> mode</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token string" style="color:rgb(206, 145, 120)">&quot;before&quot;</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> check_fields</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token boolean">False</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token keyword" style="color:rgb(86, 156, 214)">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(220, 220, 170)">date_validate</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">cls</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> v</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token triple-quoted-string string" style="color:rgb(206, 145, 120)">&quot;&quot;&quot;Return formatted datetime.&quot;&quot;&quot;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token keyword" style="color:rgb(86, 156, 214)">if</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">&quot;:&quot;</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(86, 156, 214)">in</span><span class="token plain"> </span><span class="token builtin" style="color:rgb(86, 156, 214)">str</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">v</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token keyword" style="color:rgb(86, 156, 214)">return</span><span class="token plain"> parser</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">isoparse</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token builtin" style="color:rgb(86, 156, 214)">str</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">v</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token keyword" style="color:rgb(86, 156, 214)">return</span><span class="token plain"> parser</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">parse</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token builtin" style="color:rgb(86, 156, 214)">str</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain">v</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">.</span><span class="token plain">date</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><br></span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The <code>Data</code> class is an abstract class that tells us the expected output data.</p><p>We can see that the <code>volume</code> and <code>vwap</code> fields are <code>Optional</code>. This is because not all providers return this field, but is common between several of them.</p><p>We can also note that <code>date</code> is a field name, but because this is a <code>datetime</code> class, we import <code>datetime.datetime.date</code> as <code>dateType</code> to avoid conflicts and linting errors.</p><p>The date validator is there to parse an ISO date string, with a caveat to only encode time values when they exist. This avoids dates from being inadvertently encoded with timezone information that can influence the actual date value via localization. Dates should always be the same date for all users globally. If a date is on a Monday, it will always be Monday.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/OpenBB-finance/OpenBBTerminal/edit/main/website/content/platform/development/standardization.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_vwxv"><span class="theme-last-updated">Last updated<!-- --> on <b><time datetime="2024-04-01T16:59:31.000Z">Apr 1, 2024</time></b> by <b>montezdesousa</b></span></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/platform/development"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Considerations</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/platform/development/architecture_overview"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Architecture Overview</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_jeP5 thin-scrollbar text-sm mt-[48px] xl:max-w-[216px] theme-doc-toc-desktop"><p class="uppercase text-sm font-bold text-grey-600 dark:text-grey-200 tracking-widest mb-2">On this page</p><ul class="border-l border-grey-300 dark:border-grey-600 list-none pl-4"><li class="pb-1"><a href="#what-is-the-standardization-framework" class="text-grey-400 capitalize !no-underline">What Is The Standardization Framework?</a><ul class="list-none ml-1 border-l border-grey-300 dark:border-grey-600 mt-2"><li class="pb-1 pl-3"><a href="#what-is-a-standard-model" class="text-grey-400 capitalize !no-underline">What Is A Standard Model?</a></li><li class="py-1 pl-3"><a href="#caveats" class="text-grey-400 capitalize !no-underline">Caveats</a></li><li class="py-1 pl-3"><a href="#queryparams" class="text-grey-400 capitalize !no-underline">QueryParams</a></li><li class="py-1 pl-3"><a href="#data" class="text-grey-400 capitalize !no-underline">Data</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="px-4 border-t dark:border-grey-600/50 lg:px-12 py-14 bg-white dark:bg-grey-850 z-10 overflow-hidden flex flex-col gap-10 items-center justify-center"><div class="flex w-full justify-between md:flex-row"><div class="md:items-start mt-2"><a aria-label="Home" class="hover:text-grey-700 dark:text-white dark:hover:text-gray-50" href="/"><svg viewBox="0 0 170 17" width="170" height="17" fill="none" xmlns="http://www.w3.org/2000/svg" class="h-[14px] w-[140px]"><path d="M106.107 1.889v11.334l-.961-.946-.959-.945-.962-.943-.959-.946-.961-.943-.962-.945-.959-.944-.961-.945-.96-.943-.961-.946-.96-.943-.96-.945H92.66V17H94.582V4.723l.96.943.96.945.961.944.96.945.961.943.959.946.962.943.961.945.959.946.962.943.959.945.961.944.96.945h.961V1.889H106.107ZM137.03 7.557h-1.921V1.889h-11.524V17h15.37V7.546h-1.92l-.005.01Zm-11.524-.946V3.773h7.683v3.78h-7.683V6.61Zm11.524 3.778v4.727h-11.524v-5.67h11.524v.943ZM168.901 7.557h-2.88V1.889h-11.526V0h-1.921v1.889h1.921V17h15.365V7.546l-.959.01Zm-12.485-.946V3.773h7.684v3.78h-7.684V6.61Zm11.526 3.778v4.727h-11.526v-5.67h11.526v.943ZM75.314 1.889H61.867V17H77.23V15.111H63.787V11.332h11.521V9.443H63.788V3.777H77.23V1.89h-1.916ZM13.444 1.889H0V17h15.367V1.889h-1.922Zm0 2.834V15.11H1.918V3.773h11.527v.95ZM44.397 1.889H30.952V17h1.92v-5.666h13.445V1.88h-1.92v.009Zm0 2.834V9.45H32.873V3.773h11.524v.95Z" fill="currentColor"></path></svg></a></div><div class="justify-end"><a class="flex h-[32px] w-[172px] rounded-md border border-grey-300 hover:bg-grey-100 dark:border-white bg-grey-100 dark:bg-white text-xs hover:no-underline" href="https://github.com/OpenBB-finance/OpenBBTerminal" target="_blank" rel="noreferrer"><span class="inline-flex w-[60%] items-center gap-x-[6px] px-3 py-2 text-grey-800"><svg viewBox="0 0 24 24" width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg" style="margin-bottom:3px" class="h-[14.67px] w-[14.67px]"><path d="m12 1 3.263 7.439L23 9.403l-5.72 5.562L18.798 23 12 18.999 5.202 23l1.518-8.035L1 9.403l7.737-.964L12 1Z" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round"></path></svg>Star us</span><span class="inline-flex w-[40%] items-center justify-center rounded-r-md bg-grey-850 text-grey-200">0</span></a></div></div><div class="flex w-full flex-col items-center justify-between gap-4 md:flex-row md:gap-0"><div class="flex flex-col items-start justify-end gap-4 self-start font-light text-grey-500 md:flex-row md:items-center"><p class="text-sm">© 2024 OpenBB</p><div class="_divider-x hidden h-[20px] border-[0.5px] md:block"></div><a href="https://openbb.co/legal/privacy-policy" target="_blank" rel="noopener noreferrer" class="text-sm dark:hover:text-white">Privacy Policy</a><div class="_divider-x hidden h-[20px] border-[0.5px] md:block"></div><a href="https://openbb.co/legal/terms-of-service" target="_blank" rel="noopener noreferrer" class="text-sm dark:hover:text-white">Terms</a></div><div class="mt-4 mb-10 grid grid-cols-4 gap-4 self-start md:my-0 md:grid-cols-7 md:self-end"><a aria-label="GitHub Link" class="h-8 w-8 dark:hover:!text-white hover:text-grey-700" target="_blank" rel="noreferrer" href="https://github.com/OpenBB-finance/OpenBBTerminal"><svg width="15" height="16" viewBox="0 0 15 16" fill="none" xmlns="http://www.w3.org/2000/svg" class="h-4 w-4"><path d="M6 12.76c-3.333 1-3.333-1.667-4.667-2l4.667 2Zm4.667 2v-2.58a2.246 2.246 0 0 0-.627-1.74c2.094-.233 4.294-1.027 4.294-4.667 0-.93-.359-1.825-1-2.5a3.38 3.38 0 0 0-.06-2.513s-.787-.233-2.607.987a8.92 8.92 0 0 0-4.667 0C4.18.527 3.393.76 3.393.76a3.38 3.38 0 0 0-.06 2.513 3.627 3.627 0 0 0-1 2.52c0 3.614 2.2 4.407 4.294 4.667A2.248 2.248 0 0 0 6 12.18v2.58" fill="currentColor"></path><path d="M10.667 14.76v-2.58a2.246 2.246 0 0 0-.627-1.74c2.094-.233 4.294-1.027 4.294-4.667 0-.93-.359-1.825-1-2.5a3.38 3.38 0 0 0-.06-2.513s-.787-.233-2.607.987a8.92 8.92 0 0 0-4.667 0C4.18.527 3.393.76 3.393.76a3.38 3.38 0 0 0-.06 2.513 3.627 3.627 0 0 0-1 2.52c0 3.614 2.2 4.407 4.294 4.667A2.248 2.248 0 0 0 6 12.18v2.58m0-2c-3.333 1-3.333-1.667-4.667-2l4.667 2Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path></svg></a><a aria-label="LinkedIn Link" class="h-8 w-8 dark:hover:!text-white hover:text-grey-700" target="_blank" rel="noreferrer" href="https://www.linkedin.com/company/openbb-finance/"><svg viewBox="0 0 24 24" width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg" class="h-4 w-4"><path d="M13 21H9V9h4v2a4.618 4.618 0 0 1 3.525-1.763A4.5 4.5 0 0 1 21 13.75V21h-4v-6.75a2.265 2.265 0 0 0-2.247-1.944A1.815 1.815 0 0 0 13 14.25V21Zm-6 0H3V9h4v12ZM5 7a2 2 0 1 1 0-4 2 2 0 0 1 0 4Z" fill="currentColor"></path></svg></a><a aria-label="Twitter Link" class="h-8 w-8 dark:hover:!text-white hover:text-grey-700" target="_blank" rel="noreferrer" href="https://twitter.com/openbb_finance"><svg viewBox="0 0 24 24" width="10" height="10" xmlns="http://www.w3.org/2000/svg" class="h-4 w-4"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z" fill="#E7E9EA"></path></svg></a><a aria-label="Tiktok Link" class="h-8 w-8 dark:hover:!text-white hover:text-grey-700" target="_blank" rel="noreferrer" href="https://www.tiktok.com/@openbb"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" class="h-5 w-5 pl-[2.5px]"><path d="M0 0h24v24H0z" stroke="none"></path><path d="M9 12a4 4 0 1 0 4 4V4a5 5 0 0 0 5 5"></path></svg></a><a aria-label="Reddit Link" class="h-8 w-8 dark:hover:!text-white hover:text-grey-700" target="_blank" rel="noreferrer" href="https://www.reddit.com/r/openbb/"><svg viewBox="0 0 16 16" width="16" height="16" fill="none" xmlns="http://www.w3.org/2000/svg" class="h-4 w-4"><path d="M8 14.667A6.667 6.667 0 1 1 14.667 8 6.674 6.674 0 0 1 8 14.667ZM4.538 7.029a.973.973 0 0 0-.405 1.858 1.707 1.707 0 0 0 0 .292c0 1.494 1.743 2.708 3.886 2.708 2.142 0 3.886-1.214 3.886-2.708a1.857 1.857 0 0 0 0-.292.96.96 0 0 0-.432-1.825h-.035a.97.97 0 0 0-.638.271 4.744 4.744 0 0 0-2.567-.82l.434-2.08 1.425.3a.667.667 0 0 0 .735.591A.667.667 0 1 0 10.685 4a.667.667 0 0 0-.506.328L8.547 4a.207.207 0 0 0-.244.158l-.499 2.315a4.749 4.749 0 0 0-2.6.82.967.967 0 0 0-.666-.264Zm3.582 3.987h-.225a2.568 2.568 0 0 1-1.534-.515.18.18 0 0 1 .139-.294.18.18 0 0 1 .114.04c.374.274.825.421 1.289.42h.216c.457 0 .903-.143 1.274-.41a.187.187 0 0 1 .267 0 .19.19 0 0 1-.003.267v-.027a2.557 2.557 0 0 1-1.537.518v.001Zm1.418-1.63h-.01l.005-.025a.626.626 0 1 1 .49-.188.659.659 0 0 1-.462.214h-.024.001Zm-3.091-.053a.667.667 0 1 1 0-1.333.667.667 0 0 1 0 1.333Z" fill="currentColor"></path></svg></a><a aria-label="Discord Link" class="h-8 w-8 dark:hover:!text-white hover:text-grey-700" target="_blank" rel="noreferrer" href="https://discord.gg/xPHTuHCmuV"><svg viewBox="0 0 16 12" width="16" height="12" fill="none" xmlns="http://www.w3.org/2000/svg" class="h-4 w-4"><path d="M13.38 8.836a4.375 4.375 0 0 1-2.474 1.507c.407.481.897 1.025.901 1.03 1.655.033 3.221-.688 4.193-1.929-.05-2.572-.724-5.1-1.973-7.397A7.139 7.139 0 0 0 10.194.71h-.016l-.192.203a9.52 9.52 0 0 1 3.412 1.61 11.875 11.875 0 0 0-4.125-1.217 12.415 12.415 0 0 0-2.766.025c-.065.001-.13.008-.193.019h-.04a10.98 10.98 0 0 0-3.11.801c-.493.21-.796.362-.809.368-.013.005 0 0 0-.01A10.022 10.022 0 0 1 5.96.866L5.815.714h-.009a7.142 7.142 0 0 0-3.833 1.335A16.003 16.003 0 0 0 0 9.447c.96 1.249 2.528 1.972 4.182 1.929 0 0 .517-.583.92-1.054a4.307 4.307 0 0 1-2.405-1.496c.01.006.153.096.384.213a.17.17 0 0 0 .056.04.409.409 0 0 0 .058.031 8.043 8.043 0 0 0 1.064.462c.653.24 1.33.423 2.019.548.604.106 1.217.16 1.832.16.576 0 1.15-.049 1.717-.146a9.64 9.64 0 0 0 1.986-.546 8.203 8.203 0 0 0 1.566-.752Zm-2.94-.57c-.627.05-1.224-.26-1.502-.784a1.335 1.335 0 0 1 .244-1.581 1.612 1.612 0 0 1 1.68-.363c.586.212.973.735.973 1.319.032.745-.592 1.374-1.396 1.41h.001Zm-5.001 0c-.79-.064-1.395-.676-1.395-1.41 0-.733.606-1.345 1.395-1.408.363 0 .71.138.963.38.286.276.442.645.433 1.027.033.747-.59 1.378-1.396 1.411Z" fill="currentColor"></path></svg></a><a aria-label="Youtube Link" class="h-8 w-8 dark:hover:!text-white hover:text-grey-700" target="_blank" rel="noreferrer noopener" href="https://www.youtube.com/channel/UCaeFEx-W16IuxRsHlM1ywBQ"><svg viewBox="0 0 24 24" width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg" class="h-4 w-4"><path d="M22.54 6.42a2.78 2.78 0 0 0-1.94-2C18.88 4 12 4 12 4s-6.88 0-8.6.46a2.78 2.78 0 0 0-1.94 2A29 29 0 0 0 1 11.75a29 29 0 0 0 .46 5.33A2.78 2.78 0 0 0 3.4 19c1.72.46 8.6.46 8.6.46s6.88 0 8.6-.46a2.78 2.78 0 0 0 1.94-2c.313-1.732.467-3.49.46-5.25a29.005 29.005 0 0 0-.46-5.33v0Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path><path d="m9.75 15.017 5.75-3.27-5.75-3.27v6.54Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg></a></div></div></footer></div>
<script src="/assets/js/runtime~main.0450b786.js"></script>
<script src="/assets/js/main.f1cd3a3e.js"></script>
</body>
</html>