Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 27 additions & 4 deletions nuget/README.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
# Data API builder for Azure Databases

[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)
[![Documentation](https://img.shields.io/badge/docs-website-%23fc0)](https://learn.microsoft.com/azure/data-api-builder/)

[What's new?](https://learn.microsoft.com/azure/data-api-builder/whats-new)

## About

**Data API builder for Azure Databases provides modern REST and GraphQL endpoints to your Azure Databases.**
**Data API builder for Azure Databases provides modern REST and GraphQL endpoints and MCP tools to your Azure Databases.**

With data API builder, database objects can be exposed via REST or GraphQL endpoints so that your data can be accessed using modern techniques on any platform, any language, and any device. With an integrated and flexible policy engine, native support for common behavior like pagination, filtering, projection and sorting, the creation of CRUD backend services can be done in minutes instead of hours or days, giving developers an efficiency boost like never seen before.
With data API builder, database objects can be exposed via REST or GraphQL endpoints as well as MCP tools so that your data can be accessed using modern techniques on any platform, any language, and any device. With an integrated and flexible policy engine, native support for common behavior like pagination, filtering, projection and sorting, the creation of CRUD backend services and MCP tools can be done in minutes instead of hours or days, giving developers an efficiency boost like never seen before.

Data API builder is Open Source and works on any platform. It can be executed on-premises, in a container or as a Managed Service in Azure, via the new [Database Connection](https://learn.microsoft.com/azure/static-web-apps/database-overview) feature available in Azure Static Web Apps.
Data API builder is Open Source and works on any platform. It can be executed on-premises, in a container or as a Managed Service in Azure, via the [Database Connection](https://learn.microsoft.com/azure/static-web-apps/database-overview) feature available in Azure Static Web Apps.

## Features

- Allow collections, tables, views and stored procedures to be accessed via REST and GraphQL
- Allow collections, tables, views and stored procedures to be accessed via REST, GraphQL, and MCP
- Support authentication via OAuth2/JWT
- Support for EasyAuth when running in Azure
- Role-based authorization using received claims
Expand All @@ -24,6 +27,26 @@ Data API builder is Open Source and works on any platform. It can be executed on
- Queries and mutations
- Filtering, sorting and pagination
- Relationship navigation
- MCP (Model Context Protocol)
- Exposes database tables, views, and stored procedures through MCP tools
- Compatible with any MCP-enabled AI client (e.g., GitHub Copilot, Azure AI Foundry)
- DML tools for create, read, update, and delete operations
- Custom tools via stored procedures
- Easy development via dedicated CLI
- Full integration with Static Web Apps via Database Connection feature when running in Azure
- Open Source

## Getting started

Use the [Getting Started](https://learn.microsoft.com/azure/data-api-builder/get-started/get-started-with-data-api-builder) tutorial to quickly explore the core tools and concepts.

#### Other endpoints to explore

- DAB's Health endpoint: `http://localhost:5000/health`
- DAB's Swagger UI: `http://localhost:5000/api/openapi`

## Additional resources

- [Online Documentation](https://learn.microsoft.com/en-us/azure/data-api-builder/overview)
- [Official Samples](https://github.com/Azure-samples/data-api-builder)
- [Known Issues](https://learn.microsoft.com/azure/data-api-builder/known-issues)
47 changes: 47 additions & 0 deletions nuget/nuget_core/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Data API builder Core Library for Azure Databases

[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)

## About

**Microsoft.DataApiBuilder.Core** is the core engine library for [Data API builder](https://learn.microsoft.com/azure/data-api-builder/) (DAB). It provides the runtime components needed to generate and execute secure REST, GraphQL endpoints and MCP tools backed by Azure SQL and other databases.

This package is intended for developers who want to embed or extend the Data API builder engine within their own .NET applications or services.

## Supported Databases

- Azure SQL / SQL Server
- Azure SQL Data Warehouse
- Azure Cosmos DB (NoSQL)
- PostgreSQL
- MySQL

## Key Capabilities

- **REST API engine** � Automatically generates CRUD endpoints (POST, GET, PUT, PATCH, DELETE) with filtering, sorting, and pagination
- **GraphQL engine** � Generates queries and mutations with filtering, sorting, pagination, and relationship navigation
- **MCP tool support** � Exposes DML and custom MCP tools for building SQL MCP Servers
- **Authentication** � OAuth2/JWT and EasyAuth (Azure App Service / Static Web Apps)
- **Authorization** � Role-based access control with item-level security via policy expressions
- **Configuration-driven** � Define entities, permissions, and relationships in a JSON config file; no code required
- **Multi-database** � Connect to multiple database types from a single instance
- **Caching** � Built-in response caching with [FusionCache](https://github.com/ZiggyCreatures/FusionCache)

## Installation

```bash
dotnet add package Microsoft.DataApiBuilder.Core
```

## Usage

This library provides the core services and middleware used by the Data API builder runtime. Register the DAB services in your application's dependency injection container and configure them using a [DAB configuration file](https://learn.microsoft.com/azure/data-api-builder/reference-configuration).

For a complete, ready-to-run experience, consider using the [`Microsoft.DataApiBuilder`](https://www.nuget.org/packages/Microsoft.DataApiBuilder) NuGet package or the [DAB CLI](https://learn.microsoft.com/azure/data-api-builder/how-to-install-cli).

## Resources

- [Official Documentation](https://learn.microsoft.com/azure/data-api-builder/)
- [GitHub Repository](https://github.com/Azure/data-api-builder)
- [Samples](https://aka.ms/dab/samples)
- [Known Issues](https://learn.microsoft.com/azure/data-api-builder/known-issues)
24 changes: 17 additions & 7 deletions scripts/create-manifest-file.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,17 @@ foreach ($targetFramework in $dotnetTargetFrameworks)
}

# Generating hash for nuget
$nugetFileName = "Microsoft.DataApiBuilder.$DabVersion.nupkg"
$nugetFilePath = "$BuildOutputDir/nupkg/$nugetFileName"
$fileHashInfo = Get-FileHash $nugetFilePath
$nuget_file_hash = $fileHashInfo.Hash
$download_url_nuget = "https://github.com/Azure/data-api-builder/releases/download/$versionTag/$nugetFileName"
$nugetCliFileName = "Microsoft.DataApiBuilder.$DabVersion.nupkg"
$nugetCliFilePath = "$BuildOutputDir/nupkg/$nugetCliFileName"
$fileCliHashInfo = Get-FileHash $nugetCliFilePath
$nuget_cli_file_hash = $fileCliHashInfo.Hash
$download_url_nuget_cli = "https://github.com/Azure/data-api-builder/releases/download/$versionTag/$nugetCliFileName"

$nugetCoreFileName = "Microsoft.DataApiBuilder.Core.$DabVersion.nupkg"
$nugetCoreFilePath = "$BuildOutputDir/nupkg/$nugetCoreFileName"
$fileCoreHashInfo = Get-FileHash $nugetCoreFilePath
$nuget_core_file_hash = $fileCoreHashInfo.Hash
$download_url_nuget_core = "https://github.com/Azure/data-api-builder/releases/download/$versionTag/$nugetCoreFileName"

# Creating new block to insert latest version
# String substitution requires hashtable to be wrapped in $( $hashtable['key'] ) to avoid parsing issues.
Expand All @@ -68,8 +74,12 @@ $latestBlock = @'
"sha": "$($frameworkPlatformFileHashMetadata["net8.0_osx-x64"])"
},
"nuget": {
"url": "${download_url_nuget}",
"sha": "${nuget_file_hash}"
"url": "${download_url_nuget_cli}",
"sha": "${nuget_cli_file_hash}"
},
"nuget-core": {
"url": "${download_url_nuget_core}",
"sha": "${nuget_core_file_hash}"
}
}
}
Expand Down
4 changes: 1 addition & 3 deletions scripts/notice-generation.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
# Licensed under the MIT License.

param (
[Parameter (Mandatory=$true)][string] $noticeFilePath,
[Parameter (Mandatory=$true)][string] $BuildArtifactStagingDir,
[Parameter (Mandatory=$true)][string] $BuildSourcesDir
)
Expand All @@ -17,9 +18,6 @@ Invoke-WebRequest $chiliCreamLicenseMetadataURL -UseBasicParsing |
$sqlClientSNILicenseFilePath = "$BuildSourcesDir/external_licenses/Microsoft.Data.SqlClient.SNI.5.2.0.License.txt"
$sqlClientSNILicense = Get-Content -Path $sqlClientSNILicenseFilePath -Raw

# Path of notice file generated in CI/CD pipeline.
$noticeFilePath = "$BuildSourcesDir/NOTICE.txt"

# Replace erroneous copyright, using [System.IO.File] for better performance than Get-Content and Set-Content
$content = [System.IO.File]::ReadAllText($noticeFilePath).Replace("(c) Microsoft 2023`r`n", "")
$content = [System.IO.File]::ReadAllText($noticeFilePath).Replace("(c) Microsoft 2024`r`n", "")
Expand Down
6 changes: 3 additions & 3 deletions src/Cli/Cli.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@
<PackageLicenseFile>LICENSE.txt</PackageLicenseFile>
<RepositoryType>git</RepositoryType>
<PackageProjectUrl>https://go.microsoft.com/fwlink/?linkid=2224253</PackageProjectUrl>
<PackageTags>microsoft rest graphql api azure sql mssql mysql pgsql postgresql azure-sql sqlserver nosql cosmosdb dataApiBuilder</PackageTags>
<PackageTags>microsoft rest graphql mcp api azure sql mssql mysql pgsql postgresql azure-sql sqlserver nosql cosmosdb dataApiBuilder</PackageTags>
<AssemblyName>Microsoft.DataApiBuilder</AssemblyName>
<Description>Data API builder for Azure Databases provides modern REST and GraphQL endpoints to your Azure Databases.</Description>
<Description>Data API builder for Azure Databases provides modern REST, GraphQL endpoints and MCP tools to your Azure Databases.</Description>
<PackageIcon>nuget_icon.png</PackageIcon>
<PackageReadmeFile>README.md</PackageReadmeFile>
<EmbedUntrackedSources>true</EmbedUntrackedSources>
Expand Down Expand Up @@ -55,7 +55,7 @@
<None Include="..\..\nuget\README.md" Pack="true" PackagePath="\" CopyToOutputDirectory="PreserveNewest" />
<None Include="..\..\nuget\nuget_icon.png" Pack="true" PackagePath="\" />
<None Include="..\..\LICENSE.txt" Pack="true" PackagePath="\" CopyToOutputDirectory="PreserveNewest" />
<None Include="..\..\NOTICE.txt" Pack="true" PackagePath="\" Condition="Exists('..\..\..\NOTICE.txt')" CopyToOutputDirectory="PreserveNewest" />
<None Include="..\..\nuget_cli\NOTICE.txt" Pack="true" PackagePath="\" Condition="Exists('..\..\nuget_cli\NOTICE.txt')" CopyToOutputDirectory="PreserveNewest" />
Comment thread
RubenCerna2079 marked this conversation as resolved.
</ItemGroup>

<ItemGroup>
Expand Down
21 changes: 21 additions & 0 deletions src/Core/Azure.DataApiBuilder.Core.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,21 @@
<TargetFrameworks>net8.0</TargetFrameworks>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<PackageOutputPath>./nupkg</PackageOutputPath>
<PackageId>Microsoft.DataApiBuilder.Core</PackageId>
<Title>Microsoft.DataApiBuilder.Core</Title>
<Authors>Microsoft</Authors>
<Copyright>© Microsoft Corporation. All rights reserved.</Copyright>
<PackageLicenseFile>LICENSE.txt</PackageLicenseFile>
<RepositoryType>git</RepositoryType>
<PackageProjectUrl>https://go.microsoft.com/fwlink/?linkid=2224253</PackageProjectUrl>
<PackageTags>microsoft rest graphql mcp api azure sql mssql mysql pgsql postgresql azure-sql sqlserver nosql cosmosdb dataApiBuilder</PackageTags>
<AssemblyName>Microsoft.DataApiBuilder.Core</AssemblyName>
<Description>Data API builder Core library for Azure Databases provides modern REST, GraphQL endpoints and MCP tools to your Azure Databases.</Description>
<PackageIcon>nuget_icon.png</PackageIcon>
<PackageReadmeFile>README.md</PackageReadmeFile>
<EmbedUntrackedSources>true</EmbedUntrackedSources>
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<NoWarn>NU1603</NoWarn>
</PropertyGroup>

Expand Down Expand Up @@ -45,4 +59,11 @@
<ProjectReference Include="..\Service.GraphQLBuilder\Azure.DataApiBuilder.Service.GraphQLBuilder.csproj" />
</ItemGroup>

<ItemGroup>
<None Include="..\..\nuget\nuget_core\README.md" Pack="true" PackagePath="\" />
<None Include="..\..\nuget\nuget_icon.png" Pack="true" PackagePath="\" />
<None Include="..\..\LICENSE.txt" Pack="true" PackagePath="\" />
<None Include="..\..\nuget_core\NOTICE.txt" Pack="true" PackagePath="\" Condition="Exists('..\..\nuget_core\NOTICE.txt')" />
Comment thread
RubenCerna2079 marked this conversation as resolved.
</ItemGroup>

</Project>