ML Model | OpenMetadata Machine Learning Model SDK
Learn to manage ML models with OpenMetadata Python SDK. Complete guide with code examples, entity operations, and API integration for machine learning workflows.
When we are talking about Machine Learning tooling there are some projects that automatically come to our mind: Mlflow, TFX, Kubeflow, SageMaker…The main goal of these solutions is to enable Data Scientists and Machine Learning practitioners to handle the models’ lifecycle. As a short summary (not taking into account all the great DevOps work and more specific features), this means:
Preparing pipelines that extract the data from the sources & run the Feature Engineering.
Train multiple models with different inputs and hyperparameters in external computes.
Record all the experiments, their configurations and metrics.
Serve the models or store them externally.
The main focus is then empowering the teams and organising their working approach (usually in short fast-paced cycles), treating all of this in isolation. The metadata captured by these tools is purely functional: model name, Python/conda environment used, hyperparameter configuration, the signature of the inputs, etc.Long-story-short: These are great tools to build autonomous, powerful and scalable ML Platforms and/or MLOps processes.
What we are trying to build with OpenMetadata and ML Models is, by no means, a replacement of those tools or the information they provide. Data Science teams NEED structured experimentation and the metadata processing and discovery provided by the projects mentioned above.Instead, we want to look at ML Models from a different lens: Where do ML Models fit within a Data Platform? While - let’s call them “lifecycle tools” - give the underlying view of the modelling process, we want to bring context and relationships.There are some common questions with lifecycle tools, such as Where (URL) is the MlModel hosted, but we are bringing in a product and platform management view:
Where can we find the dashboards showing the performance evolution of our PROD algorithms? -> Trust & transparency
What tables/sources are being used? -> Lineage and traceability
Are we using sensitive data? -> Governance
This information, together with the rest of the features brought by OpenMetadata, lets us also manage topics such as schema changes in the sources or feature drifts, with the corresponding alerting systems.While we can already extract certain pieces of information automatically via our Connectors, for example Mlflow, there are attributes that we’ll need to fill in by ourselves. Thanks to the Solution Design of OpenMetadata and the Python SDK, this is going to be a rather easy task that will unlock the full power of your organization’s metadata.
Now that we have a clearer view of what we are trying to achieve, let’s jump into a deeper view on the MlModel Entity definition:
The name and algorithm are the only required properties when creating an MlModel. We can just bring the top shell to the catalogue automatically and then choose which models we want to enrich.
The dashboard is a reference to a Dashboard Entity present in OpenMetadata (what we call an EntityReference). This should be a dashboard we have built that shows the evolution of our performance metrics. The transparency on ML services is integral, and that is why we have added it to the MlModel properties.
A server with the URL on where to reach the model endpoint, to POST input data or retrieve a prediction.
The mlStore specifies the location containing the model. Here we support both passing a URI with the object, for example pkl location and/or a Docker image in its repository.
With mlHyperParameters we can add the name, value and description of the used hyperparameters.
On top of this information, we can also have common metadata attributes, such as the Owner, tags, followers or versioning.So far so good, but we are missing interesting points:
What are my model features?
How do I link these features to their origin/sources?
When talking about the MlModel features and how to inform them, we have made an interesting distinction:
On the one hand, there are the results of Feature Engineering as the predictors used to train the model,
On the other, the actual sources that the predictors are based on.
Being able to track both sides of a feature is a powerful way to know how our algorithm uses the Data Platform. This will help us show feature definitions as well as keep track of their origins.
To fully understand what we are going to show now, it would be interesting for the reader to make sure to visit the section.
Some properties that we can define when instantiating an MlFeature are the name, the dataType and the featureAlgorithm. Now, the question is: Are we being thorough in describing what is really going on? Are we going to be able to detect at any point in the future if this model is based on biased predictors (such as gender)?Here we want to give more depth. In order to do so, we can inform another property of the MlFeature, which are the MlFeatureSources. The idea is that any feature can be based on an arbitrary number of real/physical sources, for example the columns of a Table, and informing this field will allow us to obtain this relationship.If we add this extra information, our feature will look like this:
Note how we added a list of FeatureSource, with values such as name, dataType (regarding the source type, not the categorical/numerical distinction of the MlFeature) and an EntityReference as the dataSource.Thanks to this extra piece of information, we now can run the following method on our MlModel instance:
This call will register the Lineage information between our MlModel instance and the tables referenced in the dataSources. Then, we will be able to explore these relationships either via the API or the UI.If we also have ingested the Lineage from the different Tables in our platform as well as how they relate to the data processing Pipelines, we can obtain a global end-to-end view on our ML Model and all its dependencies.
One of the key features of OpenMetadata is the ability to version our Entities. Being able to keep track of schema changes or any community updates and having an alerting system on top can be life-saving.In the Solution Design, we discussed the versioning example on how a Table reacts to adding or deleting columns in terms of its version. How do we manage versions for our MlModels?Based on the experimentation nature of the ML field, it does not make sense to receive an alert when playing around with the model features. Therefore, we are using major version changes when any of the following properties are updated:
Changes in the algorithm might mean uneven results when comparing predictions (or if handled poorly different outcomes)
Changes to the server can enable/break integrations to the ML prediction systems.
In this doc, we have seen the role that OpenMetadata serves from a Machine Learning perspective and its purpose in giving the vision of ML models inside the Data Platform.We have shown how to use the Python API to enrich the models’ metadata and add the lineage information with its related Entities and how the versioning will respond to changes.For further information on the properties, do not hesitate to review the JSON Schema and for examples and usages with the Python API, you can take a look at our integration tests.
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"OpenMetadata Documentation","colors":{"primary":"#6938EF","light":"#6938EF","dark":"#6938EF"},"logo":"https://mintcdn.com/openmetadata/Z_Ib-0g05fLykSep/public/images/icons/omd.svg?fit=max\u0026auto=format\u0026n=Z_Ib-0g05fLykSep\u0026q=85\u0026s=8eb40986afc777e29ae395288a3983e8","favicon":"https://mintcdn.com/openmetadata/Z_Ib-0g05fLykSep/public/images/icons/om-monogram.svg?fit=max\u0026auto=format\u0026n=Z_Ib-0g05fLykSep\u0026q=85\u0026s=8c8208506e2cadb9ef7a7302f79486fb","api":{"mdx":{"auth":{"method":"bearer"},"server":"https://sandbox.open-metadata.org/api"}},"appearance":{"default":"light","strict":true},"navbar":{"links":[{"icon":"Slack","href":"https://slack.open-metadata.org","label":"Community"},{"icon":"Book","href":"https://blog.open-metadata.org/","label":"Blogs"},{"href":"https://getcollate.io/","label":"Free Tier"}]},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/openmetadata","youtube":"https://www.youtube.com/@OpenMetadataChannel","x":"https://x.com/open_metadata"},"links":[{"items":[{"label":"Terms of Service","href":"https://www.getcollate.io/terms"},{"label":"Privacy Policy","href":"https://www.getcollate.io/privacypolicy"},{"label":"Trust Center","href":"https://trustcenter.getcollate.io/"},{"label":"Contact Us","href":"https://www.getcollate.io/contact-sales"}]}]},"seo":{"metatags":{"canonical":"https://docs.open-metadata.org"}},"styling":{"eyebrows":"breadcrumbs","latex":true},"integrations":{"ga4":{"measurementId":"GTM-554C968W"}},"interaction":{"drilldown":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"openmetadata","hasAudioNarration":false,"actualSubdomain":"openmetadata","customDomains":["docs.open-metadata.org"],"gitSource":{"type":"github","owner":"open-metadata","repo":"docs-om","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae2ea4fa6b8c19aaad7a733","collectionId":"f12cc20d-1802-4290-8e19-0e94a9876176","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae2ea4fa6b8c19aaad7a733"},"feedback":{"thumbs":true,"issues":true,"edits":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae2ea4fa6b8c19aaad7a733","clientVersion":"0.0.4006","searchFilterCounts":[{"language":"default","tag":"Connectors","count":1123},{"language":"default","tag":"Connector","count":1030},{"language":"default","tag":"SDK \u0026 APIs","count":960},{"language":"default","tag":"Deployment","count":628},{"language":"default","tag":"Database","count":547},{"language":"default","tag":"Data Assets","count":470},{"language":"default","tag":"Data Governance","count":314},{"language":"default","tag":"Data Quality and Observability","count":282},{"language":"default","tag":"Ingestion","count":228},{"language":"default","tag":"Developers","count":210}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"globals.css","content":"/* latin-ext */\n@font-face {\n font-family: 'DM Sans';\n font-style: italic;\n font-weight: 100 1000;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/dmsans/v17/rP2Fp2ywxg089UriCZa4ET-DNl0.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'DM Sans';\n font-style: italic;\n font-weight: 100 1000;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/dmsans/v17/rP2Fp2ywxg089UriCZa4Hz-D.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin-ext */\n@font-face {\n font-family: 'DM Sans';\n font-style: normal;\n font-weight: 100 1000;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/dmsans/v17/rP2Hp2ywxg089UriCZ2IHSeH.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'DM Sans';\n font-style: normal;\n font-weight: 100 1000;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/dmsans/v17/rP2Hp2ywxg089UriCZOIHQ.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n@tailwind base;@tailwind components;@tailwind utilities;:root{--top-nav-height:70px;--main-nav-height:42px;--side-nav-width:288px;--side-nav-collapsed-width:42px;--select-dropdown-default-height:28px;--select-dropdown-default-width:165px;--side-nav-width:min(20%, 300px);--api-side-nav-width:max(14%, 220px);--content-div-width:min(17%, 250px);--default-border-color:#dce3ec;--primary-color:#6938EF;--primary-shadow-color:#5469d433;--primary-background-color:rgba(84, 105, 212, 0.05);--select-background-color:#f4f7ff;--icon-background-color:#f1f3fe;--select-border-color:#e9eefc;--homepage-container-px:130px;--default-text-color:rgb(60, 66, 87);--gray-text-color:rgba(60, 66, 87, 0.7);--white-color:#fff;--top-nav-color:#f7fafc;--code-background-color:#212d63;--code-gray-background-color:rgb(79, 86, 107);--code-light-background-color:#f7fafc;--code-toolbar-color:#212d63;--code-gray-toolbar-color:#3c4257;--code-light-toolbar-color:#ffffff;--code-light-border-color:#e3e8ee;--code-filename-color:#a4cdfe;--code-gray-filename-color:#dadce1;--code-light-filename-color:#f7fafc;--code-block-text-color:#f5fbff;--purple-bg-color:#7147e81a;--green-bg-color:#0084761a;--pink-bg-color:#b02aac1a;--purple-icon-color:#7147e8;--green-icon-color:#008376;--pink-icon-color:#b02aac;--beta-label-color:#0950C5;--beta-label-bg-color:#E4EEFF;--prod-label-color:#81C562;--prod-label-bg-color:#EEFBE7;--stable-label-color:#1890ff;--stable-label-bg-color:#e6f7ff;--connector-icon-bg-color:#F8F8F8;--green-tag-color:#43A047;--green-tag-bg-color:#43A0471A;--orange-tag-color:#FF7C50;--orange-tag-bg-color:#FF7C501A}body{font-family:\"DM Sans\",-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\";color:var(--default-text-color);margin:0;font-weight:400;-webkit-font-smoothing:antialiased}h1,h2,h3,h4,h5,h6{font-weight:600;font-family:\"DM Sans\"}b,strong{font-weight:600}p{line-height:1.5em;margin:8px 0 0;color:#414651}h1{font-size:36px;line-height:44px;color:#224!important;margin-bottom:10px!important}h2{font-size:30px;line-height:38px}h3{font-size:24px;line-height:32px}h4{font-size:20px;line-height:30px}h5{font-size:18px;line-height:28px}body,h6{font-size:16px}h6{line-height:24px}a{color:var(--primary-color);font-weight:500}li::marker{color:var(--primary-color)}ol{list-style:decimal;margin-top:16px;margin-left:16px}ol li::marker{color:var(--default-text-color)}li>ul{margin-top:0;margin-left:16px}pre{border-radius:6px;background-color:var(--code-background-color)}code,pre{-ms-overflow-style:none;scrollbar-width:none}::-webkit-scrollbar,code::-webkit-scrollbar,pre::-webkit-scrollbar{display:none}*{scrollbar-width:none}a.link{color:#6938ef;font-weight:600;text-decoration:none;border:0}a.link:hover{text-decoration:underline}.connector-tab{display:block;width:100%;text-align:start;padding:8px;cursor:pointer;border-radius:4px}.active-connector,.connector-tab:hover{background-color:var(--primary-background-color)}.active-connector{border:.5px solid var(--select-border-color);color:var(--primary-color);font-weight:600}.divider{color:var(--default-border-color)}.icons{height:2rem;width:2rem}.cloud-button{border-radius:1rem;border:1px solid #c280ff;background-color:#c280ff}.search,.search-box{background-color:#f4f4f4}.search-box{height:2.25rem;width:550px;border:1px solid #f4f4f4;border-radius:.5rem;padding:4px 20px;color:#9e9d9d;display:flex;align-items:center}.search{width:90%;height:90%;border:0;outline:0}.overview-container{width:100vw;display:flex;flex-direction:column;justify-content:center;padding:50px 10%;background:#f4f7ff}.container-heading,.overview-heading{font-weight:700;font-size:22px;line-height:42px;margin-bottom:12px}.container-heading{margin-bottom:40px}.blogs-container,.cards-container{display:grid;grid-template-columns:1fr 1fr 1fr;gap:32px}.homepage-containers{padding:0 10%;margin:80px 0 0}#myUL{list-style-type:none;margin:0;padding:0}.nested{display:none}.active{display:block;color:var(--primary-color)}.DownArrow{display:none}.RightArrow{display:block}.highlightedCode{background-color:#1a2652}.page-404{height:calc(100vh - var(--top-nav-height) - var(--main-nav-height))}.content{flex-grow:0;flex-shrink:1}.non-collapsed-content{width:calc(100vw - var(--side-nav-width))}.collapsed-content{width:calc(100vw - var(--side-nav-collapsed-width))}.card-icon-container{padding:8px;width:fit-content;border-radius:10px}.card-purple-icon{background-color:var(--purple-bg-color);border:1px solid #7147e8}.card-green-icon{background-color:var(--green-bg-color);border:1px solid #008376}.card-pink-icon{background-color:var(--pink-bg-color);border:1px solid #b02aac}.nav-bar-container{position:sticky;top:0;z-index:100}.min-width-600{min-width:600px}@media (max-width:1240px){.blogs-container{grid-template-columns:1fr 1fr}}@media (max-width:900px){.cards-container{grid-template-columns:1fr 1fr}.blogs-container{grid-template-columns:1fr}.overview-container{padding:20px 60px;width:100%}.homepage-containers{padding:20px 60px;margin:32px 0 0}}@media (max-width:600px){.cards-container{grid-template-columns:1fr}.non-collapsed-content{display:none}.collapsed-content{width:calc(100% - 41px)}}#header h1,#header p{display:none!important}.mdx-content{margin-top:0!important}.api-page-container{display:grid;grid-template-columns:var(--api-side-nav-width) calc(100vw - var(--api-side-nav-width))}.hash-link{overflow:hidden;width:0;height:0;display:block;visibility:hidden;text-decoration:none;pointer-events:none;margin-top:-300px!important;padding-top:300px}.cookie-modal{position:fixed;bottom:0;background-color:#f8fbfc;z-index:20;padding:1rem;box-shadow:var(--shadow-card);transform:translateY(100%);transition:transform 1.2s ease-in-out,visibility 1.2s ease-in-out;visibility:hidden;border:1px solid #c9c4c4;border-radius:10px}.cookie-modal p{color:#292929;font-weight:300}.cookie-modal-buttons{margin-top:2rem;display:flex;gap:.75rem;justify-content:flex-end}.button{border-radius:1.5rem;padding:.5rem 2rem;font-size:.875rem;cursor:pointer;border:0}.button-accept{background-color:#7147e8;color:#fff}.button-reject{background-color:#fff;color:#7147e8;border:1px solid #7147e8}@media (min-width:640px){.cookie-modal{margin:1.25rem;max-width:36rem}}@media (min-width:1024px){.cookie-modal{max-width:48rem}}.cookie-modal.visible{transform:translateY(0);visibility:visible}.brand-docs-banner{font-weight:500;padding:0 8px;border-radius:12px;margin-top:16px;width:fit-content}.breadcrumb-item:first-child{display:none}.breadcrumb-item:last-of-type a{color:#414651;pointer-events:none;cursor:text;text-decoration:none}#page-loader{position:fixed;top:0;left:0;width:0%;height:3px;background:linear-gradient(90deg,#3b82f6,#8b5cf6);z-index:9999;transition:width .3s ease}#navbar .border-b{border:0}#navbar .nav-tabs{background-color:#fafafa;max-width:max-content;border:1px solid #eaecf5;border-radius:100px;margin:24px auto 4px;column-gap:16px;overflow-x:auto;display:flex;flex-wrap:nowrap;justify-content:flex-start}#navbar .nav-tabs .nav-tabs-item{padding:12px 24px;font-size:16px;white-space:nowrap;flex-shrink:0;color:#414651;font-weight:500}#navbar .nav-tabs .nav-tabs-item:hover{color:#181d27;text-decoration:none}#navbar .nav-tabs .nav-tabs-item .absolute,#navbar .nav-tabs a[href*=\"/how-to-guides/\"],a.mobile-nav-tabs-item[href*=\"/how-to-guides/\"]{display:none!important}#navbar .nav-tabs .nav-tabs-item.text-primary{color:#fff;background-color:#252b37;border-radius:100px;font-weight:600}#navbar .nav-tabs:has(a[href*=\"/how-to-guides/\"].text-primary) a.nav-tabs-item[href*=\"/how-to-guides\"]{color:#fff;background-color:#252b37;border-radius:100px;font-weight:600}#navbar .h-10{height:auto!important}.navbar-link a{background-color:transparent;color:#535862;font-weight:600}.nav-logo{height:40px}.navbar-link a:hover{color:#181d27;background-color:transparent}.products-container h2{color:#224;font-size:22px;font-weight:600}.card,.card>*{transition:all .3s ease}.card{border:0;box-shadow:0 4px 12px -1px rgba(10,13,18,.08)}.card>*{padding:20px}.card h2{color:#181d27;font-size:18px;line-height:20px}.card:hover{box-shadow:0 3px 3px -1.5px #0a0d120a,0 8px 8px -4px #0a0d1208,0 20px 24px -4px #0a0d1214;transform:translateY(-2px)}.card:hover>*{padding:24px;margin:-4px}.connector-page .card [data-component-part=card-content-container]{position:relative}.card [data-component-part=card-icon]:has(>svg){background-color:#e6f1ff;padding:24px;border-radius:100%;display:inline-flex;align-items:center;justify-content:center}body:not(:has(.homepage-container)) .card [data-component-part=card-icon]{width:auto!important;height:auto!important;min-width:32px!important;min-height:32px!important;align-self:flex-start!important}body:not(:has(.homepage-container)) .card [data-component-part=card-icon] img{width:32px!important;height:32px!important;object-fit:contain;flex-shrink:0}.connector-page div[data-component-part=card-icon]{background-color:#f8f9fc;padding:16px;border-radius:100%;display:inline-flex;align-items:center;justify-content:center;width:auto!important;height:auto!important}.connector-page div[data-component-part=card-icon] img,.connector-page div[data-component-part=card-icon] svg{width:32px!important;height:32px!important;object-fit:contain;flex-shrink:0;position:relative;z-index:1}.prod-beta-chip{display:flex;gap:4px;font-size:10px;width:max-content;border-radius:100px;padding:0 6px;font-weight:500;position:absolute;top:12px;right:12px}.prod-beta-chip.prod{color:#067647;background-color:#ecfdf3;border:1px solid #abefc6}.prod-beta-chip.beta{color:#175cd3;background-color:#eff8ff;border:1px solid #b2ddff}.prod-beta-chip img,button[aria-haspopup=menu] p{margin:0}.prod-beta-chip span{margin-top:-7px}#sidebar-content{border:0;top:132px!important;height:calc(100vh - 132px)!important}.sidebar-group-header{display:none}.my-2:has(ul.sidebar-group a[href*=\"/api-reference\"])>.sidebar-group-header{display:flex}.sidebar-group-header h5{color:#224;font-size:14px;font-weight:600}#table-of-contents-content .toc-item a{color:#414651}#table-of-contents-content .toc-item a:hover{color:#414651;border-color:#d5d9eb}#table-of-contents-content .toc-item a.text-primary{color:#6938ef;border-color:#6938ef;font-weight:600}.collate-ai-container h1,.products-container h1,body:not(:has(.homepage-container)) .mdx-content h1{display:flex;flex-direction:column;align-items:flex-start;margin-top:0!important}body:not(:has(.homepage-container)) .mdx-content h1#error-title{align-items:center}.collate-ai-container h1::before,.products-container h1::before,body:not(:has(.homepage-container)) .mdx-content h1::before{content:\"OpenMetadata Documentation\";display:block;background-color:#ebe9fe;color:#6938ef;padding:4px 12px;border-radius:100px;font-size:14px;font-weight:600;line-height:1.5;margin-bottom:16px;width:fit-content;flex-shrink:0}h1.ConnectorName::before{margin-top:-40px;position:absolute;top:-2px;left:0}body:has(.homepage-container) #assistant-entry,body:has(.homepage-container) #search-bar-entry,div:has(>#chat-assistant-sheet) .cursor-col-resize{display:none!important}.search-container{position:relative;margin-top:64px;display:flex;align-items:center;justify-content:center;width:100%;max-width:800px;margin-left:auto;margin-right:auto;padding:0 6px}.homepage-search-input{width:100%;padding:18px 58px 18px 28px;border:2px solid #eaecf5;border-radius:100px;font-size:16px;color:#3c4257;cursor:pointer;transition:all .2s ease;box-sizing:border-box}.homepage-search-input::placeholder{color:#cecfd2;font-size:18px}.homepage-search-input:hover{background-color:#fff}.homepage-search-input:focus{outline:0;background-color:#fff;box-shadow:0 0 0 3px rgba(84,105,212,.1)}.search-shortcut{position:absolute;right:20px;top:50%;transform:translateY(-50%);color:#9ca3af;padding:4px 8px;border-radius:4px;font-size:12px;font-weight:600;pointer-events:none;white-space:nowrap}.navbar-link:last-of-type a{background-color:#6938ef;color:#fff;border-radius:100px;display:flex;justify-content:center}.navbar-link:last-of-type a:hover{background-color:#5f27f8}body:has(.connector-page) #sidebar-content,body:has(.deployment-page-container) #sidebar-content,body:has(.getting-started-container) #sidebar-content,body:has(.how-to-guides-container) #sidebar-content,body:has(.sdk-container) #sidebar-content{display:none}body:has(.connector-page) #content-container,body:has(.deployment-page-container) #content-container,body:has(.getting-started-container) #content-container,body:has(.how-to-guides-container) #content-container,body:has(.sdk-container) #content-container{max-width:1300px!important}.collate-ai-container{margin-top:10px}.prose iframe,article iframe{max-width:600px!important;width:100%!important;margin:0 auto!important;display:block!important;height:auto!important;aspect-ratio:16/9!important;border:0!important}@media (max-width:1024px){.navbar-link:first-of-type{margin-top:20px}.prose iframe,article iframe{max-width:100%!important;width:100%!important;height:auto!important;aspect-ratio:16/9!important}}@media (max-width:768px){.prose iframe,article iframe{max-width:100%!important;width:100%!important;margin:0!important;height:auto!important;aspect-ratio:16/9!important}}.card:not(:has([data-component-part=card-icon])){border:1px solid #eaecf5!important;background-color:#f8f9fc!important;box-shadow:none!important}.card.card:not(:has([data-component-part=card-icon])) h2{color:#6938ef;font-weight:500;font-size:20px;margin-bottom:12px;line-height:30px}.card.card:not(:has([data-component-part=card-icon])):hover h2{text-decoration:underline}.how-to-guides-container ul{list-style:none;padding-left:0}.how-to-guides-container ul li{padding-left:28px;position:relative;margin-bottom:8px}.how-to-guides-container ul li::before,.python-container ul li::before,.sdk-container ul li::before{content:'';position:absolute;left:0;top:6px;width:16px;height:16px;background-color:transparent;background-image:url(/public/images/icons/check-circle.svg);background-size:contain;background-repeat:no-repeat}.sdk-container .card img{min-width:40px!important;width:40px!important;height:40px!important}.code-block,.code-block [data-component-part=code-block-root]{border:0!important;background-color:#3e444f!important;border-radius:16px!important;backdrop-filter:blur(40px)}.code-block code,.code-block pre,.code-block span{color:#e5e7eb!important;background-color:transparent!important}.python-container{background-color:#fafafa;border-radius:12px;padding:6px 20px}.callout [data-component-part=callout-content]{color:#414651!important}@layer utilities{.callout [data-component-part=callout-content] a{color:var(--primary-color)!important}}div:has(>#chat-assistant-sheet){border:0}#chat-assistant-sheet{margin-top:.4rem!important;min-height:90%!important;border:1px solid #eaecf5;border-top-left-radius:24px;border-top-right-radius:24px;box-shadow:0 2px 2px -1px #0a0d120a,0 4px 6px -2px #0a0d1208,0 12px 16px -4px #0a0d1214;background:#0a0d12;color:rgba(255,255,255,.9)}.chat-assistant-sheet-header span{color:rgba(255,255,255,.9)!important}.chat-assistant-sheet-header span.font-medium{font-size:0}.chat-assistant-sheet-header span.font-medium::before{content:\"Ask AI\";font-size:.875rem;font-weight:600}.chat-assistant-sheet-header svg{width:16px;height:16px;color:rgba(255,255,255,.8)}#chat-assistant-textarea{background-color:#373a41;border-radius:100px;color:rgba(255,255,255,.9);padding:12px}#chat-assistant-textarea::placeholder{color:rgba(255,255,255,.6)}.chat-assistant-send-button{width:32px!important;height:32px!important;bottom:6px;background-color:#2970ff}.chat-assistant-send-button:hover{background-color:#004eeb}.chat-assistant-send-button svg{width:16px;height:16px}div:has(>div>#chat-assistant-textarea){border:0!important;background-color:#373a41}#chat-content{margin-top:12px}#chat-content .rounded-2xl.bg-gray-100{background:#22262f!important}#chat-content button{color:rgba(255,255,255,.6)}#chat-content button[aria-label*=Vote]:hover,#chat-content button[aria-label=\"Copy chat response\"]:hover{color:#22262f}#chat-content .whitespace-pre-line,#chat-content li{color:rgba(255,255,255,.7)}#chat-content .rounded-2xl.bg-gray-100 .text-gray-800,#chat-content .rounded-2xl.bg-gray-100 div{color:#ffffffe5!important}#assistant-entry{margin-left:auto;border:2px solid #1570ef;background-color:transparent}#assistant-entry span,#assistant-entry svg{-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;font-weight:600;color:#1570ef}#assistant-entry span,#assistant-entry svg,#assistant-entry:hover{background:linear-gradient(45deg,#175cd3 0,#1570ef 100%)}#assistant-entry:hover span,#assistant-entry:hover svg{background:0 0;-webkit-background-clip:unset;-webkit-text-fill-color:#fff;background-clip:unset;color:#fff}div:has(>#search-bar-entry):has(>#assistant-entry){flex-direction:row-reverse!important}.deployment-page-container ul[data-component-part=tabs-list]{width:100%;display:flex;justify-content:space-between;border:0}.deployment-page-container div[data-active=true],.deployment-page-container div[data-component-part=tab-button]{border:0}.card-layout{display:flex;gap:24px;padding:20px;box-shadow:0 2px 7px 0 rgba(169,169,169,.3);border-radius:12px;margin:6px;overflow:hidden}.card-layout>div:last-child{flex-shrink:0;align-self:start}.card-layout .icon{width:64px;height:64px;margin:0}.card-layout .header{font-size:20px;font-weight:600;color:#224}.card-layout .header-container{display:flex;align-items:center;gap:10px}.card-layout .header-chip{font-size:12px;background-color:#ebe9fe;color:#6938ef;font-weight:500;border-radius:36px;padding:2px 8px}.card-layout p{font-size:15px;color:#414651;font-weight:500;margin:8px 0 0}.card-layout .button-card{white-space:nowrap;background-color:#5925dc;color:#fff;text-decoration:none;padding:6px 8px;border-radius:6px;font-size:14px;font-weight:500}.card-layout .button-card:hover{text-decoration:none;background-color:#4d20be;border-bottom:none}.card-layout .button-link{white-space:nowrap;color:#5925dc;font-size:16px;font-weight:600;text-decoration:none;border-bottom:none;display:flex;gap:8px;align-items:center}.card-layout .button-link img{width:10px;height:10px;margin:0}.deployment-page-container div[data-component-part=card-cta] button{color:#6938ef}.deployment-page-container div[data-component-part=card-content-container]{height:100%}.card-layout.upgrade{background:linear-gradient(90deg,#f7f9ff 0,#fcfaff 100%)}.deployment-page-container .card-group{margin:6px}@media (max-width:768px){.card-layout{flex-direction:column}}@media (max-width:580px){.card-layout .header-container{flex-direction:column;align-items:start;margin-bottom:16px}}.deployment-tabs[role=tablist]{display:grid!important;grid-template-columns:repeat(3,1fr);gap:24px;max-width:1200px;margin:32px auto;padding:12px;border:0!important;background:0 0!important}[role=tabpanel][data-component-part=tab-content]{margin-top:32px}.deployment-tabs [role=tablist]::before{content:none!important}.deployment-tabs [role=tab]{all:unset;cursor:pointer;display:flex!important;flex-direction:column;align-items:flex-start!important;padding:4px 14px!important;background-color:#fff!important;position:relative;box-shadow:0 4px 12px -1px #0a0d1214;border-radius:12px;margin-top:28px;transition:box-shadow .2s ease,transform .2s ease;text-align:left;box-sizing:border-box}.deployment-tabs [role=tab]:hover{outline:2px solid #ccbafe}.deployment-tabs [role=tab][aria-selected=true]{outline:2px solid #6938ef!important}.deployment-tabs [role=tab]::before{background-color:#ebe9fe;color:#6938ef;max-width:max-content;border-top-left-radius:12px;padding:6px 60px 32px 16px;position:absolute;top:-34px;left:0;-webkit-mask:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 70' preserveAspectRatio='none'%3E%3Cpath d='M0,12 Q0,0 12,0 L165,0 Q177,0 182,10 L200,70 L0,70 Z'/%3E%3C/svg%3E\") no-repeat;-webkit-mask-size:100% 100%;mask:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 70' preserveAspectRatio='none'%3E%3Cpath d='M0,12 Q0,0 12,0 L165,0 Q177,0 182,10 L200,70 L0,70 Z'/%3E%3C/svg%3E\") no-repeat;mask-size:100% 100%;font-size:14px;font-weight:500;z-index:-1}.deployment-tabs [data-component-part=tab-button]{font-size:18px;font-weight:600;color:#224;display:flex;gap:10px;padding:10px 0!important}.deployment-tabs [role=tab]:nth-child(1)::before{content:\"Best for: PoC, exploration\"}.deployment-tabs [role=tab]:nth-child(2)::before{content:\"Best for: Teams, orgs\"}.deployment-tabs [role=tab]:nth-child(3)::before{content:\"Best for: Existing users\"}.deployment-tabs [role=tab] img{width:50px!important;height:50px!important;order:-1}.deployment-tabs [role=tab] [data-slot=title],.deployment-tabs [role=tab]>span:first-of-type{color:#181d27!important;font-size:20px!important;font-weight:600!important;margin-top:16px;display:block}.deployment-tabs [role=tabpanel]{max-width:1200px;margin:0 auto;padding:20px}@media (max-width:768px){.deployment-tabs [role=tablist]{grid-template-columns:1fr;gap:64px}.deployment-tabs [role=tab]{min-height:auto}}.space-x-2>:not([hidden])~:not([hidden]){margin:0}.update-container{display:flex;flex-direction:column!important;padding-top:0}.update-container>div:first-of-type{width:100%!important;max-width:100%!important;flex-direction:column!important;align-items:flex-start!important;position:sticky!important;top:128px!important;z-index:11;background-color:#fff;padding:36px 0 8px}"},{"filePath":"style.css","content":".homepage-container{max-width:1440px;margin:0 auto;padding:0 10px 40px}.collate-ai-iframe{margin:32px 0 40px}.banner-content{padding:96px 0;background:radial-gradient(46.63% 44.4% at 50% 50%,rgba(201,207,255,.2) 0,rgba(255,255,255,.2) 100%)}.page-header{color:#181d27!important;font-weight:600;font-size:56px;text-align:center;margin-top:24px}#header-highlight{background:linear-gradient(to top,#b224ef 0,#7579ff 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.page-description{text-align:center;color:#717680;font-size:20px;margin-top:20px}.header-description{font-size:18px;margin-top:16px}.chips{display:flex;justify-content:center;gap:24px;margin-top:24px}.chip{padding:8px 12px;border-radius:100px;box-shadow:0 4px 12px -1px rgba(10,13,18,.08);display:flex;gap:12px;align-items:center;font-weight:500;width:max-content}.chip.purple{background:#ebe9fe;color:#6938ef}.chip.purple:hover{background:#e5e2fd}.chip.header{background-color:#f5f3ff;color:#875bf7;margin:0 auto;padding:8px 20px;box-shadow:none;font-size:14px}.deployment-cards{max-width:1200px;margin:16px auto;display:grid;grid-template-columns:repeat(3,1fr);gap:24px;position:relative;padding:20px}.deployment-top{background-color:#fafafa;color:#181d27;max-width:max-content;border-top-left-radius:12px;padding:10px 60px 32px 24px;position:relative;top:28px;-webkit-mask:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 70' preserveAspectRatio='none'%3E%3Cpath d='M0,12 Q0,0 12,0 L165,0 Q177,0 182,10 L200,70 L0,70 Z'/%3E%3C/svg%3E\") no-repeat;-webkit-mask-size:100% 100%;mask:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 70' preserveAspectRatio='none'%3E%3Cpath d='M0,12 Q0,0 12,0 L165,0 Q177,0 182,10 L200,70 L0,70 Z'/%3E%3C/svg%3E\") no-repeat;mask-size:100% 100%}.best-enterprise{max-width:max-content;border-radius:32px 80px 0 0;background:#224;padding:9px 44px 10px 45px;display:flex;gap:20px;align-items:center}.best-enterprise .collate-logo{width:84px;height:14px}.best-enterprise .x-icon{width:18px;height:18px}.best-enterprise .om-logo{width:64px;height:25px}.deployment-card{box-shadow:0 4px 12px -1px #0a0d1214;background-color:#fff;border-radius:12px;padding:20px;box-sizing:border-box;position:relative;z-index:24;display:flex;flex-direction:column;height:100%}.deployment-card img{align-self:flex-start;width:60px;height:60px}.deployment-card h3{color:#181d27;margin-top:16px;font-size:20px}.deployment-card p{color:#717680;font-size:18px}.deployment-card .read-more img,.highlight-card .read-more img{width:12px;height:12px}.collate-om{margin:72px auto 24px;max-width:1200px;padding:20px}.collate-content{background-image:url(/public/images/banner-bg.png);background-size:100% 100%;background-position:center;background-repeat:no-repeat;border-radius:0 20px 20px 20px;padding:28px 44px;width:100%;box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;gap:24px;position:relative;z-index:24}.collate-content .summit-header{font-size:48px;font-weight:400;color:#224;line-height:52px}.collate-content p{color:#5816dc;margin-top:0;margin-left:4px;font-size:28px;font-weight:600}.collate-content .explore-collate{background-color:#fbe200;color:#000;font-size:18px;white-space:nowrap;padding:11px 20px;border-radius:6px;font-weight:600}.collate-content .explore-collate:hover{background-color:#dec908}.collate-content .explore-collate a{color:#000;font-weight:600}.deployment,.guides,.highlights,.quick-links{padding:48px 48px 96px}.connectors{padding:48px 48px 24px}.guide-header{font-weight:500;font-size:40px;color:#181d27;text-align:center;margin-top:24px}.guide-list{display:grid;grid-template-columns:repeat(7,1fr);gap:24px;margin:52px auto 0;max-width:100%}.guide-card,.see-all{text-align:center;font-size:18px;font-weight:500}.guide-card{box-shadow:0 4px 12px -1px rgba(10,13,18,.08);padding:20px;border-radius:20px;display:flex;flex-direction:column;align-items:center;color:#252b37;gap:16px;width:100%;transition:all .3s ease}.guide-card:hover{box-shadow:0 20px 24px -4px #0a0d1214;transform:translateY(-4px);padding:24px;margin:-4px}a.guide-card img{width:80px!important;height:80px!important}.see-all{margin:64px auto 0;box-shadow:0 2px 2px -1px rgba(10,13,18,.04),0 4px 6px -2px rgba(10,13,18,.03),0 12px 16px -4px rgba(10,13,18,.08);width:max-content;padding:12px 24px;background-color:#f4f3ff;border-radius:100px}.see-all a{color:#6938ef!important}.see-all:hover{background-color:#e3e0fc}.highlight-cards{max-width:850px;display:grid;grid-template-columns:repeat(2,1fr);gap:32px;margin:60px auto 0}.highlight-card{box-shadow:0 4px 12px -1px rgba(10,13,18,.08);padding:20px;border-radius:12px;transition:all .3s ease}.highlight-card p{font-size:18px;color:#717680}.highlight-card:hover{box-shadow:0 3px 3px -1.5px rgba(10,13,18,.04),0 8px 8px -4px rgba(10,13,18,.03),0 20px 24px -4px rgba(10,13,18,.08);padding:24px;margin:-4px;transform:translateY(-2px)}.highlight-card .icon{width:48px!important;height:48px!important}.highlight-header{font-size:20px;font-weight:500;color:#181d27;margin-top:12px}.deployment-card .read-more,.read-more{margin-top:20px;display:flex;gap:10px;align-items:center;color:#6938ef;font-weight:600}.deployment-card .read-more{margin-top:auto}.deployment-card:hover .read-more,.highlight-card:hover .read-more{color:#581ef7}.read-more img{margin-top:2px}.deployment-card img{margin-top:6px}.links{margin:40px auto 0;max-width:80%;display:grid;grid-template-columns:repeat(3,1fr);justify-items:center}.link-header{color:#181d27;display:flex;gap:10px;align-items:center;margin-bottom:16px}.link-header h3{font-size:20px;font-weight:500}.link-list{color:#6938ef;font-weight:500;display:flex;flex-direction:column;gap:12px}.link-list a:hover{text-decoration:underline;color:#5730c1}.collate-video{background:linear-gradient(135deg,rgb(224 195 252/50%) 0,rgb(142 197 252/50%) 100%);border-radius:24px;max-width:90%;margin:32px auto 64px;padding:36px 80px}.video-content{display:grid;grid-template-columns:repeat(2,1fr);align-items:center;gap:16px}.video-container{width:100%;max-width:600px;margin:20px auto;padding:0 16px;box-sizing:border-box}.video,.video-container iframe{border-radius:20px;border:3px solid #bed2fb;height:auto}.video-container iframe{width:100%;aspect-ratio:16/9;display:block}.video{max-width:100%;box-shadow:0 2px 2px -1px rgba(10,13,18,.04),0 4px 6px -2px rgba(10,13,18,.03),0 12px 16px -4px rgba(10,13,18,.08)}.video-chip{background-color:rgba(255,255,255,.4);width:max-content;padding:12px 8px;border-radius:24px;color:#6938ef;font-size:12px}.video-description{color:#414651;font-size:18px;max-width:90%}.product-demo{background-color:#7a5af8;padding:8px 14px;color:#fff;border-radius:24px;margin-right:8px;font-size:12px}.video-header{text-align:left;margin-bottom:16px}.external-links{padding:36px 80px}.explore-container{display:grid;grid-template-columns:repeat(3,1fr)}.explore-items{display:flex;gap:20px;grid-column:span 2/span 2}.explore-header{color:#252b37;font-size:24px;font-weight:600;letter-spacing:-2%}.explore-desc{font-size:18px;color:#717680;margin-top:4px}.slack-icon{width:20px;height:27px}.explore-card{background-color:#f4f9ff;box-shadow:0 4px 12px -8px #0026543d;padding:12px 20px;border-radius:12px;color:#535862;font-size:14px;font-weight:400;transition:all .3s ease}.explore-card:hover{box-shadow:0 3px 3px -1.5px rgba(10,13,18,.04),0 8px 8px -4px rgba(10,13,18,.03),0 20px 24px -4px rgba(10,13,18,.08);padding:16px 24px;margin:-4px;transform:translateY(-2px)}.explore-card-header{display:flex;gap:10px}.explore-card-header div{color:#252b37;font-weight:500;font-size:18px}.home-footer{display:flex;justify-content:space-between;padding:36px 80px 0;color:#717680}.home-footer-links{display:flex;gap:20px}.footer-link-name{color:#252b37;font-weight:400}.footer-link-name:hover{color:#181d27;text-decoration:underline}.home-footer-social{display:flex;gap:8px}.social-link{padding:4px 8px;border-radius:4px}.social-link:hover{background-color:#f8f9fc}.connector-page div[data-component-part=card-icon]{background-color:#f8f9fc;padding:21px 20px;border-radius:100%;display:inline-flex;align-items:center;justify-content:center}.connector-page div[data-component-part=card-icon]>*{position:relative;z-index:1}.connector-page .card [data-component-part=card-content-container]{padding:16px}.card-details{display:flex;gap:6px;align-items:center}.card-logo{width:20px;height:20px;margin:0}.products-container{max-width:1150px;margin:0 auto;padding:60px 14px 40px}.products-container h1{font-size:30px!important}.products-container [data-as=p]:first-of-type{display:block;margin-bottom:40px}.product-cards{margin-top:16px;padding-bottom:48px}.product-cards .card [data-component-part=card-content]{margin-top:4px}.products-container .external-links{padding:64px 0 36px}.products-container .home-footer{padding:36px 0 0}@media (max-width:1280px){.guide-list{grid-template-columns:repeat(3,1fr)}.links{max-width:100%}.collate-video,.external-links,.home-footer{padding:32px 56px}}@media (max-width:1024px){.explore-container,.video-content{grid-template-columns:repeat(1,1fr);gap:28px}.explore-container{gap:32px}.home-footer{display:grid;grid-template-columns:repeat(3,1fr);row-gap:20px}.collate-tm{grid-column:span 3/span 3}.home-footer-links{grid-column:span 2/span 2}.home-footer-social{justify-self:flex-end}}@media (max-width:768px){.page-header{font-size:48px}.chips{display:grid;grid-template-columns:repeat(2,1fr);max-width:400px;margin:40px auto 0}.deployment-cards{grid-template-columns:repeat(1,1fr);gap:64px}.collate-content{flex-direction:column;align-items:center;text-align:center;padding:48px 24px}.guide-list,.links{grid-template-columns:repeat(2,1fr)}.links{justify-items:start;row-gap:40px}.video-container{padding:0 12px;margin:16px auto}.external-links,.home-footer{padding:24px}.home-footer-links{flex-direction:column}}@media (max-width:640px){.chips{max-width:auto;justify-items:center}.chips,.guide-list,.highlight-cards,.links{grid-template-columns:repeat(1,1fr)}.collate-video{padding:24px}.explore-items{flex-direction:column}.best-enterprise{padding:9px 36px 10px 24px}}"},{"filePath":"snippets/components/CodePreview.css","content":".split-layout{display:grid;grid-template-columns:1fr 1fr;gap:2rem;margin:2rem 0;align-items:start}@media (max-width:768px){.split-layout{grid-template-columns:1fr;gap:1rem}}.code-content .code-block [data-component-part=code-block-root]{background-color:#0b1e3d!important}.content-panel{display:flex;flex-direction:column;gap:1.5rem;padding-right:1rem}.content-section{padding:.5rem 1rem;border-left:2px solid transparent;border-radius:6px;cursor:pointer;position:relative;box-sizing:border-box;transition:background .25s ease,border-color .25s ease,box-shadow .25s ease}.content-section:hover{background:linear-gradient(90deg,rgba(176,176,176,.08) 0,rgba(176,176,176,.03) 100%);border-left-color:rgba(176,176,176,.5)}.content-section.active{background:linear-gradient(90deg,rgba(176,176,176,.15) 0,rgba(176,176,176,.05) 100%);border-left-color:#b0b0b0;box-shadow:0 2px 8px rgba(176,176,176,.1),inset 0 0 20px rgba(176,176,176,.05);color:#3f4145}.content-section.active::before{content:'';position:absolute;left:0;top:0;bottom:0;width:2px;background:linear-gradient(180deg,silver 0,#b0b0b0 50%,#a0a0a0 100%)}.content-section h4{margin:0 0 .75rem;font-size:1rem;font-weight:600;color:#1a1a1a}.content-section p{margin:.5rem 0;line-height:1.6;color:#4a4a4a}.content-section code{background:rgba(0,0,0,.05);padding:.2em .4em;border-radius:3px;font-size:.9em}.code-panel{position:sticky;top:calc(var(--navbar-height, 64px) + 6rem);height:calc(100vh - var(--navbar-height, 64px) - 6rem);display:flex;flex-direction:column;border:1px solid #e5e7eb;border-radius:8px;overflow:hidden;background:#1e1e1e;box-shadow:0 4px 6px rgba(0,0,0,.1)}.code-panel [data-component-part=code-block-root]{padding:0 1rem}.code-panel .code-block{margin:0}.code-header,.copy-btn{display:flex;align-items:center;font-size:.875rem}.code-header{justify-content:space-between;padding:.4rem 1rem;background:#0b1e3d;border-bottom:1px solid #404040;color:#fff;font-family:'Monaco','Menlo','Ubuntu Mono',monospace}.copy-btn{gap:.5rem;padding:.375rem .75rem;background:0 0;border:1px solid #404040;border-radius:4px;color:#a0a0a0;cursor:pointer;transition:all .2s ease}.copy-btn:hover{background:#404040;border-color:#606060;color:#fff}.copy-btn svg{width:16px;height:16px}.copy-btn .icon-check,.copy-btn[data-copied=true] .icon-copy{display:none}.copy-btn[data-copied=true] .icon-check{display:block;color:#10b981}.code-content{position:relative;flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:auto;background:#0b1e3d;scroll-behavior:smooth;padding:14px 0}.code-content::-webkit-scrollbar{width:8px;height:8px}.code-content::-webkit-scrollbar-track{background:#2d2d2d}.code-content::-webkit-scrollbar-thumb{background:#404040;border-radius:4px}.code-content::-webkit-scrollbar-thumb:hover{background:#606060}.code-content pre,.code-line{position:relative;white-space:pre}.code-content pre{margin:0;padding:0 1rem;background:0 0;color:#d4d4d4;font-family:'Monaco','Menlo','Ubuntu Mono',monospace;font-size:.875rem;line-height:1.6;word-wrap:normal;overflow-wrap:normal}.code-content pre code{background:0 0;padding:0;color:inherit;font-size:inherit;border-radius:0;display:block;white-space:pre}.code-line{display:block;padding-left:1rem;padding-right:1rem;margin-left:-1rem;margin-right:-1rem;transition:all .2s ease;line-height:inherit;border-left:2px solid transparent}.code-line::after{content:'\\a';white-space:pre}.code-line.highlighted{background:rgba(200,200,200,.15)!important;border-left:2px solid #d0d0d0;padding-left:calc(1rem - 2px);min-height:1.5em}.code-line.highlighted::before{content:'';position:absolute;left:0;top:0;bottom:0;width:2px;background:#d0d0d0;z-index:1}.code-line.highlighted+.code-line.highlighted{border-top:none}.code-line.highlighted:not(.code-line.highlighted+.code-line.highlighted){border-top-left-radius:4px}.code-line.highlighted:not(:has(+.code-line.highlighted)){border-bottom-left-radius:4px}.line-number{display:inline-block;min-width:2.5em;padding-right:1em;margin-right:.5em;text-align:right;color:#858585;user-select:none;border-right:1px solid #404040}@media (prefers-color-scheme:dark){.content-section p{color:silver}.content-section code{background:rgba(255,255,255,.1)}.code-panel{border-color:#404040}}@media (max-width:768px){.code-panel{position:relative;top:0;max-height:400px}.split-layout{grid-template-columns:1fr}}.code-content #ask-ai-code-block-button,.code-content [data-testid=copy-code-button]{display:none!important}div[data-fade-overlay=true]{--fade-color-light:transparent!important;--fade-color-dark:transparent!important;display:none!important}:has([data-floating-buttons])>[data-component-part=code-block-root] pre>code{padding-right:0!important}@media (max-width:768px){.code-panel{position:relative;top:0;height:400px}}"},{"filePath":"snippets/components/ConnectorDetailsHeader/ConnectorDetailsHeader.css","content":".container{margin:48px 0!important;display:flex;flex-direction:column;gap:6px}.Heading{display:flex;justify-content:space-between;padding-bottom:8px;border-bottom:1px solid var(--default-border-color)}.ConnectorName{font-size:32px;font-weight:700;margin-bottom:0}.PlatformDetails{display:flex;align-items:center;gap:4px;font-size:14px;color:var(--gray-text-color)}.ImageContainer,.PlatformIcon{padding:4px;background-color:var(--connector-icon-bg-color);border:1px solid var(--default-border-color);border-radius:12px}.ImageContainer{padding:12px;border-radius:28px}.IconContainer{background-color:#f8f9fc;padding:16px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;width:64px;height:64px;flex-shrink:0}.ConnectorIcon{width:32px!important;height:32px!important;object-fit:contain;display:block;margin:0}.FeaturesHeading{font-size:14px;color:var(--gray-text-color)}.SubHeading{display:flex;flex-direction:column;gap:8px}.FeaturesList{display:flex;flex-wrap:wrap;gap:12px}.FeatureTag{padding:4px 10px;font-size:12px;border-radius:14px;width:fit-content;display:flex;align-items:center;gap:4px}.AvailableFeature{color:var(--green-tag-color);border:1px solid var(--green-tag-color);background-color:var(--green-tag-bg-color)}.UnavailableFeature{color:var(--orange-tag-color);border:1px solid var(--orange-tag-color);background-color:var(--orange-tag-bg-color)}.StageBadge{font-size:10px;height:auto;color:var(--green-tag-color)}"},{"filePath":"snippets/v1.13.x/components/ConnectorGrid/Integrations.css","content":".no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.integrations-section{padding:3rem 1rem 9rem;max-width:1300px;margin:0 auto}.integrations-card{background:#fafafa;border-radius:12px;border:1px solid #eaecf5;display:flex;height:610px;overflow:hidden;position:relative;padding:40px 40px 40px 0}.integrations-mobile-header{display:none;width:100%;background:#fff;border-bottom:1px solid #d9daee;padding:32px;font-size:20px;justify-content:center;align-items:center;gap:12px;position:sticky;top:0;z-index:15;cursor:pointer}.arrow{transition:transform .3s ease}.arrow.open{transform:rotate(180deg)}.arrow-down{width:10px;height:10px}.integrations-sidebar{width:220px;border-right:1px solid #eaecf5;display:flex;flex-direction:column;position:sticky;top:0;z-index:5}.sidebar-item{display:block;width:100%;padding:12px 22px;font-size:16px;color:#535862;cursor:pointer;white-space:nowrap;flex-shrink:0;text-align:right;font-weight:500;border-right:2px solid transparent}.sidebar-item:hover{color:#414651;border-right:2px solid #d5d9eb}.sidebar-item.active{border-right:2px solid #6938ef;font-weight:600;color:#6938ef}.integrations-grid{flex:1;padding:20px 32px;overflow-y:auto;display:grid;gap:20px;align-content:flex-start}.integrations-grid.desktop{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}.integrations-grid.mobile{display:none}.integration-card{max-height:110px;display:flex;align-items:center;gap:12px;background-color:#fff;box-shadow:0 4px 12px -1px #0a0d1214;border-radius:12px;padding:12px 20px;box-sizing:border-box;transition:all .3s ease}.integration-card span{color:#181d27;font-weight:500;font-size:16px;line-height:120%}.integration-card,a.integration-card span:hover{text-decoration:none}a.integration-card:hover{box-shadow:0 3px 3px -1.5px #0a0d120a,0 8px 8px -4px #0a0d1208,0 20px 24px -4px #0a0d1214;padding:16px 24px;margin:-4px;text-decoration:none;transform:translateY(-2px)}.integration-card img{width:32px;height:32px;object-fit:contain;flex-shrink:0}.load-more{grid-column:span 2;padding:24px;font-size:20px;background:#fff;border:0;cursor:pointer}@media (max-width:1024px){.integrations-card{flex-direction:column;height:auto;padding:0;overflow:auto}.integrations-mobile-header{display:flex}.integrations-sidebar{display:none;width:100%;position:absolute;top:68px;left:0;right:0;border-right:none;border-bottom:1px solid #d9daee;background:#fff;overflow-y:scroll;z-index:20}.integrations-sidebar.open{display:block}.sidebar-item{text-align:center}.sidebar-item.active{border-right:none}.integrations-grid.desktop{display:none}.integrations-grid.mobile{display:grid;grid-template-columns:repeat(2,1fr);padding:24px}}"},{"filePath":"snippets/components/BreakingChanges/BreakingChanges.css","content":".breaking-changes-container{border-bottom:5px solid #b42318;border-radius:20px;background-color:#ef4444;padding:12px 18px 18px;margin:24px 0}.breaking-changes-header{display:flex;align-items:center;gap:10px;margin-bottom:16px;margin-top:4px!important}.breaking-changes-icon{width:24px;height:24px;flex-shrink:0}.breaking-changes-title{font-size:22px;font-weight:700;color:#fff}.breaking-changes-content{background-color:#fef3f2;border-radius:20px;padding:20px 24px;color:#414045}.breaking-changes-content ul{margin:0}.breaking-changes-content li{margin-bottom:12px;line-height:1.6}.breaking-changes-content li:last-child{margin-bottom:0}.breaking-changes-content pre{border-radius:8px;padding:16px 20px;margin:12px 0;overflow-x:auto}.breaking-changes-content code{font-size:14px;line-height:1.7}"},{"filePath":"snippets/components/VersionMatrix/VersionMatrix.css","content":".vm-wrapper{border-radius:16px;overflow-x:auto;border:1px solid #7237f8;max-width:700px;font-family:inherit;display:inline-block;width:100%}.vm-wrapper .vm-table,.vm-wrapper .vm-table>div{margin:0!important;padding:0!important;width:100%!important;max-width:100%!important}.vm-wrapper table{margin:0!important;width:100%!important;min-width:0!important;display:table!important;table-layout:fixed;border-collapse:collapse}.vm-header-row{background:#6938ef}.vm-wrapper .vm-th{padding:14px 20px;text-align:left;color:#fff;font-weight:500;font-size:18px;width:50%}.vm-th:not(:last-child){border-right:1px solid rgba(255,255,255,.4)}.vm-row-even{background:#fff}.vm-row-odd{background:#f5f3ff}.vm-wrapper .vm-td{padding:14px 20px;font-size:16px;border-top:1px solid #e5e7eb;color:#111827;text-align:left}.vm-td:not(:last-child){border-right:1px solid #e5e7eb}.vm-td-updated{font-weight:400}.vm-updated-badge{color:#000;font-weight:400;font-size:14px;display:inline-flex;align-items:center;margin-left:12px;vertical-align:top}.vm-badge-icon{fill:red;vertical-align:middle;margin-right:4px;flex-shrink:0}@media (max-width:480px){.vm-td,.vm-th{padding:10px 12px;font-size:14px}.vm-td{font-size:13px}.vm-updated-badge{font-size:11px;display:flex;margin-left:0;margin-top:4px}.vm-badge-icon{width:12px;height:12px}}"},{"filePath":"snippets/components/CodeLayout/CodeLayout.css","content":".code-layout{display:grid;grid-template-columns:1fr 1fr;gap:2rem;margin:2rem 0;align-items:start;width:100%}.code-layout h4{margin-top:0}.code-layout-code{position:-webkit-sticky;position:sticky;top:132px;align-self:flex-start;max-height:calc(100vh - 132px);overflow-y:auto;z-index:10}@media (max-width:768px){.code-layout{grid-template-columns:1fr;gap:1rem}.code-layout-code{position:static;max-height:none;overflow-y:visible}}"},{"filePath":"snippets/components/ConnectorFilter/ConnectorFilter.css","content":".connector-filter{--connector-filter-accent:#1570ef;position:sticky;top:0;z-index:20;margin:20px 0 28px;padding:16px;border:1px solid var(--default-border-color, #e5e7eb);border-radius:8px;background-color:var(--background-color, #fff);box-shadow:0 2px 8px rgba(15,23,42,.06)}.connector-filter-row{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px}.connector-filter-field{display:flex;flex-direction:column;gap:6px;flex:1 1 160px;min-width:140px}.connector-filter-search-field{flex:1 1 170px;min-width:140px}.connector-filter-field label{font-size:14px;font-weight:600;color:var(--default-text-color, #374151)}.connector-filter-search{display:flex;align-items:center;gap:8px;height:36px;padding:0 10px;border:1px solid var(--select-border-color, #d1d5db);border-radius:6px;background-color:var(--background-color, #fff);color:var(--gray-text-color, #6b7280)}.connector-filter-search:focus-within{border-color:var(--connector-filter-accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--connector-filter-accent) 20%,transparent)}.connector-filter-search svg{flex-shrink:0}.connector-filter-search input{flex:1;min-width:0;border:0;outline:0;background:0 0;font-size:13px;color:var(--default-text-color, #111827)}.connector-filter-dropdown{position:relative}.connector-filter-trigger{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;height:36px;padding:0 10px;border:1px solid var(--select-border-color, #d1d5db);border-radius:6px;background-color:var(--background-color, #fff);color:var(--default-text-color, #111827);font-size:13px;cursor:pointer;text-align:left}.connector-filter-trigger:hover{border-color:var(--connector-filter-accent)}.connector-filter-trigger[aria-expanded=true]{border-color:var(--connector-filter-accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--connector-filter-accent) 20%,transparent)}.connector-filter-trigger span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.connector-filter-chevron{flex-shrink:0;color:var(--gray-text-color, #6b7280);transition:transform .15s ease}.connector-filter-chevron-open{transform:rotate(180deg);color:var(--connector-filter-accent)}.connector-filter-menu{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:30;max-height:320px;overflow-y:auto;margin:0;padding:6px;list-style:none;border:1px solid var(--default-border-color, #e5e7eb);border-radius:8px;background-color:var(--background-color, #fff);box-shadow:0 8px 24px rgba(15,23,42,.12)}.connector-filter-menu li{list-style:none}.connector-filter-menu li::before,.connector-filter-menu li::marker{content:none}.connector-filter-menu li[role=option]{padding:7px 10px;border-radius:5px;font-size:13px;color:var(--default-text-color, #111827);cursor:pointer}.connector-filter-menu li[role=option]:hover{background-color:var(--primary-background-color, rgba(21, 112, 239, 0.08))}.connector-filter-menu li[role=option].active{background-color:var(--primary-background-color, rgba(21, 112, 239, 0.1));color:var(--connector-filter-accent);font-weight:600}.connector-filter-group-label{padding:6px 10px 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--gray-text-color, #9ca3af)}.connector-filter-reset{flex-shrink:0;margin-left:auto;height:36px;padding:0 14px;border:1px solid var(--connector-filter-accent);border-radius:6px;background-color:transparent;color:var(--connector-filter-accent);font-size:13px;font-weight:600;cursor:pointer}.connector-filter-reset:hover{background-color:color-mix(in srgb,var(--connector-filter-accent) 10%,transparent)}"},{"filePath":"snippets/v2.0.x/components/ConnectorGrid/Integrations.css","content":".no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.integrations-section{padding:1.5rem .5rem 4.5rem;max-width:1300px;margin:0 auto}.integrations-card{background:#fafafa;border-radius:12px;border:1px solid #eaecf5;display:flex;height:610px;overflow:hidden;position:relative;padding:40px 40px 40px 0}.integrations-mobile-header{display:none;width:100%;background:#fff;border-bottom:1px solid #d9daee;padding:32px;font-size:20px;justify-content:center;align-items:center;gap:12px;position:sticky;top:0;z-index:15;cursor:pointer}.arrow{transition:transform .3s ease}.arrow.open{transform:rotate(180deg)}.arrow-down{width:10px;height:10px}.integrations-sidebar{width:220px;border-right:1px solid #eaecf5;display:flex;flex-direction:column;position:sticky;top:0;z-index:5}.sidebar-item{display:block;width:100%;padding:12px 22px;font-size:16px;color:#535862;cursor:pointer;white-space:nowrap;flex-shrink:0;text-align:right;font-weight:500;border-right:2px solid transparent}.sidebar-item:hover{color:#414651;border-right:2px solid #d5d9eb}.sidebar-item.active{border-right:2px solid #6938ef;font-weight:600;color:#6938ef}.integrations-grid{flex:1;padding:20px 32px;overflow-y:auto;display:grid;gap:20px;align-content:flex-start}.integrations-grid.desktop{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}.integrations-grid.mobile{display:none}.integration-card{max-height:110px;display:flex;align-items:center;gap:12px;background-color:#fff;box-shadow:0 4px 12px -1px #0a0d1214;border-radius:12px;padding:12px 20px;box-sizing:border-box;transition:all .3s ease}.integration-card span{color:#181d27;font-weight:500;font-size:16px;line-height:120%}.integration-card,a.integration-card span:hover{text-decoration:none}a.integration-card:hover{box-shadow:0 3px 3px -1.5px #0a0d120a,0 8px 8px -4px #0a0d1208,0 20px 24px -4px #0a0d1214;padding:16px 24px;margin:-4px;text-decoration:none;transform:translateY(-2px)}.integration-card img{width:32px;height:32px;object-fit:contain;flex-shrink:0}.load-more{grid-column:span 2;padding:24px;font-size:20px;background:#fff;border:0;cursor:pointer}@media (max-width:1024px){.integrations-card{flex-direction:column;height:auto;padding:0;overflow:auto}.integrations-mobile-header{display:flex}.integrations-sidebar{display:none;width:100%;position:absolute;top:68px;left:0;right:0;border-right:none;border-bottom:1px solid #d9daee;background:#fff;overflow-y:scroll;z-index:20}.integrations-sidebar.open{display:block}.sidebar-item{text-align:center}.sidebar-item.active{border-right:none}.integrations-grid.desktop{display:none}.integrations-grid.mobile{display:grid;grid-template-columns:repeat(2,1fr);padding:24px}}"},{"filePath":"snippets/v2.1.x-SNAPSHOT/components/ConnectorGrid/Integrations.css","content":".no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.integrations-section{padding:1.5rem .5rem 4.5rem;max-width:1300px;margin:0 auto}.integrations-card{background:#fafafa;border-radius:12px;border:1px solid #eaecf5;display:flex;height:610px;overflow:hidden;position:relative;padding:40px 40px 40px 0}.integrations-mobile-header{display:none;width:100%;background:#fff;border-bottom:1px solid #d9daee;padding:32px;font-size:20px;justify-content:center;align-items:center;gap:12px;position:sticky;top:0;z-index:15;cursor:pointer}.arrow{transition:transform .3s ease}.arrow.open{transform:rotate(180deg)}.arrow-down{width:10px;height:10px}.integrations-sidebar{width:220px;border-right:1px solid #eaecf5;display:flex;flex-direction:column;position:sticky;top:0;z-index:5}.sidebar-item{display:block;width:100%;padding:12px 22px;font-size:16px;color:#535862;cursor:pointer;white-space:nowrap;flex-shrink:0;text-align:right;font-weight:500;border-right:2px solid transparent}.sidebar-item:hover{color:#414651;border-right:2px solid #d5d9eb}.sidebar-item.active{border-right:2px solid #6938ef;font-weight:600;color:#6938ef}.integrations-grid{flex:1;padding:20px 32px;overflow-y:auto;display:grid;gap:20px;align-content:flex-start}.integrations-grid.desktop{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}.integrations-grid.mobile{display:none}.integration-card{max-height:110px;display:flex;align-items:center;gap:12px;background-color:#fff;box-shadow:0 4px 12px -1px #0a0d1214;border-radius:12px;padding:12px 20px;box-sizing:border-box;transition:all .3s ease}.integration-card span{color:#181d27;font-weight:500;font-size:16px;line-height:120%}.integration-card,a.integration-card span:hover{text-decoration:none}a.integration-card:hover{box-shadow:0 3px 3px -1.5px #0a0d120a,0 8px 8px -4px #0a0d1208,0 20px 24px -4px #0a0d1214;padding:16px 24px;margin:-4px;text-decoration:none;transform:translateY(-2px)}.integration-card img{width:32px;height:32px;object-fit:contain;flex-shrink:0}.load-more{grid-column:span 2;padding:24px;font-size:20px;background:#fff;border:0;cursor:pointer}@media (max-width:1024px){.integrations-card{flex-direction:column;height:auto;padding:0;overflow:auto}.integrations-mobile-header{display:flex}.integrations-sidebar{display:none;width:100%;position:absolute;top:68px;left:0;right:0;border-right:none;border-bottom:1px solid #d9daee;background:#fff;overflow-y:scroll;z-index:20}.integrations-sidebar.open{display:block}.sidebar-item{text-align:center}.sidebar-item.active{border-right:none}.integrations-grid.desktop{display:none}.integrations-grid.mobile{display:grid;grid-template-columns:repeat(2,1fr);padding:24px}}"},{"filePath":"snippets/v2.0.x/components/ReleaseCarousel/ReleaseCarousel.css","content":"@keyframes release-carousel-slide-next{0%{opacity:0;transform:translateX(60px)}to{opacity:1;transform:translateX(0)}}@keyframes release-carousel-slide-prev{0%{opacity:0;transform:translateX(-60px)}to{opacity:1;transform:translateX(0)}}.release-banner{max-width:1300px;margin:0 auto;background:linear-gradient(135deg,rgba(105,56,239,.12) 0,rgba(142,198,252,.35) 100%);padding:48px 100px;border-radius:24px}.release-banner-content{display:grid;grid-template-columns:repeat(2,1fr);gap:50px;align-items:center}.release-banner-content h2{color:#181d27;font-weight:500;font-size:32px;margin-bottom:16px}.release-banner-content p,.release-carousel-content [data-as=p]{color:#414651;font-size:18px;margin-bottom:24px}.release-banner-content a{background-color:#fff;box-shadow:0 1px 2px rgba(10,13,18,.06),0 2px 4px rgba(10,13,18,.05);padding:12px 24px;border-radius:99px;font-size:18px;font-weight:500;color:#131313}.release-banner-content a:hover{text-decoration:underline}.release-carousel{position:relative}.release-carousel-viewport{overflow:hidden}.release-carousel-content [data-as=p]{display:block}.release-carousel-content [data-as=p] strong{color:#181d27;font-weight:700}.release-carousel-content a{display:inline-block}.release-carousel-title-row{display:flex;align-items:center;gap:12px;margin-bottom:16px}.release-carousel-content .release-carousel-title-row h2{margin:0}.release-carousel-eyebrow{display:inline-block;flex-shrink:0;background-color:#f4f3ff;color:#6938ef;padding:4px 14px;border-radius:100px;font-size:13px;font-weight:600;letter-spacing:.02em;text-transform:uppercase}.release-carousel-content.slide-next{animation:release-carousel-slide-next .45s ease}.release-carousel-content.slide-prev{animation:release-carousel-slide-prev .45s ease}.release-carousel-image{width:100%;max-width:1200px;display:block;border:3px solid #d9d2fa;border-radius:16px;box-shadow:0 2px 2px -1px #0a0d120a,0 4px 6px -2px #0a0d1208,0 12px 16px -4px #0a0d1214;cursor:zoom-in}.release-carousel-lightbox{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:40px;background-color:rgba(16,24,40,.85)}.release-carousel-lightbox-image{max-width:100%;max-height:100%;display:block;border-radius:12px;box-shadow:0 12px 16px -4px #0a0d1214;cursor:default}.release-carousel-lightbox-close{top:24px;right:24px;border:1px solid rgba(255,255,255,.3);background-color:rgba(255,255,255,.1);color:#fff}.release-carousel-lightbox-close:hover{background-color:rgba(255,255,255,.2)}.release-carousel .carousel-arrow,.release-carousel-lightbox-close{position:absolute;display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;cursor:pointer;transition:background-color .15s ease}.release-carousel .carousel-arrow{top:50%;transform:translateY(-50%);border:1px solid #d9d2fa;background-color:#fff;color:#181d27;box-shadow:0 2px 2px -1px #0a0d120a,0 4px 6px -2px #0a0d1208,0 12px 16px -4px #0a0d1214}.release-carousel .carousel-arrow:hover{background-color:#f4f3ff}.release-carousel .carousel-arrow-prev{left:16px}.release-carousel .carousel-arrow-next{right:16px}.release-carousel .carousel-dots{display:flex;justify-content:center;gap:8px;margin-top:16px}.release-carousel .carousel-dot{width:8px;height:8px;border-radius:50%;border:0;background-color:#d9d2fa;padding:0;cursor:pointer;transition:background-color .15s ease,transform .15s ease}.release-carousel .carousel-dot.active{background-color:#6938ef;transform:scale(1.2)}@media (max-width:1024px){.release-banner-content{grid-template-columns:repeat(1,1fr)}.release-banner-content h2{font-size:28px}.release-carousel .carousel-arrow-prev{left:4px}.release-carousel .carousel-arrow-next{right:4px}}@media (max-width:768px){.release-banner{padding:40px 52px}.release-carousel .carousel-arrow{width:32px;height:32px}}@media (max-width:480px){.release-banner{padding:40px 20px}}"},{"filePath":"snippets/v2.1.x-SNAPSHOT/components/ReleaseCarousel/ReleaseCarousel.css","content":"@keyframes release-carousel-slide-next{0%{opacity:0;transform:translateX(60px)}to{opacity:1;transform:translateX(0)}}@keyframes release-carousel-slide-prev{0%{opacity:0;transform:translateX(-60px)}to{opacity:1;transform:translateX(0)}}.release-banner{max-width:1300px;margin:0 auto;background:linear-gradient(135deg,rgba(105,56,239,.12) 0,rgba(142,198,252,.35) 100%);padding:48px 100px;border-radius:24px}.release-banner-content{display:grid;grid-template-columns:repeat(2,1fr);gap:50px;align-items:center}.release-banner-content h2{color:#181d27;font-weight:500;font-size:32px;margin-bottom:16px}.release-banner-content p,.release-carousel-content [data-as=p]{color:#414651;font-size:18px;margin-bottom:24px}.release-banner-content a{background-color:#fff;box-shadow:0 1px 2px rgba(10,13,18,.06),0 2px 4px rgba(10,13,18,.05);padding:12px 24px;border-radius:99px;font-size:18px;font-weight:500;color:#131313}.release-banner-content a:hover{text-decoration:underline}.release-carousel{position:relative}.release-carousel-viewport{overflow:hidden}.release-carousel-content [data-as=p]{display:block}.release-carousel-content [data-as=p] strong{color:#181d27;font-weight:700}.release-carousel-content a{display:inline-block}.release-carousel-title-row{display:flex;align-items:center;gap:12px;margin-bottom:16px}.release-carousel-content .release-carousel-title-row h2{margin:0}.release-carousel-eyebrow{display:inline-block;flex-shrink:0;background-color:#f4f3ff;color:#6938ef;padding:4px 14px;border-radius:100px;font-size:13px;font-weight:600;letter-spacing:.02em;text-transform:uppercase}.release-carousel-content.slide-next{animation:release-carousel-slide-next .45s ease}.release-carousel-content.slide-prev{animation:release-carousel-slide-prev .45s ease}.release-carousel-image{width:100%;max-width:1200px;display:block;border:3px solid #d9d2fa;border-radius:16px;box-shadow:0 2px 2px -1px #0a0d120a,0 4px 6px -2px #0a0d1208,0 12px 16px -4px #0a0d1214;cursor:zoom-in}.release-carousel-lightbox{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:40px;background-color:rgba(16,24,40,.85)}.release-carousel-lightbox-image{max-width:100%;max-height:100%;display:block;border-radius:12px;box-shadow:0 12px 16px -4px #0a0d1214;cursor:default}.release-carousel-lightbox-close{top:24px;right:24px;border:1px solid rgba(255,255,255,.3);background-color:rgba(255,255,255,.1);color:#fff}.release-carousel-lightbox-close:hover{background-color:rgba(255,255,255,.2)}.release-carousel .carousel-arrow,.release-carousel-lightbox-close{position:absolute;display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;cursor:pointer;transition:background-color .15s ease}.release-carousel .carousel-arrow{top:50%;transform:translateY(-50%);border:1px solid #d9d2fa;background-color:#fff;color:#181d27;box-shadow:0 2px 2px -1px #0a0d120a,0 4px 6px -2px #0a0d1208,0 12px 16px -4px #0a0d1214}.release-carousel .carousel-arrow:hover{background-color:#f4f3ff}.release-carousel .carousel-arrow-prev{left:16px}.release-carousel .carousel-arrow-next{right:16px}.release-carousel .carousel-dots{display:flex;justify-content:center;gap:8px;margin-top:16px}.release-carousel .carousel-dot{width:8px;height:8px;border-radius:50%;border:0;background-color:#d9d2fa;padding:0;cursor:pointer;transition:background-color .15s ease,transform .15s ease}.release-carousel .carousel-dot.active{background-color:#6938ef;transform:scale(1.2)}@media (max-width:1024px){.release-banner-content{grid-template-columns:repeat(1,1fr)}.release-banner-content h2{font-size:28px}.release-carousel .carousel-arrow-prev{left:4px}.release-carousel .carousel-arrow-next{right:4px}}@media (max-width:768px){.release-banner{padding:40px 52px}.release-carousel .carousel-arrow{width:32px;height:32px}}@media (max-width:480px){.release-banner{padding:40px 20px}}"}],"page":{"pagePath":"v1.13.x/api-reference/sdk/python/entities/ml-model","slug":"/v1.13.x/api-reference/sdk/python/entities/ml-model","pageMetadata":{"title":"ML Model | OpenMetadata Machine Learning Model SDK","description":"Learn to manage ML models with OpenMetadata Python SDK. Complete guide with code examples, entity operations, and API integration for machine learning workflows.","sidebarTitle":"ML Model","href":"/v1.13.x/api-reference/sdk/python/entities/ml-model"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Learn to manage ML models with OpenMetadata Python SDK. Complete guide with code examples, entity operations, and API integration for machine learning workflows.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,em:`em`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Tip}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`1`,id:`ml-model`,children:`ML Model`}),`\n`,_jsxs(_components.p,{children:[`Let’s dive deeper into the ML Model (`,_jsx(_components.code,{children:`MlModel`}),`) Entity shape and usage with the Python SDK.`]}),`\n`,_jsx(Heading,{level:`2`,id:`introduction`,children:`Introduction`}),`\n`,_jsxs(_components.p,{children:[`When we are talking about Machine Learning tooling there are some projects that automatically come to our mind: `,_jsx(_components.a,{href:`https://mlflow.org/`,children:`Mlflow`}),`, `,_jsx(_components.a,{href:`https://www.tensorflow.org/tfx/`,children:`TFX`}),`, `,_jsx(_components.a,{href:`https://www.kubeflow.org/`,children:`Kubeflow`}),`, `,_jsx(_components.a,{href:`https://aws.amazon.com/sagemaker/`,children:`SageMaker`}),`…`]}),`\n`,_jsx(_components.p,{children:`The main goal of these solutions is to enable Data Scientists and Machine Learning practitioners to handle the models’ lifecycle. As a short summary (not taking into account all the great DevOps work and more specific features), this means:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Preparing `,_jsx(_components.strong,{children:`pipelines`}),` that extract the data from the sources \u0026 run the Feature Engineering.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Train`}),` multiple models with different inputs and hyperparameters in external computes.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Record`}),` all the experiments, their configurations and metrics.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Serve`}),` the models or store them externally.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`The main focus is then empowering the teams and organising their working approach (usually in short fast-paced cycles), treating all of this in `,_jsx(_components.strong,{children:`isolation`}),`. The `,_jsx(_components.strong,{children:`metadata`}),` captured by these tools is purely functional: model name, Python/conda environment used, hyperparameter configuration, the signature of the inputs, etc.`]}),`\n`,_jsx(_components.p,{children:`Long-story-short: These are great tools to build autonomous, powerful and scalable ML Platforms and/or MLOps processes.`}),`\n`,_jsx(Heading,{level:`2`,id:`openmetadata-\u0026-ml`,children:`OpenMetadata \u0026 ML`}),`\n`,_jsx(_components.p,{children:`What we are trying to build with OpenMetadata and ML Models is, by no means, a replacement of those tools or the information they provide. Data Science teams NEED structured experimentation and the metadata processing and discovery provided by the projects mentioned above.`}),`\n`,_jsxs(_components.p,{children:[`Instead, we want to look at ML Models from a different lens: `,_jsx(_components.strong,{children:`Where do ML Models fit within a Data Platform?`}),` While - let’s call them “lifecycle tools” - give the underlying view of the modelling process, we want to bring `,_jsx(_components.strong,{children:`context`}),` and `,_jsx(_components.strong,{children:`relationships`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`There are some common questions with lifecycle tools, such as `,_jsx(_components.em,{children:`Where (URL) is the MlModel hosted`}),`, but we are bringing in a product and platform management view:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Where can we find the dashboards showing the performance evolution of our PROD algorithms? -> `,_jsx(_components.strong,{children:`Trust`}),` \u0026 `,_jsx(_components.strong,{children:`transparency`})]}),`\n`,_jsxs(_components.li,{children:[`What tables/sources are being used? -> `,_jsx(_components.strong,{children:`Lineage`}),` and `,_jsx(_components.strong,{children:`traceability`})]}),`\n`,_jsxs(_components.li,{children:[`Are we using sensitive data? -> `,_jsx(_components.strong,{children:`Governance`})]}),`\n`]}),`\n`,_jsx(_components.p,{children:`This information, together with the rest of the features brought by OpenMetadata, lets us also manage topics such as schema changes in the sources or feature drifts, with the corresponding alerting systems.`}),`\n`,_jsxs(_components.p,{children:[`While we can already extract certain pieces of information automatically via our Connectors, for example `,_jsx(_components.a,{href:`/v1.13.x/connectors/ml-model/mlflow`,children:`Mlflow`}),`, there are attributes that we’ll need to fill in by ourselves. Thanks to the `,_jsx(_components.a,{href:`/v1.13.x/main-concepts/high-level-design`,children:`Solution Design`}),` of OpenMetadata and the `,_jsx(_components.a,{href:`/v1.13.x/api-reference/sdk/python`,children:`Python SDK`}),`, this is going to be a rather easy task that will unlock the full power of your `,_jsx(_components.strong,{children:`organization’s metadata`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`properties`,children:`Properties`}),`\n`,_jsxs(_components.p,{children:[`Now that we have a clearer view of what we are trying to achieve, let’s jump into a deeper view on the `,_jsx(_components.code,{children:`MlModel`}),` Entity `,_jsx(_components.a,{href:`https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-spec/src/main/resources/json/schema/entity/data/mlmodel.json`,children:`definition`}),`:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`The `,_jsx(_components.code,{children:`name`}),` and `,_jsx(_components.code,{children:`algorithm`}),` are the only required properties when `,_jsx(_components.a,{href:`https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-spec/src/main/resources/json/schema/api/data/createMlModel.json`,children:`creating`}),` an `,_jsx(_components.code,{children:`MlModel`}),`. We can just bring the top shell to the catalogue automatically and then choose which models we want to enrich.`]}),`\n`,_jsxs(_components.li,{children:[`The `,_jsx(_components.code,{children:`dashboard`}),` is a reference to a Dashboard Entity present in OpenMetadata (what we call an `,_jsx(_components.code,{children:`EntityReference`}),`). This should be a dashboard we have built that shows the evolution of our performance metrics. The `,_jsx(_components.strong,{children:`transparency`}),` on ML services is integral, and that is why we have added it to the `,_jsx(_components.code,{children:`MlModel`}),` properties.`]}),`\n`,_jsxs(_components.li,{children:[`A server with the URL on where to reach the model `,_jsx(_components.strong,{children:`endpoint`}),`, to `,_jsx(_components.code,{children:`POST`}),` input data or retrieve a prediction.`]}),`\n`,_jsxs(_components.li,{children:[`The mlStore specifies the `,_jsx(_components.strong,{children:`location`}),` containing the model. Here we support both passing a URI with the object, for example `,_jsx(_components.code,{children:`pkl`}),` location and/or a Docker image in its repository.`]}),`\n`,_jsxs(_components.li,{children:[`With `,_jsx(_components.code,{children:`mlHyperParameters`}),` we can add the `,_jsx(_components.code,{children:`name`}),`, `,_jsx(_components.code,{children:`value`}),` and `,_jsx(_components.code,{children:`description`}),` of the used hyperparameters.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`On top of this information, we can also have common metadata attributes, such as the Owner, tags, followers or `,_jsx(_components.strong,{children:`versioning`}),`.`]}),`\n`,_jsx(_components.p,{children:`So far so good, but we are missing interesting points:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`What are my model features?`}),`\n`,_jsx(_components.li,{children:`How do I link these features to their origin/sources?`}),`\n`,_jsx(_components.li,{children:`What do you mean by “versioning”?`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`ml-features`,children:`ML Features`}),`\n`,_jsxs(_components.p,{children:[`When talking about the `,_jsx(_components.code,{children:`MlModel`}),` features and how to inform them, we have made an interesting distinction:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`On the one hand, there are the results of Feature Engineering as the predictors used to train the model,`}),`\n`,_jsx(_components.li,{children:`On the other, the actual sources that the predictors are based on.`}),`\n`]}),`\n`,_jsx(_components.p,{children:`Being able to track both sides of a feature is a powerful way to know how our algorithm uses the Data Platform. This will help us show feature definitions as well as keep track of their origins.`}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`To fully understand what we are going to show now, it would be interesting for the reader to make sure to visit the section.`})}),`\n`,_jsx(_components.p,{children:`Let’s create an example of an MlFeature:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`MlFeature(`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` name`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"persona\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` dataType`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`FeatureType.categorical,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` featureAlgorithm`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"PCA\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Some properties that we can define when instantiating an `,_jsx(_components.code,{children:`MlFeature`}),` are the name, the `,_jsx(_components.code,{children:`dataType`}),` and the `,_jsx(_components.code,{children:`featureAlgorithm`}),`. Now, the question is: Are we being thorough in describing what is really going on? Are we going to be able to detect at any point in the future if this model is based on biased predictors (such as gender)?`]}),`\n`,_jsxs(_components.p,{children:[`Here we want to give more `,_jsx(_components.strong,{children:`depth`}),`. In order to do so, we can inform another property of the `,_jsx(_components.code,{children:`MlFeature`}),`, which are the `,_jsx(_components.code,{children:`MlFeatureSource`}),`s. The idea is that any feature can be based on an arbitrary number of real/physical sources, for example the columns of a Table, and informing this field will allow us to obtain this `,_jsx(_components.strong,{children:`relationship`}),`.`]}),`\n`,_jsx(_components.p,{children:`If we add this extra information, our feature will look like this:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`24`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`24`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`MlFeature(`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` name`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"persona\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` dataType`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`FeatureType.categorical,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` featureSources`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` FeatureSource(`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` name`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"age\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` dataType`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`FeatureSourceDataType.integer,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` dataSource`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`EntityReference(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` id`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`table1_entity.id, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`type`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"table\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ),`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ),`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` FeatureSource(`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` name`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"education\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` dataType`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`FeatureSourceDataType.string,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` dataSource`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`EntityReference(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` id`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`table2_entity.id, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`type`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"table\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ),`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ),`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` FeatureSource(`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` name`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"city\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`dataType`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`FeatureSourceDataType.string`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ),`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ],`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` featureAlgorithm`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"PCA\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Note how we added a list of `,_jsx(_components.code,{children:`FeatureSource`}),`, with values such as `,_jsx(_components.code,{children:`name`}),`, `,_jsx(_components.code,{children:`dataType`}),` (regarding the source type, not the categorical/numerical distinction of the `,_jsx(_components.code,{children:`MlFeature`}),`) and an `,_jsx(_components.code,{children:`EntityReference`}),` as the `,_jsx(_components.code,{children:`dataSource`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Thanks to this extra piece of information, we now can run the following method on our `,_jsx(_components.code,{children:`MlModel`}),` instance:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`16`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`16`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` metadata.ingestion.ometa.ometa_api `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` OpenMetadata`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` metadata.generated.schema.entity.services.connections.metadata.openMetadataConnection `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` OpenMetadataConnection,`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` metadata.generated.schema.security.client.openMetadataJWTClientConfig `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` OpenMetadataJWTClientConfig,`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`server_config `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` OpenMetadataConnection(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` hostPort`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"http://localhost:8585/api\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` authProvider`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"openmetadata\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` securityConfig`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`OpenMetadataJWTClientConfig(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`jwtToken`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"your-jwt-token\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`),`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`metadata `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` OpenMetadata(server_config)`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`metadata.add_mlmodel_lineage(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`model`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`my_mlmodel_entity)`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`This call will register the `,_jsx(_components.strong,{children:`Lineage`}),` information between our MlModel instance and the tables referenced in the dataSources. Then, we will be able to explore these relationships either via the API or the UI.`]}),`\n`,_jsx(_components.p,{children:`If we also have ingested the Lineage from the different Tables in our platform as well as how they relate to the data processing Pipelines, we can obtain a global end-to-end view on our ML Model and all its dependencies.`}),`\n`,_jsx(Heading,{level:`2`,id:`versioning`,children:`Versioning`}),`\n`,_jsx(_components.p,{children:`One of the key features of OpenMetadata is the ability to version our Entities. Being able to keep track of schema changes or any community updates and having an alerting system on top can be life-saving.`}),`\n`,_jsxs(_components.p,{children:[`In the `,_jsx(_components.a,{href:`/v1.13.x/main-concepts/high-level-design#example-1-updating-columns-of-a-table`,children:`Solution Design`}),`, we discussed the versioning example on how a Table reacts to adding or deleting columns in terms of its version. How do we manage versions for our MlModels?`]}),`\n`,_jsxs(_components.p,{children:[`Based on the experimentation nature of the ML field, it does not make sense to receive an alert when playing around with the model features. Therefore, we are using `,_jsx(_components.strong,{children:`major`}),` version changes when any of the following properties are updated:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Changes in the algorithm might mean uneven results when comparing predictions (or if handled poorly different outcomes)`}),`\n`,_jsx(_components.li,{children:`Changes to the server can enable/break integrations to the ML prediction systems.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`summary`,children:`Summary`}),`\n`,_jsx(_components.p,{children:`In this doc, we have seen the role that OpenMetadata serves from a Machine Learning perspective and its purpose in giving the vision of ML models inside the Data Platform.`}),`\n`,_jsx(_components.p,{children:`We have shown how to use the Python API to enrich the models’ metadata and add the lineage information with its related Entities and how the versioning will respond to changes.`}),`\n`,_jsxs(_components.p,{children:[`For further information on the properties, do not hesitate to review the `,_jsx(_components.a,{href:`https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-spec/src/main/resources/json/schema/entity/data/mlmodel.json`,children:`JSON Schema`}),` and for examples and usages with the Python API, you can take a look at our `,_jsx(_components.a,{href:`https://github.com/open-metadata/OpenMetadata/blob/main/ingestion/tests/integration/ometa/test_ometa_mlmodel_api.py`,children:`integration tests`}),`.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"ML Model | OpenMetadata Machine Learning Model SDK","description":"Learn to manage ML models with OpenMetadata Python SDK. Complete guide with code examples, entity operations, and API integration for machine learning workflows.","sidebarTitle":"ML Model","href":"/v1.13.x/api-reference/sdk/python/entities/ml-model"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"ML Model","slug":"ml-model","depth":1,"children":[]},{"title":"Introduction","slug":"introduction","depth":2,"children":[]},{"title":"OpenMetadata \u0026 ML","slug":"openmetadata-\u0026-ml","depth":2,"children":[]},{"title":"Properties","slug":"properties","depth":2,"children":[]},{"title":"ML Features","slug":"ml-features","depth":2,"children":[]},{"title":"Versioning","slug":"versioning","depth":2,"children":[]},{"title":"Summary","slug":"summary","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/openmetadata/193c43da98baa789/loader.js"],"subdomain":"openmetadata","siteName":"OpenMetadata Documentation","title":"ML Model | OpenMetadata Machine Learning Model SDK - OpenMetadata Documentation","navMaps":{"firstHrefInVersion":{"v2.0.x":{"href":"/v2.0.x/api-reference/sdk/python/entities/ml-model","matchLevel":1},"v1.13.x":{"href":"/v1.13.x/api-reference/sdk/python/entities/ml-model","matchLevel":0},"v2.1.x-SNAPSHOT":{"href":"/v2.1.x-SNAPSHOT/api-reference/sdk/python/entities/ml-model","matchLevel":1}},"firstHrefInLanguage":{}},"lastModified":"2026-10-15T11:11:04.681Z","originalFileLocation":"v1.13.x/api-reference/sdk/python/entities/ml-model.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"light\";if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Learn to manage ML models with OpenMetadata Python SDK. Complete guide with code examples, entity operations, and API integration for machine learning workflows.\">\u003cmeta data-mint-head name=\"application-name\" content=\"OpenMetadata Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/openmetadata/6KJlWty2MOEAr7r6/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/openmetadata/6KJlWty2MOEAr7r6/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/openmetadata/6KJlWty2MOEAr7r6/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/openmetadata/6KJlWty2MOEAr7r6/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/openmetadata/6KJlWty2MOEAr7r6/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/openmetadata/6KJlWty2MOEAr7r6/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/openmetadata/6KJlWty2MOEAr7r6/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/openmetadata/6KJlWty2MOEAr7r6/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/openmetadata/6KJlWty2MOEAr7r6/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"ML Model | OpenMetadata Machine Learning Model SDK - OpenMetadata Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Learn to manage ML models with OpenMetadata Python SDK. Complete guide with code examples, entity operations, and API integration for machine learning workflows.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"OpenMetadata Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.open-metadata.org/v1.13.x/api-reference/sdk/python/entities/ml-model\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://openmetadata.mintlify.app/_mintlify/api/og/v2?division=Entities\u0026amp;title=ML+Model+%7C+OpenMetadata+Machine+Learning+Model+SDK\u0026amp;description=Learn+to+manage+ML+models+with+OpenMetadata+Python+SDK.+Complete+guide+with+code+examples%2C+entity+operations%2C+and+API+integration+for+machine+learning+workflows\u0026amp;theme=b72ba3b6733cb95c984de390\u0026amp;signature=1b8cb31dc9bb621913497d32de35d27eadc05a0d4bd578d13480889d2e79a33b\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"ML Model | OpenMetadata Machine Learning Model SDK - OpenMetadata Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Learn to manage ML models with OpenMetadata Python SDK. Complete guide with code examples, entity operations, and API integration for machine learning workflows.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://openmetadata.mintlify.app/_mintlify/api/og/v2?division=Entities\u0026amp;title=ML+Model+%7C+OpenMetadata+Machine+Learning+Model+SDK\u0026amp;description=Learn+to+manage+ML+models+with+OpenMetadata+Python+SDK.+Complete+guide+with+code+examples%2C+entity+operations%2C+and+API+integration+for+machine+learning+workflows\u0026amp;theme=b72ba3b6733cb95c984de390\u0026amp;signature=1b8cb31dc9bb621913497d32de35d27eadc05a0d4bd578d13480889d2e79a33b\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/openmetadata/6KJlWty2MOEAr7r6/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"OpenMetadata Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#6938EF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.open-metadata.org/v1.13.x/api-reference/sdk/python/entities/ml-model\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/v1.13.x/api-reference/sdk/python/entities/ml-model.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.open-metadata.org/#organization\",\"name\":\"OpenMetadata Documentation\",\"url\":\"https://docs.open-metadata.org\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/openmetadata/Z_Ib-0g05fLykSep/public/images/icons/omd.svg?fit=max\u0026auto=format\u0026n=Z_Ib-0g05fLykSep\u0026q=85\u0026s=8eb40986afc777e29ae395288a3983e8\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.open-metadata.org#website\",\"name\":\"OpenMetadata Documentation\",\"url\":\"https://docs.open-metadata.org\",\"publisher\":{\"@id\":\"https://docs.open-metadata.org/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.open-metadata.org/v1.13.x/api-reference/sdk/python/entities/ml-model#webpage\",\"url\":\"https://docs.open-metadata.org/v1.13.x/api-reference/sdk/python/entities/ml-model\",\"name\":\"ML Model | OpenMetadata Machine Learning Model SDK\",\"description\":\"Learn to manage ML models with OpenMetadata Python SDK. Complete guide with code examples, entity operations, and API integration for machine learning workflows.\",\"dateModified\":\"2026-10-15T11:11:04.681Z\",\"isPartOf\":{\"@id\":\"https://docs.open-metadata.org#website\"},\"breadcrumb\":{\"@id\":\"https://docs.open-metadata.org/v1.13.x/api-reference/sdk/python/entities/ml-model#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.open-metadata.org/v1.13.x/api-reference/sdk/python/entities/ml-model#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"SDK\",\"item\":\"https://docs.open-metadata.org/v1.13.x/api-reference/sdk\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Python\",\"item\":\"https://docs.open-metadata.org/v1.13.x/api-reference/sdk/python\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Entities\",\"item\":\"https://docs.open-metadata.org/v1.13.x/api-reference/sdk/python/entities\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"ML Model | OpenMetadata Machine Learning Model SDK\",\"item\":\"https://docs.open-metadata.org/v1.13.x/api-reference/sdk/python/entities/ml-model\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.open-metadata.org/v1.13.x/api-reference/sdk/python/entities/ml-model#article\",\"headline\":\"ML Model | OpenMetadata Machine Learning Model SDK\",\"name\":\"ML Model | OpenMetadata Machine Learning Model SDK\",\"description\":\"Learn to manage ML models with OpenMetadata Python SDK. Complete guide with code examples, entity operations, and API integration for machine learning workflows.\",\"url\":\"https://docs.open-metadata.org/v1.13.x/api-reference/sdk/python/entities/ml-model\",\"mainEntityOfPage\":{\"@id\":\"https://docs.open-metadata.org/v1.13.x/api-reference/sdk/python/entities/ml-model#webpage\"},\"dateModified\":\"2026-10-15T11:11:04.681Z\",\"publisher\":{\"@id\":\"https://docs.open-metadata.org/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.open-metadata.org#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"OpenMetadata Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"OpenMetadata Documentation","nav":{"global":null,"versions":[{"version":"v2.0.x","pages":[{"title":"v2.0.x","href":"/v2.0.x/api-reference/sdk/python/entities/ml-model"}]},{"version":"v1.13.x","tabs":[{"tab":"Home","pages":[{"title":"Home","href":"/v1.13.x"}]},{"tab":"Quickstart","pages":[{"title":"Quickstart","href":"/v1.13.x/quick-start"}]},{"tab":"Deployment","pages":[{"title":"Deployment","href":"/v1.13.x/deployment"}]},{"tab":"Connectors","pages":[{"title":"Connectors","href":"/v1.13.x/connectors"}]},{"tab":"How-to Guides","pages":[{"title":"How-to Guides","href":"/v1.13.x/how-to-guides"}]},{"tab":"MCP","pages":[{"title":"MCP","href":"/v1.13.x/how-to-guides/mcp"}]},{"tab":"Admin Guide","pages":[{"title":"Admin Guide","href":"/v1.13.x/how-to-guides/admin-guide"}]},{"tab":"Guide for Data Users","pages":[{"title":"Guide for Data Users","href":"/v1.13.x/how-to-guides/guide-for-data-users"}]},{"tab":"Data Discovery","pages":[{"title":"Data Discovery","href":"/v1.13.x/how-to-guides/data-discovery"}]},{"tab":"Data Contracts","pages":[{"title":"Data Contracts","href":"/v1.13.x/how-to-guides/data-contracts"}]},{"tab":"Data Collaboration","pages":[{"title":"Data Collaboration","href":"/v1.13.x/how-to-guides/data-collaboration"}]},{"tab":"Data Quality and Observability","pages":[{"title":"Data Quality and Observability","href":"/v1.13.x/how-to-guides/data-quality-observability"}]},{"tab":"Data Lineage","pages":[{"title":"Data Lineage","href":"/v1.13.x/how-to-guides/data-lineage"}]},{"tab":"Data Insights","pages":[{"title":"Data Insights","href":"/v1.13.x/how-to-guides/data-insights"}]},{"tab":"Data Marketplace","pages":[{"title":"Data Marketplace","href":"/v1.13.x/how-to-guides/data-marketplace"}]},{"tab":"Data Governance","pages":[{"title":"Data Governance","href":"/v1.13.x/how-to-guides/data-governance"}]},{"tab":"Releases","pages":[{"title":"Releases","href":"/v1.13.x/releases"}]},{"tab":"Developers","pages":[{"title":"Developers","href":"/v1.13.x/developers"}]},{"tab":"SDK \u0026 APIs","groups":[{"group":"API Reference","pages":[{"title":"OpenMetadata SDKs \u0026 APIs","sidebarTitle":"Introduction","href":"/v1.13.x/api-reference"},{"title":"Getting Started","sidebarTitle":"Getting Started","href":"/v1.13.x/api-reference/getting-started"},{"title":"Authentication","sidebarTitle":"Authentication","href":"/v1.13.x/api-reference/authentication"},{"title":"Errors","sidebarTitle":"Errors","mode":"wide","href":"/v1.13.x/api-reference/errors"},{"title":"Pagination","sidebarTitle":"Pagination","mode":"wide","href":"/v1.13.x/api-reference/pagination"}]},{"group":"Data Assets","pages":[{"title":"Data Assets","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/data-assets"},{"title":"Databases","sidebarTitle":"Databases","href":"/v1.13.x/api-reference/data-assets/databases-overview"},{"group":"Api Collections","pages":[{"title":"API Collections","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/data-assets/api-collections"},{"title":"Create an API Collection","sidebarTitle":"Create an API Collection","api":"POST /v1/apiCollections","href":"/v1.13.x/api-reference/data-assets/api-collections/create"},{"title":"Delete an API Collection","sidebarTitle":"Delete an API Collection","api":"DELETE /v1/apiCollections/{id}","href":"/v1.13.x/api-reference/data-assets/api-collections/delete"},{"title":"List API Collections","sidebarTitle":"List API Collections","api":"GET /v1/apiCollections","href":"/v1.13.x/api-reference/data-assets/api-collections/list"},{"title":"Retrieve an API Collection","sidebarTitle":"Retrieve an API Collection","api":"GET /v1/apiCollections/{id}","href":"/v1.13.x/api-reference/data-assets/api-collections/retrieve"},{"title":"Update an API Collection","sidebarTitle":"Update an API Collection","api":"PUT /v1/apiCollections","href":"/v1.13.x/api-reference/data-assets/api-collections/update"},{"title":"API Collection Versions","sidebarTitle":"API Collection Versions","api":"GET /v1/apiCollections/{id}/versions","href":"/v1.13.x/api-reference/data-assets/api-collections/versions"}]},{"group":"Api Endpoints","pages":[{"title":"API Endpoints","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/data-assets/api-endpoints"},{"title":"Create an API Endpoint","sidebarTitle":"Create an API Endpoint","api":"POST /v1/apiEndpoints","href":"/v1.13.x/api-reference/data-assets/api-endpoints/create"},{"title":"Delete an API Endpoint","sidebarTitle":"Delete an API Endpoint","api":"DELETE /v1/apiEndpoints/{id}","href":"/v1.13.x/api-reference/data-assets/api-endpoints/delete"},{"title":"List API Endpoints","sidebarTitle":"List API Endpoints","api":"GET /v1/apiEndpoints","href":"/v1.13.x/api-reference/data-assets/api-endpoints/list"},{"title":"Retrieve an API Endpoint","sidebarTitle":"Retrieve an API Endpoint","api":"GET /v1/apiEndpoints/{id}","href":"/v1.13.x/api-reference/data-assets/api-endpoints/retrieve"},{"title":"Update an API Endpoint","sidebarTitle":"Update an API Endpoint","api":"PUT /v1/apiEndpoints","href":"/v1.13.x/api-reference/data-assets/api-endpoints/update"},{"title":"API Endpoint Versions","sidebarTitle":"API Endpoint Versions","api":"GET /v1/apiEndpoints/{id}/versions","href":"/v1.13.x/api-reference/data-assets/api-endpoints/versions"}]},{"group":"Charts","pages":[{"title":"Charts","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/data-assets/charts"},{"title":"Create a Chart","sidebarTitle":"Create a Chart","api":"POST /v1/charts","href":"/v1.13.x/api-reference/data-assets/charts/create"},{"title":"Delete a Chart","sidebarTitle":"Delete a Chart","api":"DELETE /v1/charts/{id}","href":"/v1.13.x/api-reference/data-assets/charts/delete"},{"title":"List Charts","sidebarTitle":"List Charts","api":"GET /v1/charts","href":"/v1.13.x/api-reference/data-assets/charts/list"},{"title":"Retrieve a Chart","sidebarTitle":"Retrieve a Chart","api":"GET /v1/charts/{id}","href":"/v1.13.x/api-reference/data-assets/charts/retrieve"},{"title":"Update a Chart","sidebarTitle":"Update a Chart","api":"PUT /v1/charts","href":"/v1.13.x/api-reference/data-assets/charts/update"},{"title":"Chart Versions","sidebarTitle":"Chart Versions","api":"GET /v1/charts/{id}/versions","href":"/v1.13.x/api-reference/data-assets/charts/versions"}]},{"group":"Containers","pages":[{"title":"Containers","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/data-assets/containers"},{"title":"Create a Container","sidebarTitle":"Create a Container","api":"POST /v1/containers","href":"/v1.13.x/api-reference/data-assets/containers/create"},{"title":"Delete a Container","sidebarTitle":"Delete a Container","api":"DELETE /v1/containers/{id}","href":"/v1.13.x/api-reference/data-assets/containers/delete"},{"title":"List Containers","sidebarTitle":"List Containers","api":"GET /v1/containers","href":"/v1.13.x/api-reference/data-assets/containers/list"},{"title":"Retrieve a Container","sidebarTitle":"Retrieve a Container","api":"GET /v1/containers/{id}","href":"/v1.13.x/api-reference/data-assets/containers/retrieve"},{"title":"Update a Container","sidebarTitle":"Update a Container","api":"PUT /v1/containers","href":"/v1.13.x/api-reference/data-assets/containers/update"},{"title":"Container Versions","sidebarTitle":"Container Versions","api":"GET /v1/containers/{id}/versions","href":"/v1.13.x/api-reference/data-assets/containers/versions"}]},{"group":"Dashboard Services","pages":[{"title":"Dashboard Services","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/data-assets/dashboard-services"},{"title":"Create a Dashboard Service","sidebarTitle":"Create a Dashboard Service","api":"POST /v1/services/dashboardServices","href":"/v1.13.x/api-reference/data-assets/dashboard-services/create"},{"title":"Delete a Dashboard Service","sidebarTitle":"Delete a Dashboard Service","api":"DELETE /v1/services/dashboardServices/{id}","href":"/v1.13.x/api-reference/data-assets/dashboard-services/delete"},{"title":"Import \u0026 Export Dashboard Services","sidebarTitle":"Import \u0026 Export Dashboard Services","api":"GET /v1/services/dashboardServices/name/{fqn}/export","href":"/v1.13.x/api-reference/data-assets/dashboard-services/import-export"},{"title":"List Dashboard Services","sidebarTitle":"List Dashboard Services","api":"GET /v1/services/dashboardServices","href":"/v1.13.x/api-reference/data-assets/dashboard-services/list"},{"title":"Retrieve a Dashboard Service","sidebarTitle":"Retrieve a Dashboard Service","api":"GET /v1/services/dashboardServices/{id}","href":"/v1.13.x/api-reference/data-assets/dashboard-services/retrieve"},{"title":"Update a Dashboard Service","sidebarTitle":"Update a Dashboard Service","api":"PUT /v1/services/dashboardServices","href":"/v1.13.x/api-reference/data-assets/dashboard-services/update"},{"title":"Dashboard Service Versions","sidebarTitle":"Dashboard Service Versions","api":"GET /v1/services/dashboardServices/{id}/versions","href":"/v1.13.x/api-reference/data-assets/dashboard-services/versions"}]},{"group":"Dashboards","pages":[{"title":"Dashboards","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/data-assets/dashboards"},{"title":"Create a Dashboard","sidebarTitle":"Create a Dashboard","api":"POST /v1/dashboards","href":"/v1.13.x/api-reference/data-assets/dashboards/create"},{"title":"Delete a Dashboard","sidebarTitle":"Delete a Dashboard","api":"DELETE /v1/dashboards/{id}","href":"/v1.13.x/api-reference/data-assets/dashboards/delete"},{"title":"Followers \u0026 Votes","sidebarTitle":"Followers \u0026 Votes","api":"PUT /v1/dashboards/{id}/followers","href":"/v1.13.x/api-reference/data-assets/dashboards/followers-votes"},{"title":"List Dashboards","sidebarTitle":"List Dashboards","api":"GET /v1/dashboards","href":"/v1.13.x/api-reference/data-assets/dashboards/list"},{"title":"Retrieve a Dashboard","sidebarTitle":"Retrieve a Dashboard","api":"GET /v1/dashboards/{id}","href":"/v1.13.x/api-reference/data-assets/dashboards/retrieve"},{"title":"Update a Dashboard","sidebarTitle":"Update a Dashboard","api":"PUT /v1/dashboards","href":"/v1.13.x/api-reference/data-assets/dashboards/update"},{"title":"Dashboard Versions","sidebarTitle":"Dashboard Versions","api":"GET /v1/dashboards/{id}/versions","href":"/v1.13.x/api-reference/data-assets/dashboards/versions"}]},{"group":"Database Schemas","pages":[{"title":"Database Schemas","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/data-assets/database-schemas"},{"title":"Advanced Database Schema Operations","sidebarTitle":"Advanced Database Schema Operations","api":"PUT /v1/databaseSchemas/{id}/followers","href":"/v1.13.x/api-reference/data-assets/database-schemas/advanced"},{"title":"Create a Database Schema","sidebarTitle":"Create a Database Schema","api":"POST /v1/databaseSchemas","href":"/v1.13.x/api-reference/data-assets/database-schemas/create"},{"title":"Delete a Database Schema","sidebarTitle":"Delete a Database Schema","api":"DELETE /v1/databaseSchemas/{id}","href":"/v1.13.x/api-reference/data-assets/database-schemas/delete"},{"title":"Import \u0026 Export Database Schemas","sidebarTitle":"Import \u0026 Export Database Schemas","api":"GET /v1/databaseSchemas/name/{fqn}/export","href":"/v1.13.x/api-reference/data-assets/database-schemas/import-export"},{"title":"List Database Schemas","sidebarTitle":"List Database Schemas","api":"GET /v1/databaseSchemas","href":"/v1.13.x/api-reference/data-assets/database-schemas/list"},{"title":"Retrieve a Database Schema","sidebarTitle":"Retrieve a Database Schema","api":"GET /v1/databaseSchemas/{id}","href":"/v1.13.x/api-reference/data-assets/database-schemas/retrieve"},{"title":"Update a Database Schema","sidebarTitle":"Update a Database Schema","api":"PUT /v1/databaseSchemas","href":"/v1.13.x/api-reference/data-assets/database-schemas/update"},{"title":"Database Schema Versions","sidebarTitle":"Database Schema Versions","api":"GET /v1/databaseSchemas/{id}/versions","href":"/v1.13.x/api-reference/data-assets/database-schemas/versions"}]},{"group":"Database Services","pages":[{"title":"Database Services","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/data-assets/database-services"},{"title":"Create a Database Service","sidebarTitle":"Create a Database Service","api":"POST /v1/services/databaseServices","href":"/v1.13.x/api-reference/data-assets/database-services/create"},{"title":"Delete a Database Service","sidebarTitle":"Delete a Database Service","api":"DELETE /v1/services/databaseServices/{id}","href":"/v1.13.x/api-reference/data-assets/database-services/delete"},{"title":"Import \u0026 Export Database Services","sidebarTitle":"Import \u0026 Export Database Services","api":"GET /v1/services/databaseServices/name/{fqn}/export","href":"/v1.13.x/api-reference/data-assets/database-services/import-export"},{"title":"List Database Services","sidebarTitle":"List Database Services","api":"GET /v1/services/databaseServices","href":"/v1.13.x/api-reference/data-assets/database-services/list"},{"title":"Retrieve a Database Service","sidebarTitle":"Retrieve a Database Service","api":"GET /v1/services/databaseServices/{id}","href":"/v1.13.x/api-reference/data-assets/database-services/retrieve"},{"title":"Update a Database Service","sidebarTitle":"Update a Database Service","api":"PUT /v1/services/databaseServices","href":"/v1.13.x/api-reference/data-assets/database-services/update"},{"title":"Database Service Versions","sidebarTitle":"Database Service Versions","api":"GET /v1/services/databaseServices/{id}/versions","href":"/v1.13.x/api-reference/data-assets/database-services/versions"}]},{"group":"Databases","pages":[{"title":"Databases","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/data-assets/databases"},{"title":"Advanced Database Operations","sidebarTitle":"Advanced Database Operations","api":"PUT /v1/databases/{id}/followers","href":"/v1.13.x/api-reference/data-assets/databases/advanced"},{"title":"Create a Database","sidebarTitle":"Create a Database","api":"POST /v1/databases","href":"/v1.13.x/api-reference/data-assets/databases/create"},{"title":"Delete a Database","sidebarTitle":"Delete a Database","api":"DELETE /v1/databases/{id}","href":"/v1.13.x/api-reference/data-assets/databases/delete"},{"title":"Import \u0026 Export Databases","sidebarTitle":"Import \u0026 Export Databases","api":"GET /v1/databases/name/{fqn}/export","href":"/v1.13.x/api-reference/data-assets/databases/import-export"},{"title":"List Databases","sidebarTitle":"List Databases","api":"GET /v1/databases","href":"/v1.13.x/api-reference/data-assets/databases/list"},{"title":"Retrieve a Database","sidebarTitle":"Retrieve a Database","api":"GET /v1/databases/{id}","href":"/v1.13.x/api-reference/data-assets/databases/retrieve"},{"title":"Update a Database","sidebarTitle":"Update a Database","api":"PUT /v1/databases","href":"/v1.13.x/api-reference/data-assets/databases/update"},{"title":"Database Versions","sidebarTitle":"Database Versions","api":"GET /v1/databases/{id}/versions","href":"/v1.13.x/api-reference/data-assets/databases/versions"}]},{"group":"Messaging Services","pages":[{"title":"Messaging Services","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/data-assets/messaging-services"},{"title":"Create a Messaging Service","sidebarTitle":"Create a Messaging Service","api":"POST /v1/services/messagingServices","href":"/v1.13.x/api-reference/data-assets/messaging-services/create"},{"title":"Delete a Messaging Service","sidebarTitle":"Delete a Messaging Service","api":"DELETE /v1/services/messagingServices/{id}","href":"/v1.13.x/api-reference/data-assets/messaging-services/delete"},{"title":"Import \u0026 Export Messaging Services","sidebarTitle":"Import \u0026 Export Messaging Services","api":"GET /v1/services/messagingServices/name/{fqn}/export","href":"/v1.13.x/api-reference/data-assets/messaging-services/import-export"},{"title":"List Messaging Services","sidebarTitle":"List Messaging Services","api":"GET /v1/services/messagingServices","href":"/v1.13.x/api-reference/data-assets/messaging-services/list"},{"title":"Retrieve a Messaging Service","sidebarTitle":"Retrieve a Messaging Service","api":"GET /v1/services/messagingServices/{id}","href":"/v1.13.x/api-reference/data-assets/messaging-services/retrieve"},{"title":"Update a Messaging Service","sidebarTitle":"Update a Messaging Service","api":"PUT /v1/services/messagingServices","href":"/v1.13.x/api-reference/data-assets/messaging-services/update"},{"title":"Messaging Service Versions","sidebarTitle":"Messaging Service Versions","api":"GET /v1/services/messagingServices/{id}/versions","href":"/v1.13.x/api-reference/data-assets/messaging-services/versions"}]},{"group":"Mlmodel Services","pages":[{"title":"ML Model Services","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/data-assets/mlmodel-services"},{"title":"Create an ML Model Service","sidebarTitle":"Create an ML Model Service","api":"POST /v1/services/mlmodelServices","href":"/v1.13.x/api-reference/data-assets/mlmodel-services/create"},{"title":"Delete an ML Model Service","sidebarTitle":"Delete an ML Model Service","api":"DELETE /v1/services/mlmodelServices/{id}","href":"/v1.13.x/api-reference/data-assets/mlmodel-services/delete"},{"title":"List ML Model Services","sidebarTitle":"List ML Model Services","api":"GET /v1/services/mlmodelServices","href":"/v1.13.x/api-reference/data-assets/mlmodel-services/list"},{"title":"Retrieve an ML Model Service","sidebarTitle":"Retrieve an ML Model Service","api":"GET /v1/services/mlmodelServices/{id}","href":"/v1.13.x/api-reference/data-assets/mlmodel-services/retrieve"},{"title":"Update an ML Model Service","sidebarTitle":"Update an ML Model Service","api":"PUT /v1/services/mlmodelServices","href":"/v1.13.x/api-reference/data-assets/mlmodel-services/update"},{"title":"ML Model Service Versions","sidebarTitle":"ML Model Service Versions","api":"GET /v1/services/mlmodelServices/{id}/versions","href":"/v1.13.x/api-reference/data-assets/mlmodel-services/versions"}]},{"group":"Mlmodels","pages":[{"title":"ML Models","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/data-assets/mlmodels"},{"title":"Create an ML Model","sidebarTitle":"Create an ML Model","api":"POST /v1/mlmodels","href":"/v1.13.x/api-reference/data-assets/mlmodels/create"},{"title":"Delete an ML Model","sidebarTitle":"Delete an ML Model","api":"DELETE /v1/mlmodels/{id}","href":"/v1.13.x/api-reference/data-assets/mlmodels/delete"},{"title":"Followers \u0026 Votes","sidebarTitle":"Followers \u0026 Votes","api":"PUT /v1/mlmodels/{id}/followers","href":"/v1.13.x/api-reference/data-assets/mlmodels/followers-votes"},{"title":"List ML Models","sidebarTitle":"List ML Models","api":"GET /v1/mlmodels","href":"/v1.13.x/api-reference/data-assets/mlmodels/list"},{"title":"Retrieve an ML Model","sidebarTitle":"Retrieve an ML Model","api":"GET /v1/mlmodels/{id}","href":"/v1.13.x/api-reference/data-assets/mlmodels/retrieve"},{"title":"Update an ML Model","sidebarTitle":"Update an ML Model","api":"PUT /v1/mlmodels","href":"/v1.13.x/api-reference/data-assets/mlmodels/update"},{"title":"ML Model Versions","sidebarTitle":"ML Model Versions","api":"GET /v1/mlmodels/{id}/versions","href":"/v1.13.x/api-reference/data-assets/mlmodels/versions"}]},{"group":"Pipeline Services","pages":[{"title":"Pipeline Services","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/data-assets/pipeline-services"},{"title":"Create a Pipeline Service","sidebarTitle":"Create a Pipeline Service","api":"POST /v1/services/pipelineServices","href":"/v1.13.x/api-reference/data-assets/pipeline-services/create"},{"title":"Delete a Pipeline Service","sidebarTitle":"Delete a Pipeline Service","api":"DELETE /v1/services/pipelineServices/{id}","href":"/v1.13.x/api-reference/data-assets/pipeline-services/delete"},{"title":"Import \u0026 Export Pipeline Services","sidebarTitle":"Import \u0026 Export Pipeline Services","api":"GET /v1/services/pipelineServices/name/{fqn}/export","href":"/v1.13.x/api-reference/data-assets/pipeline-services/import-export"},{"title":"List Pipeline Services","sidebarTitle":"List Pipeline Services","api":"GET /v1/services/pipelineServices","href":"/v1.13.x/api-reference/data-assets/pipeline-services/list"},{"title":"Retrieve a Pipeline Service","sidebarTitle":"Retrieve a Pipeline Service","api":"GET /v1/services/pipelineServices/{id}","href":"/v1.13.x/api-reference/data-assets/pipeline-services/retrieve"},{"title":"Update a Pipeline Service","sidebarTitle":"Update a Pipeline Service","api":"PUT /v1/services/pipelineServices","href":"/v1.13.x/api-reference/data-assets/pipeline-services/update"},{"title":"Pipeline Service Versions","sidebarTitle":"Pipeline Service Versions","api":"GET /v1/services/pipelineServices/{id}/versions","href":"/v1.13.x/api-reference/data-assets/pipeline-services/versions"}]},{"group":"Pipelines","pages":[{"title":"Pipelines","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/data-assets/pipelines"},{"title":"Create a Pipeline","sidebarTitle":"Create a Pipeline","api":"POST /v1/pipelines","href":"/v1.13.x/api-reference/data-assets/pipelines/create"},{"title":"Delete a Pipeline","sidebarTitle":"Delete a Pipeline","api":"DELETE /v1/pipelines/{id}","href":"/v1.13.x/api-reference/data-assets/pipelines/delete"},{"title":"Followers \u0026 Votes","sidebarTitle":"Followers \u0026 Votes","api":"PUT /v1/pipelines/{id}/followers","href":"/v1.13.x/api-reference/data-assets/pipelines/followers-votes"},{"title":"List Pipelines","sidebarTitle":"List Pipelines","api":"GET /v1/pipelines","href":"/v1.13.x/api-reference/data-assets/pipelines/list"},{"title":"Retrieve a Pipeline","sidebarTitle":"Retrieve a Pipeline","api":"GET /v1/pipelines/{id}","href":"/v1.13.x/api-reference/data-assets/pipelines/retrieve"},{"title":"Update a Pipeline","sidebarTitle":"Update a Pipeline","api":"PUT /v1/pipelines","href":"/v1.13.x/api-reference/data-assets/pipelines/update"},{"title":"Pipeline Versions","sidebarTitle":"Pipeline Versions","api":"GET /v1/pipelines/{id}/versions","href":"/v1.13.x/api-reference/data-assets/pipelines/versions"}]},{"group":"Search Indexes","pages":[{"title":"Search Indexes","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/data-assets/search-indexes"},{"title":"Create a Search Index","sidebarTitle":"Create a Search Index","api":"POST /v1/searchIndexes","href":"/v1.13.x/api-reference/data-assets/search-indexes/create"},{"title":"Delete a Search Index","sidebarTitle":"Delete a Search Index","api":"DELETE /v1/searchIndexes/{id}","href":"/v1.13.x/api-reference/data-assets/search-indexes/delete"},{"title":"Followers \u0026 Votes","sidebarTitle":"Followers \u0026 Votes","api":"PUT /v1/searchIndexes/{id}/followers","href":"/v1.13.x/api-reference/data-assets/search-indexes/followers-votes"},{"title":"List Search Indexes","sidebarTitle":"List Search Indexes","api":"GET /v1/searchIndexes","href":"/v1.13.x/api-reference/data-assets/search-indexes/list"},{"title":"Retrieve a Search Index","sidebarTitle":"Retrieve a Search Index","api":"GET /v1/searchIndexes/{id}","href":"/v1.13.x/api-reference/data-assets/search-indexes/retrieve"},{"title":"Update a Search Index","sidebarTitle":"Update a Search Index","api":"PUT /v1/searchIndexes","href":"/v1.13.x/api-reference/data-assets/search-indexes/update"},{"title":"Search Index Versions","sidebarTitle":"Search Index Versions","api":"GET /v1/searchIndexes/{id}/versions","href":"/v1.13.x/api-reference/data-assets/search-indexes/versions"}]},{"group":"Storage Services","pages":[{"title":"Storage Services","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/data-assets/storage-services"},{"title":"Create a Storage Service","sidebarTitle":"Create a Storage Service","api":"POST /v1/services/storageServices","href":"/v1.13.x/api-reference/data-assets/storage-services/create"},{"title":"Delete a Storage Service","sidebarTitle":"Delete a Storage Service","api":"DELETE /v1/services/storageServices/{id}","href":"/v1.13.x/api-reference/data-assets/storage-services/delete"},{"title":"List Storage Services","sidebarTitle":"List Storage Services","api":"GET /v1/services/storageServices","href":"/v1.13.x/api-reference/data-assets/storage-services/list"},{"title":"Retrieve a Storage Service","sidebarTitle":"Retrieve a Storage Service","api":"GET /v1/services/storageServices/{id}","href":"/v1.13.x/api-reference/data-assets/storage-services/retrieve"},{"title":"Update a Storage Service","sidebarTitle":"Update a Storage Service","api":"PUT /v1/services/storageServices","href":"/v1.13.x/api-reference/data-assets/storage-services/update"},{"title":"Storage Service Versions","sidebarTitle":"Storage Service Versions","api":"GET /v1/services/storageServices/{id}/versions","href":"/v1.13.x/api-reference/data-assets/storage-services/versions"}]},{"group":"Stored Procedures","pages":[{"title":"Stored Procedures","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/data-assets/stored-procedures"},{"title":"Create a Stored Procedure","sidebarTitle":"Create a Stored Procedure","api":"POST /v1/storedProcedures","href":"/v1.13.x/api-reference/data-assets/stored-procedures/create"},{"title":"Delete a Stored Procedure","sidebarTitle":"Delete a Stored Procedure","api":"DELETE /v1/storedProcedures/{id}","href":"/v1.13.x/api-reference/data-assets/stored-procedures/delete"},{"title":"Followers \u0026 Votes","sidebarTitle":"Followers \u0026 Votes","api":"PUT /v1/storedProcedures/{id}/followers","href":"/v1.13.x/api-reference/data-assets/stored-procedures/followers-votes"},{"title":"List Stored Procedures","sidebarTitle":"List Stored Procedures","api":"GET /v1/storedProcedures","href":"/v1.13.x/api-reference/data-assets/stored-procedures/list"},{"title":"Retrieve a Stored Procedure","sidebarTitle":"Retrieve a Stored Procedure","api":"GET /v1/storedProcedures/{id}","href":"/v1.13.x/api-reference/data-assets/stored-procedures/retrieve"},{"title":"Update a Stored Procedure","sidebarTitle":"Update a Stored Procedure","api":"PUT /v1/storedProcedures","href":"/v1.13.x/api-reference/data-assets/stored-procedures/update"},{"title":"Stored Procedure Versions","sidebarTitle":"Stored Procedure Versions","api":"GET /v1/storedProcedures/{id}/versions","href":"/v1.13.x/api-reference/data-assets/stored-procedures/versions"}]},{"group":"Tables","pages":[{"title":"Tables","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/data-assets/tables"},{"title":"Create a Table","sidebarTitle":"Create a Table","api":"POST /v1/tables","href":"/v1.13.x/api-reference/data-assets/tables/create"},{"title":"Custom Metrics","sidebarTitle":"Custom Metrics","api":"PUT /v1/tables/{id}/customMetric","href":"/v1.13.x/api-reference/data-assets/tables/custom-metrics"},{"title":"Delete a Table","sidebarTitle":"Delete a Table","api":"DELETE /v1/tables/{id}","href":"/v1.13.x/api-reference/data-assets/tables/delete"},{"title":"Followers \u0026 Votes","sidebarTitle":"Followers \u0026 Votes","api":"PUT /v1/tables/{id}/followers","href":"/v1.13.x/api-reference/data-assets/tables/followers-votes"},{"title":"Import \u0026 Export Tables","sidebarTitle":"Import \u0026 Export Tables","api":"GET /v1/tables/name/{fqn}/export","href":"/v1.13.x/api-reference/data-assets/tables/import-export"},{"title":"List Tables","sidebarTitle":"List Tables","api":"GET /v1/tables","href":"/v1.13.x/api-reference/data-assets/tables/list"},{"title":"Pipeline Observability","sidebarTitle":"Pipeline Observability","api":"GET /v1/tables/{id}/pipelineObservability","href":"/v1.13.x/api-reference/data-assets/tables/observability"},{"title":"Table Profiler","sidebarTitle":"Table Profiler","api":"GET /v1/tables/{id}/tableProfilerConfig","href":"/v1.13.x/api-reference/data-assets/tables/profiler"},{"title":"Table Relationships","sidebarTitle":"Table Relationships","api":"PUT /v1/tables/{id}/joins","href":"/v1.13.x/api-reference/data-assets/tables/relationships"},{"title":"Retrieve a Table","sidebarTitle":"Retrieve a Table","api":"GET /v1/tables/{id}","href":"/v1.13.x/api-reference/data-assets/tables/retrieve"},{"title":"Table Sample Data","sidebarTitle":"Table Sample Data","api":"GET /v1/tables/{id}/sampleData","href":"/v1.13.x/api-reference/data-assets/tables/sample-data"},{"title":"Update a Table","sidebarTitle":"Update a Table","api":"PUT /v1/tables","href":"/v1.13.x/api-reference/data-assets/tables/update"},{"title":"Table Versions","sidebarTitle":"Table Versions","api":"GET /v1/tables/{id}/versions","href":"/v1.13.x/api-reference/data-assets/tables/versions"}]},{"group":"Topics","pages":[{"title":"Topics","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/data-assets/topics"},{"title":"Create a Topic","sidebarTitle":"Create a Topic","api":"POST /v1/topics","href":"/v1.13.x/api-reference/data-assets/topics/create"},{"title":"Delete a Topic","sidebarTitle":"Delete a Topic","api":"DELETE /v1/topics/{id}","href":"/v1.13.x/api-reference/data-assets/topics/delete"},{"title":"Followers \u0026 Votes","sidebarTitle":"Followers \u0026 Votes","api":"PUT /v1/topics/{id}/followers","href":"/v1.13.x/api-reference/data-assets/topics/followers-votes"},{"title":"List Topics","sidebarTitle":"List Topics","api":"GET /v1/topics","href":"/v1.13.x/api-reference/data-assets/topics/list"},{"title":"Retrieve a Topic","sidebarTitle":"Retrieve a Topic","api":"GET /v1/topics/{id}","href":"/v1.13.x/api-reference/data-assets/topics/retrieve"},{"title":"Update a Topic","sidebarTitle":"Update a Topic","api":"PUT /v1/topics","href":"/v1.13.x/api-reference/data-assets/topics/update"},{"title":"Topic Versions","sidebarTitle":"Topic Versions","api":"GET /v1/topics/{id}/versions","href":"/v1.13.x/api-reference/data-assets/topics/versions"}]}]},{"group":"AI SDK","pages":[{"title":"AI SDK","sidebarTitle":"AI SDK","href":"/v1.13.x/sdk/ai-sdk"}]},{"group":"SDK","pages":[{"title":"OpenMetadata SDK | OpenMetadata Software Development Kit","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/sdk"},{"title":"OpenMetadata Standards","href":"/v1.13.x/api-reference/sdk/openmetadata-standards"},{"group":"Go SDK","pages":[{"title":"Go SDK","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/sdk/go"},{"title":"Go SDK - API Methods","sidebarTitle":"API Methods","href":"/v1.13.x/api-reference/sdk/go-api-methods"}]},{"group":"Python","pages":[{"title":"Python SDK | OpenMetadata Python SDK Documentation","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/sdk/python"},{"title":"Python SDK Overview","sidebarTitle":"Original Client and SDK 2.0","href":"/v1.13.x/api-reference/sdk/python/overview"},{"group":"API Reference","pages":[{"title":"Overview","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/sdk/python/api-reference"},{"title":"Aut Provider","sidebarTitle":"Auth Provider","href":"/v1.13.x/api-reference/sdk/python/api-reference/auth-provider"},{"title":"Client Utils","sidebarTitle":"Client Utils","href":"/v1.13.x/api-reference/sdk/python/api-reference/client-utils"},{"title":"Client","sidebarTitle":"Client","href":"/v1.13.x/api-reference/sdk/python/api-reference/client"},{"title":"Credentials","sidebarTitle":"Credentials","href":"/v1.13.x/api-reference/sdk/python/api-reference/credentials"},{"title":"Dashboard Mixin","sidebarTitle":"Dashboard Mixin","href":"/v1.13.x/api-reference/sdk/python/api-reference/dashboard-mixin"},{"title":"Data Insight Mixin","sidebarTitle":"Data Insight Mixin","href":"/v1.13.x/api-reference/sdk/python/api-reference/data-insight-mixin"},{"title":"ES Mixin","sidebarTitle":"ES Mixin","href":"/v1.13.x/api-reference/sdk/python/api-reference/es-mixin"},{"title":"Ingestion Pipeline Mixin","sidebarTitle":"Ingestion Pipeline Mixin","href":"/v1.13.x/api-reference/sdk/python/api-reference/ingestion-pipeline-mixin"},{"title":"Lineage Mixin","sidebarTitle":"Lineage Mixin","href":"/v1.13.x/api-reference/sdk/python/api-reference/lineage-mixin"},{"title":"ML Model Mixin","sidebarTitle":"ML Model Mixin","href":"/v1.13.x/api-reference/sdk/python/api-reference/mlmodel-mixin"},{"title":"Models","sidebarTitle":"Models","href":"/v1.13.x/api-reference/sdk/python/api-reference/models"},{"title":"Ometa API","sidebarTitle":"Ometa API","href":"/v1.13.x/api-reference/sdk/python/api-reference/ometa-api"},{"title":"Patch Mixin Utils","sidebarTitle":"Patch Mixin Utils","href":"/v1.13.x/api-reference/sdk/python/api-reference/patch-mixin-utils"},{"title":"Patch Mixin","sidebarTitle":"Patch mixin","href":"/v1.13.x/api-reference/sdk/python/api-reference/patch-mixin"},{"title":"Pipeline Mixin","sidebarTitle":"Pipeline mixin","href":"/v1.13.x/api-reference/sdk/python/api-reference/pipeline-mixin"},{"title":"Provider Registry","sidebarTitle":"Provider Registry","href":"/v1.13.x/api-reference/sdk/python/api-reference/provider-registry"},{"title":"Query Mixin","sidebarTitle":"Query Mixin","href":"/v1.13.x/api-reference/sdk/python/api-reference/query-mixin"},{"title":"Role Policy Mixin","sidebarTitle":"Role policy mixin","href":"/v1.13.x/api-reference/sdk/python/api-reference/role-policy-mixin"},{"title":"Routes","sidebarTitle":"Routes","href":"/v1.13.x/api-reference/sdk/python/api-reference/routes"},{"title":"Search Index Mixin","sidebarTitle":"Search Index Mixin","href":"/v1.13.x/api-reference/sdk/python/api-reference/search-index-mixin"},{"title":"Server Mixin","sidebarTitle":"Server Mixin","href":"/v1.13.x/api-reference/sdk/python/api-reference/server-mixin"},{"title":"Service Mixin","sidebarTitle":"Service Mixin","href":"/v1.13.x/api-reference/sdk/python/api-reference/service-mixin"},{"title":"Table Mixin","sidebarTitle":"Table Mixin","href":"/v1.13.x/api-reference/sdk/python/api-reference/table-mixin"},{"title":"Test Mixin","sidebarTitle":"Tests Mixin","href":"/v1.13.x/api-reference/sdk/python/api-reference/tests-mixin"},{"title":"Topic Mixin","sidebarTitle":"Topic Mixin","href":"/v1.13.x/api-reference/sdk/python/api-reference/topic-mixin"},{"title":"User Mixin","sidebarTitle":"User Mixin","href":"/v1.13.x/api-reference/sdk/python/api-reference/user-mixin"},{"title":"Utils","sidebarTitle":"Utils Mixin","href":"/v1.13.x/api-reference/sdk/python/api-reference/utils"},{"title":"version Mixin","sidebarTitle":"Version Mixin","href":"/v1.13.x/api-reference/sdk/python/api-reference/version-mixin"}]},{"group":"Build Connector","pages":[{"title":"Build a Connector","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/sdk/python/build-connector"},{"title":"Bulk Sink","sidebarTitle":"Bulk Sink","href":"/v1.13.x/api-reference/sdk/python/build-connector/bulk-sink"},{"title":"Sink","sidebarTitle":"Sink","href":"/v1.13.x/api-reference/sdk/python/build-connector/sink"},{"title":"Source","sidebarTitle":"Source","href":"/v1.13.x/api-reference/sdk/python/build-connector/source"},{"title":"Stage","sidebarTitle":"Stage","href":"/v1.13.x/api-reference/sdk/python/build-connector/stage"}]},{"group":"Entities","pages":[{"title":"Python SDK Entities | OpenMetadata Python Entities","description":"Python SDK entity schemas defining classes and attributes for accessing metadata programmatically.","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/sdk/python/entities"},{"title":"ML Model | OpenMetadata Machine Learning Model SDK","sidebarTitle":"ML Model","href":"/v1.13.x/api-reference/sdk/python/entities/ml-model"}]},{"group":"Ingestion","pages":[{"title":"Python SDK Ingestion","sidebarTitle":"Overview","description":null,"href":"/v1.13.x/api-reference/sdk/python/ingestion"},{"title":"Python SDK for Lineage","sidebarTitle":"Lineage","href":"/v1.13.x/api-reference/sdk/python/ingestion/lineage"},{"title":"Python SDK for Tags","sidebarTitle":"Tags","href":"/v1.13.x/api-reference/sdk/python/ingestion/tags"}]}]}]},{"group":"Discovery","pages":[{"title":"Discovery","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/discovery"},{"title":"Field Query","sidebarTitle":"Field Query","api":"GET /v1/search/fieldQuery","href":"/v1.13.x/api-reference/discovery/field-query"},{"title":"Search Entities","sidebarTitle":"Search Entities","api":"GET /v1/search/query","href":"/v1.13.x/api-reference/discovery/search"}]},{"group":"Lineage","pages":[{"title":"Lineage","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/lineage/index"},{"title":"Get Lineage","sidebarTitle":"Get Lineage","api":"GET /v1/lineage/{entityType}/{id}","href":"/v1.13.x/api-reference/lineage/get"},{"title":"Add Lineage","sidebarTitle":"Add Lineage","api":"PUT /v1/lineage","href":"/v1.13.x/api-reference/lineage/add"},{"title":"Delete Lineage","sidebarTitle":"Delete Lineage","api":"DELETE /v1/lineage/{fromEntity}/{fromId}/{toEntity}/{toId}","href":"/v1.13.x/api-reference/lineage/delete"},{"title":"Export Lineage","sidebarTitle":"Export Lineage","api":"GET /v1/lineage/export","href":"/v1.13.x/api-reference/lineage/export"}]},{"group":"Data Contracts","pages":[{"title":"Data Contracts","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/data-contracts"},{"title":"Create a Data Contract","sidebarTitle":"Create a Data Contract","api":"POST /v1/dataContracts","href":"/v1.13.x/api-reference/data-contracts/create"},{"title":"Delete a Data Contract","sidebarTitle":"Delete a Data Contract","api":"DELETE /v1/dataContracts/{id}","href":"/v1.13.x/api-reference/data-contracts/delete"},{"title":"List Data Contracts","sidebarTitle":"List Data Contracts","api":"GET /v1/dataContracts","href":"/v1.13.x/api-reference/data-contracts/list"},{"title":"Import \u0026 Export","sidebarTitle":"Import \u0026 Export","api":"GET /v1/dataContracts/{id}/odcs","href":"/v1.13.x/api-reference/data-contracts/odcs"},{"title":"Retrieve a Data Contract","sidebarTitle":"Retrieve a Data Contract","api":"GET /v1/dataContracts/{id}","href":"/v1.13.x/api-reference/data-contracts/retrieve"},{"title":"Update a Data Contract","sidebarTitle":"Update a Data Contract","api":"PUT /v1/dataContracts","href":"/v1.13.x/api-reference/data-contracts/update"},{"title":"Validate \u0026 Results","sidebarTitle":"Validate \u0026 Results","api":"POST /v1/dataContracts/{id}/validate","href":"/v1.13.x/api-reference/data-contracts/validate"},{"title":"Data Contract Versions","sidebarTitle":"Data Contract Versions","api":"GET /v1/dataContracts/{id}/versions","href":"/v1.13.x/api-reference/data-contracts/versions"}]},{"group":"Teams And Users","pages":[{"title":"Teams \u0026 Users","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/teams-and-users"},{"group":"Teams","pages":[{"title":"Teams","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/teams-and-users/teams"},{"title":"Create a Team","sidebarTitle":"Create a Team","api":"POST /v1/teams","href":"/v1.13.x/api-reference/teams-and-users/teams/create"},{"title":"Delete a Team","sidebarTitle":"Delete a Team","api":"DELETE /v1/teams/{id}","href":"/v1.13.x/api-reference/teams-and-users/teams/delete"},{"title":"List Teams","sidebarTitle":"List Teams","api":"GET /v1/teams","href":"/v1.13.x/api-reference/teams-and-users/teams/list"},{"title":"Retrieve a Team","sidebarTitle":"Retrieve a Team","api":"GET /v1/teams/{id}","href":"/v1.13.x/api-reference/teams-and-users/teams/retrieve"},{"title":"Update a Team","sidebarTitle":"Update a Team","api":"PUT /v1/teams","href":"/v1.13.x/api-reference/teams-and-users/teams/update"},{"title":"Team Versions","sidebarTitle":"Team Versions","api":"GET /v1/teams/{id}/versions","href":"/v1.13.x/api-reference/teams-and-users/teams/versions"}]},{"group":"Users","pages":[{"title":"Users","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/teams-and-users/users"},{"title":"Create a User","sidebarTitle":"Create a User","api":"POST /v1/users","href":"/v1.13.x/api-reference/teams-and-users/users/create"},{"title":"Delete a User","sidebarTitle":"Delete a User","api":"DELETE /v1/users/{id}","href":"/v1.13.x/api-reference/teams-and-users/users/delete"},{"title":"List Users","sidebarTitle":"List Users","api":"GET /v1/users","href":"/v1.13.x/api-reference/teams-and-users/users/list"},{"title":"Retrieve a User","sidebarTitle":"Retrieve a User","api":"GET /v1/users/{id}","href":"/v1.13.x/api-reference/teams-and-users/users/retrieve"},{"title":"Update a User","sidebarTitle":"Update a User","api":"PUT /v1/users","href":"/v1.13.x/api-reference/teams-and-users/users/update"},{"title":"User Versions","sidebarTitle":"User Versions","api":"GET /v1/users/{id}/versions","href":"/v1.13.x/api-reference/teams-and-users/users/versions"}]}]},{"group":"Data Governance","pages":[{"title":"Governance","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/governance"},{"group":"Classifications","pages":[{"title":"Classifications","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/governance/classifications"},{"title":"Create a Classification","sidebarTitle":"Create a Classification","api":"POST /v1/classifications","href":"/v1.13.x/api-reference/governance/classifications/create"},{"title":"Delete a Classification","sidebarTitle":"Delete a Classification","api":"DELETE /v1/classifications/{id}","href":"/v1.13.x/api-reference/governance/classifications/delete"},{"title":"List Classifications","sidebarTitle":"List Classifications","api":"GET /v1/classifications","href":"/v1.13.x/api-reference/governance/classifications/list"},{"title":"Retrieve a Classification","sidebarTitle":"Retrieve a Classification","api":"GET /v1/classifications/{id}","href":"/v1.13.x/api-reference/governance/classifications/retrieve"},{"title":"Update a Classification","sidebarTitle":"Update a Classification","api":"PUT /v1/classifications","href":"/v1.13.x/api-reference/governance/classifications/update"},{"title":"Classification Versions","sidebarTitle":"Classification Versions","api":"GET /v1/classifications/{id}/versions","href":"/v1.13.x/api-reference/governance/classifications/versions"}]},{"group":"Data Products","pages":[{"title":"Data Products","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/governance/data-products"},{"title":"Create a Data Product","sidebarTitle":"Create a Data Product","api":"POST /v1/dataProducts","href":"/v1.13.x/api-reference/governance/data-products/create"},{"title":"Delete a Data Product","sidebarTitle":"Delete a Data Product","api":"DELETE /v1/dataProducts/{id}","href":"/v1.13.x/api-reference/governance/data-products/delete"},{"title":"List Data Products","sidebarTitle":"List Data Products","api":"GET /v1/dataProducts","href":"/v1.13.x/api-reference/governance/data-products/list"},{"title":"Ports \u0026 Assets","sidebarTitle":"Ports \u0026 Assets","api":"PUT /v1/dataProducts/{fqn}/assets/add","href":"/v1.13.x/api-reference/governance/data-products/ports-assets"},{"title":"Retrieve a Data Product","sidebarTitle":"Retrieve a Data Product","api":"GET /v1/dataProducts/{id}","href":"/v1.13.x/api-reference/governance/data-products/retrieve"},{"title":"Update a Data Product","sidebarTitle":"Update a Data Product","api":"PUT /v1/dataProducts","href":"/v1.13.x/api-reference/governance/data-products/update"},{"title":"Data Product Versions","sidebarTitle":"Data Product Versions","api":"GET /v1/dataProducts/{id}/versions","href":"/v1.13.x/api-reference/governance/data-products/versions"}]},{"group":"Domains","pages":[{"title":"Domains","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/governance/domains"},{"title":"Create a Domain","sidebarTitle":"Create a Domain","api":"POST /v1/domains","href":"/v1.13.x/api-reference/governance/domains/create"},{"title":"Delete a Domain","sidebarTitle":"Delete a Domain","api":"DELETE /v1/domains/{id}","href":"/v1.13.x/api-reference/governance/domains/delete"},{"title":"List Domains","sidebarTitle":"List Domains","api":"GET /v1/domains","href":"/v1.13.x/api-reference/governance/domains/list"},{"title":"Retrieve a Domain","sidebarTitle":"Retrieve a Domain","api":"GET /v1/domains/{id}","href":"/v1.13.x/api-reference/governance/domains/retrieve"},{"title":"Update a Domain","sidebarTitle":"Update a Domain","api":"PUT /v1/domains","href":"/v1.13.x/api-reference/governance/domains/update"},{"title":"Domain Versions","sidebarTitle":"Domain Versions","api":"GET /v1/domains/{id}/versions","href":"/v1.13.x/api-reference/governance/domains/versions"}]},{"group":"Glossaries","pages":[{"title":"Glossaries","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/governance/glossaries"},{"title":"Create a Glossary","sidebarTitle":"Create a Glossary","api":"POST /v1/glossaries","href":"/v1.13.x/api-reference/governance/glossaries/create"},{"title":"Delete a Glossary","sidebarTitle":"Delete a Glossary","api":"DELETE /v1/glossaries/{id}","href":"/v1.13.x/api-reference/governance/glossaries/delete"},{"title":"List Glossaries","sidebarTitle":"List Glossaries","api":"GET /v1/glossaries","href":"/v1.13.x/api-reference/governance/glossaries/list"},{"title":"Retrieve a Glossary","sidebarTitle":"Retrieve a Glossary","api":"GET /v1/glossaries/{id}","href":"/v1.13.x/api-reference/governance/glossaries/retrieve"},{"title":"Update a Glossary","sidebarTitle":"Update a Glossary","api":"PUT /v1/glossaries","href":"/v1.13.x/api-reference/governance/glossaries/update"},{"title":"Glossary Versions","sidebarTitle":"Glossary Versions","api":"GET /v1/glossaries/{id}/versions","href":"/v1.13.x/api-reference/governance/glossaries/versions"}]},{"group":"Glossary Terms","pages":[{"title":"Glossary Terms","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/governance/glossary-terms"},{"title":"Create a Glossary Term","sidebarTitle":"Create a Glossary Term","api":"POST /v1/glossaryTerms","href":"/v1.13.x/api-reference/governance/glossary-terms/create"},{"title":"Delete a Glossary Term","sidebarTitle":"Delete a Glossary Term","api":"DELETE /v1/glossaryTerms/{id}","href":"/v1.13.x/api-reference/governance/glossary-terms/delete"},{"title":"List Glossary Terms","sidebarTitle":"List Glossary Terms","api":"GET /v1/glossaryTerms","href":"/v1.13.x/api-reference/governance/glossary-terms/list"},{"title":"Retrieve a Glossary Term","sidebarTitle":"Retrieve a Glossary Term","api":"GET /v1/glossaryTerms/{id}","href":"/v1.13.x/api-reference/governance/glossary-terms/retrieve"},{"title":"Update a Glossary Term","sidebarTitle":"Update a Glossary Term","api":"PUT /v1/glossaryTerms","href":"/v1.13.x/api-reference/governance/glossary-terms/update"},{"title":"Glossary Term Versions","sidebarTitle":"Glossary Term Versions","api":"GET /v1/glossaryTerms/{id}/versions","href":"/v1.13.x/api-reference/governance/glossary-terms/versions"}]},{"group":"Tags","pages":[{"title":"Tags","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/governance/tags"},{"title":"Create a Tag","sidebarTitle":"Create a Tag","api":"POST /v1/tags","href":"/v1.13.x/api-reference/governance/tags/create"},{"title":"Delete a Tag","sidebarTitle":"Delete a Tag","api":"DELETE /v1/tags/{id}","href":"/v1.13.x/api-reference/governance/tags/delete"},{"title":"List Tags","sidebarTitle":"List Tags","api":"GET /v1/tags","href":"/v1.13.x/api-reference/governance/tags/list"},{"title":"Retrieve a Tag","sidebarTitle":"Retrieve a Tag","api":"GET /v1/tags/{id}","href":"/v1.13.x/api-reference/governance/tags/retrieve"},{"title":"Update a Tag","sidebarTitle":"Update a Tag","api":"PUT /v1/tags","href":"/v1.13.x/api-reference/governance/tags/update"},{"title":"Tag Versions","sidebarTitle":"Tag Versions","api":"GET /v1/tags/{id}/versions","href":"/v1.13.x/api-reference/governance/tags/versions"}]}]},{"group":"Data Quality","pages":[{"title":"Data Quality","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/data-quality"},{"group":"Test Cases","pages":[{"title":"Test Cases","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/data-quality/test-cases"},{"title":"Create a Test Case","sidebarTitle":"Create a Test Case","api":"POST /v1/dataQuality/testCases","href":"/v1.13.x/api-reference/data-quality/test-cases/create"},{"title":"Delete a Test Case","sidebarTitle":"Delete a Test Case","api":"DELETE /v1/dataQuality/testCases/{id}","href":"/v1.13.x/api-reference/data-quality/test-cases/delete"},{"title":"List Test Cases","sidebarTitle":"List Test Cases","api":"GET /v1/dataQuality/testCases","href":"/v1.13.x/api-reference/data-quality/test-cases/list"},{"title":"Test Case Results","sidebarTitle":"Test Case Results","api":"GET /v1/dataQuality/testCases/testCaseResults/{fqn}","href":"/v1.13.x/api-reference/data-quality/test-cases/results"},{"title":"Retrieve a Test Case","sidebarTitle":"Retrieve a Test Case","api":"GET /v1/dataQuality/testCases/{id}","href":"/v1.13.x/api-reference/data-quality/test-cases/retrieve"},{"title":"Update a Test Case","sidebarTitle":"Update a Test Case","api":"PUT /v1/dataQuality/testCases","href":"/v1.13.x/api-reference/data-quality/test-cases/update"},{"title":"Test Case Versions","sidebarTitle":"Test Case Versions","api":"GET /v1/dataQuality/testCases/{id}/versions","href":"/v1.13.x/api-reference/data-quality/test-cases/versions"}]},{"group":"Test Definitions","pages":[{"title":"Test Definitions","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/data-quality/test-definitions"},{"title":"Create a Test Definition","sidebarTitle":"Create a Test Definition","api":"POST /v1/dataQuality/testDefinitions","href":"/v1.13.x/api-reference/data-quality/test-definitions/create"},{"title":"List Test Definitions","sidebarTitle":"List Test Definitions","api":"GET /v1/dataQuality/testDefinitions","href":"/v1.13.x/api-reference/data-quality/test-definitions/list"},{"title":"Retrieve a Test Definition","sidebarTitle":"Retrieve a Test Definition","api":"GET /v1/dataQuality/testDefinitions/{id}","href":"/v1.13.x/api-reference/data-quality/test-definitions/retrieve"}]},{"group":"Test Suites","pages":[{"title":"Test Suites","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/data-quality/test-suites"},{"title":"Create a Test Suite","sidebarTitle":"Create a Test Suite","api":"POST /v1/dataQuality/testSuites","href":"/v1.13.x/api-reference/data-quality/test-suites/create"},{"title":"Delete a Test Suite","sidebarTitle":"Delete a Test Suite","api":"DELETE /v1/dataQuality/testSuites/{id}","href":"/v1.13.x/api-reference/data-quality/test-suites/delete"},{"title":"List Test Suites","sidebarTitle":"List Test Suites","api":"GET /v1/dataQuality/testSuites","href":"/v1.13.x/api-reference/data-quality/test-suites/list"},{"title":"Retrieve a Test Suite","sidebarTitle":"Retrieve a Test Suite","api":"GET /v1/dataQuality/testSuites/{id}","href":"/v1.13.x/api-reference/data-quality/test-suites/retrieve"},{"title":"Update a Test Suite","sidebarTitle":"Update a Test Suite","api":"PUT /v1/dataQuality/testSuites","href":"/v1.13.x/api-reference/data-quality/test-suites/update"},{"title":"Test Suite Versions","sidebarTitle":"Test Suite Versions","api":"GET /v1/dataQuality/testSuites/{id}/versions","href":"/v1.13.x/api-reference/data-quality/test-suites/versions"}]}]},{"group":"Main Concepts","pages":[{"title":"Main Concepts | OpenMetadata Core Concepts Overview","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/main-concepts"},{"title":"High Level Design | OpenMetadata Architecture Overview","sidebarTitle":"High Level Design","href":"/v1.13.x/api-reference/main-concepts/high-level-design"},{"title":"Backend DB","sidebarTitle":"Backend DB","href":"/v1.13.x/api-reference/main-concepts/backend-db"},{"group":"Metadata Standard","pages":[{"title":"Metadata Standard | OpenMetadata Core Schema Guide","sidebarTitle":"Overview","href":"/v1.13.x/api-reference/main-concepts/metadata-standard"},{"title":"APIs | OpenMetadata Metadata Standard APIs","sidebarTitle":"APIs","href":"/v1.13.x/api-reference/main-concepts/metadata-standard/apis"}]}]}]}]},{"version":"v2.1.x-SNAPSHOT","pages":[{"title":"v2.1.x-SNAPSHOT","href":"/v2.1.x-SNAPSHOT/api-reference/sdk/python/entities/ml-model"}]}]},"title":"ML Model | OpenMetadata Machine Learning Model SDK - OpenMetadata Documentation","buildId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","deploymentId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","dynamics":[],"chunks":[]}