{"id":3178,"date":"2024-05-15T08:00:44","date_gmt":"2024-05-15T15:00:44","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/azure-sql\/?p=3178"},"modified":"2026-02-23T11:37:28","modified_gmt":"2026-02-23T19:37:28","slug":"data-api-builder-ga","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/azure-sql\/data-api-builder-ga\/","title":{"rendered":"Data API builder becomes Generally Available"},"content":{"rendered":"<h2>Announcing Data API builder General Availability<\/h2>\n<p>On May 15<sup>th<\/sup>, Data API builder becomes Generally Available.<\/p>\n<p><strong>Data API builder for Azure SQL Databases \u2013 Generally Available<\/strong><\/p>\n<p><strong><a href=\"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-content\/uploads\/sites\/56\/2023\/10\/dab-logo.png\"><img decoding=\"async\" class=\"alignright wp-image-2563 size-thumbnail\" src=\"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-content\/uploads\/sites\/56\/2023\/10\/dab-logo-150x150.png\" alt=\"Image dab logo\" width=\"150\" height=\"150\" srcset=\"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-content\/uploads\/sites\/56\/2023\/10\/dab-logo-150x150.png 150w, https:\/\/devblogs.microsoft.com\/azure-sql\/wp-content\/uploads\/sites\/56\/2023\/10\/dab-logo-300x300.png 300w, https:\/\/devblogs.microsoft.com\/azure-sql\/wp-content\/uploads\/sites\/56\/2023\/10\/dab-logo-24x24.png 24w, https:\/\/devblogs.microsoft.com\/azure-sql\/wp-content\/uploads\/sites\/56\/2023\/10\/dab-logo-48x48.png 48w, https:\/\/devblogs.microsoft.com\/azure-sql\/wp-content\/uploads\/sites\/56\/2023\/10\/dab-logo-96x96.png 96w, https:\/\/devblogs.microsoft.com\/azure-sql\/wp-content\/uploads\/sites\/56\/2023\/10\/dab-logo.png 336w\" sizes=\"(max-width: 150px) 100vw, 150px\" \/><\/a>It\u2019s been a long road, getting from there to here.<\/strong> Nearly three years ago, Data API builder began as just a dream. How can we reduce the friction for developers wanting to access databases in their client applications? We created Data API builder to solve this, providing secure and feature-rich REST and GraphQL endpoints over databases with zero code. DAB is developer-oriented; it\u2019s open-source and free, even for on-prem databases.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-content\/uploads\/sites\/56\/2023\/03\/dab-architecture-overview.png\"><img decoding=\"async\" class=\"aligncenter wp-image-1787 size-full\" src=\"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-content\/uploads\/sites\/56\/2023\/03\/dab-architecture-overview.png\" alt=\"Image dab architecture overview\" width=\"1291\" height=\"717\" srcset=\"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-content\/uploads\/sites\/56\/2023\/03\/dab-architecture-overview.png 1291w, https:\/\/devblogs.microsoft.com\/azure-sql\/wp-content\/uploads\/sites\/56\/2023\/03\/dab-architecture-overview-300x167.png 300w, https:\/\/devblogs.microsoft.com\/azure-sql\/wp-content\/uploads\/sites\/56\/2023\/03\/dab-architecture-overview-1024x569.png 1024w, https:\/\/devblogs.microsoft.com\/azure-sql\/wp-content\/uploads\/sites\/56\/2023\/03\/dab-architecture-overview-768x427.png 768w\" sizes=\"(max-width: 1291px) 100vw, 1291px\" \/><\/a><\/p>\n<p>Architecturally, DAB is a dynamic container-based, configuration-driven runtime. It\u2019s an ASP.NET project written in C# and published under the MIT license. \u00a0We use ChilliCream\u2019s <a href=\"https:\/\/chillicream.com\/docs\/hotchocolate\/v13\">Hot Chocolate<\/a> for GraphQL and <a href=\"https:\/\/github.com\/ZiggyCreatures\/FusionCache\">FusionCache<\/a> for in-memory cache. We also use Swashbuckle, Polly, and several other libraries that every developer uses in well-designed API projects.<\/p>\n<p><strong>REST endpoints<\/strong><\/p>\n<p>DAB offers REST endpoints with native OpenAPI support and Swagger for developers, including in-memory caching and support for OData-like query string keywords. REST in DAB is standard and typical; it is configured per-entity with granular security and flexible database policies.<\/p>\n<p><strong>GraphQL endpoints<\/strong><\/p>\n<p>DAB provides GraphQL endpoints with automatic schema generation and Banana Cake Pop for developers, including relational queries and nested Create mutations. GraphQL in DAB can exist with or without REST endpoints and supports the same granular and flexible security features.<\/p>\n<p><strong>Ridiculously flexible<\/strong><\/p>\n<p>Whether your solution is exposing a data clearinghouse, enabling a mobile application, or just playing around with an Azure database, DAB supports you. It natively connects to several backend stores, including NoSQL (Cosmos DB) and relational (Azure SQL, etc.). It also supports multiple databases simultaneously.<\/p>\n<p style=\"padding-left: 40px;\"><em>Data API Builder has been a bit of a dream come true for our team. We are starting to modernize all our APIs across the organization. Writing APIs from scratch was going to be a significant effort in that initiative. Data API Builder has completely changed the game for us. Not only will it now take a fraction of the time that we had planned, but the resulting APIs will also be far more mature and feature rich than we could have ever built on our own. We have begun to promote DAB within the company and believe that once other teams understand that power of the tool, they will race to adopt it as well. <strong>&#8211; Jeremy Syme, Engineering Manager, Bluetooth Special Interest Group, Inc.<\/strong><\/em><\/p>\n<p><strong>Container-based<\/strong><\/p>\n<p>DAB is a standard Docker-friendly container. It is completely stateless and scalable. Run it in your own environment or in the cloud, it doesn\u2019t matter. Run one or several containers against a single database or against several databases. The approach is up to you. <a href=\"https:\/\/aka.ms\/dab\/registry\">https:\/\/aka.ms\/dab\/registry<\/a><\/p>\n<p><strong>Enterprise friendly<\/strong><\/p>\n<p>Enterprise customers demand features like Microsoft Entra Identity integration and Application Insights and CI\/CD support. They also scale and require some crazy topologies. DAB delivers with flexibility, as well as the scale and performance to meet every workload.<\/p>\n<p><strong>Azure friendly<\/strong><\/p>\n<p>DAB with Azure Static Web Apps offers a seamless solution for integrating your database with front-end applications through its cutting-edge data connections feature, currently in preview. DAB seamlessly integrates with <a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/data-api-builder\/tutorial-deploy-container-app-cli\">Azure Container Apps<\/a>, Azure Container Instances, Azure Kubernetes Services, and Azure Web Apps for Containers, while also extending support to custom on-premises deployments.<\/p>\n<p><strong>Feature rich<\/strong><\/p>\n<p>Every endpoint requires a retry policy, comprehensive logging, in-memory cache, and the ability to map columns and filter results. But they also need solid documentation, a standards-based interface, and robust error handling. You could build it, but Data API builder already has.<\/p>\n<p><strong>Less code, more engine<\/strong><\/p>\n<p>Engineers love the techniques and technologies DAB uses. It\u2019s what you would build \u2013 you just don\u2019t have to. DAB dramatically reduces a codebase, eliminates suites of tests, and shortens CI\/CD pipelines; it introduces capabilities typically reserved for the largest teams. Yet incredibly simple.<\/p>\n<p><strong>Rapid development<\/strong><\/p>\n<p>An early adopter, Nightingale HQ in the UK, writes sustainable software under EU contracts \u2013 mostly exposing data clearinghouses through data APIs. They recently published <a href=\"https:\/\/nightingalehq.ai\/pdfs\/NightingaleHQ-Technical-Whitepaper.pdf\">a white paper<\/a> on their business which highly leverages Data API builder.<\/p>\n<p style=\"padding-left: 40px;\"><em>DAB speeds this process by only requiring the developer to control the Entity Type definitions from which the subsequent .NET types are built. Based on a rough estimate from prior projects it takes a developer a week to create a simple API representing the models and queries required by a small application, this includes researching the database schemas, writing, and testing the endpoint logic, and writing a .NET client to consume it. Amending a single endpoint to represent a significant logic or model change takes half a day to a day. Through using DAB, we have found a developer can create an API in a matter of hours and amend endpoints in minutes. If realised, these savings not only represent a reduction in time-to-result but also an implicit carbon saving during the development process. <strong>&#8211; Chris Wilson, NightingaleHQ\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/strong><\/em><\/p>\n<p>What does it mean to be open source? That we work and think in the open. The code is right there; we collaborate with projects like <a href=\"https:\/\/chillicream.com\/docs\/hotchocolate\/v13\">HotChocolate<\/a> and <a href=\"https:\/\/github.com\/ZiggyCreatures\/FusionCache\">FusionCache<\/a>. We have a monthly community standup hosted on YouTube, our issues and discussions are managed in GitHub, and \u2013 most of all \u2013 we accept your pull . <a href=\"https:\/\/aka.ms\/dab\">https:\/\/aka.ms\/dab<\/a><\/p>\n<p><strong>Great documentation<\/strong><\/p>\n<p>The Data API builder team has put in a lot of time to make our docs complete and easy. We\u2019re full of quick starts, tutorials, and conceptual articles meant to help you get started. Our reference docs are comprehensive and always evolving. Check it out at <a href=\"https:\/\/aka.ms\/dab\/docs\">https:\/\/aka.ms\/dab\/docs<\/a><\/p>\n<p><strong>Command line<\/strong><\/p>\n<p>Our CLI is a cross-platform dotnet tool you install like this:<\/p>\n<pre class=\"prettyprint language-default\"><code class=\"language-default\">dotnet tool install Microsoft.DataApiBuilder --global<\/code><\/pre>\n<p>Then, in three lines, you can initialize, validate, and spin up an endpoint on Windows, Linux or MacOS and immediately start consuming data and building client applications. This is a simple example, but a larger and more complex database is fine, too.<\/p>\n<pre class=\"prettyprint language-default\"><code class=\"language-default\">dab init --database-type mssql --connection-string \"@env('my-connection-string')\"\ndab add Book --source dbo.books --permissions \"anonymous:*\"\ndab start<\/code><\/pre>\n<p>It\u2019s worth noting that Data API builder deeply supports environment variables throughout its configuration file. This is the best way to pass secrets. We also support local ENV files for engineers wanting to limit the scope of local environment variables during development.<\/p>\n<p><strong>Getting Started and Contributions<\/strong><\/p>\n<p>To get started with Data API builder, explore our comprehensive documentation and step-by-step guides: We look forward to your feedback and contributions. Join our GitHub Discussions, provide feedback, or start a conversation about our roadmap.<\/p>\n<p><strong>Final Thoughts<\/strong><\/p>\n<p>The journey from public preview to General Availability has been rewarding, and Data API builder is ready to help developers simplify database interactions, enabling more time to focus on creating outstanding user experiences and architectures.<\/p>\n<p><strong>Thank you to our community. Join us <\/strong><a href=\"https:\/\/forms.office.com\/pages\/responsepage.aspx?id=v4j5cvGGr0GRqy180BHbR1S1JdzGAxhDrefV-tBYtwZUNE1RWVo0SUVMTkRESUZLMVVOS0wwUFNVRy4u\"><strong>here<\/strong><\/a><strong>. <\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Announcing Data API builder General Availability On May 15th, Data API builder becomes Generally Available. Data API builder for Azure SQL Databases \u2013 Generally Available It\u2019s been a long road, getting from there to here. Nearly three years ago, Data API builder began as just a dream. How can we reduce the friction for developers [&hellip;]<\/p>\n","protected":false},"author":96788,"featured_media":2563,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1,597],"tags":[510,560],"class_list":["post-3178","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-azure-sql","category-data-api-builder-2","tag-azure-sql-database","tag-data-api-builder"],"acf":[],"blog_post_summary":"<p>Announcing Data API builder General Availability On May 15th, Data API builder becomes Generally Available. Data API builder for Azure SQL Databases \u2013 Generally Available It\u2019s been a long road, getting from there to here. Nearly three years ago, Data API builder began as just a dream. How can we reduce the friction for developers [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-json\/wp\/v2\/posts\/3178","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-json\/wp\/v2\/users\/96788"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-json\/wp\/v2\/comments?post=3178"}],"version-history":[{"count":1,"href":"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-json\/wp\/v2\/posts\/3178\/revisions"}],"predecessor-version":[{"id":6619,"href":"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-json\/wp\/v2\/posts\/3178\/revisions\/6619"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-json\/wp\/v2\/media\/2563"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-json\/wp\/v2\/media?parent=3178"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-json\/wp\/v2\/categories?post=3178"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-json\/wp\/v2\/tags?post=3178"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}