GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - Azure/data-api-builder: Data API builder provides modern REST, GraphQL endpoints and MCP tools to your Azure Databases and on-prem stores.

BranchesTags
Open more actions menu

Latest commit

 

History

1,329 Commits
1,329 Commits

Folders and files

NameName
Last commit message
Last commit date
.aspire
.aspire
 
 
.config
.config
 
 
.devcontainer
.devcontainer
 
 
.github
.github
 
 
.pipelines
.pipelines
 
 
config-generators
config-generators
 
 
docker
docker
 
 
docs
docs
 
 
external_licenses
external_licenses
 
 
nuget
nuget
 
 
samples
samples
 
 
schemas
schemas
 
 
scripts
scripts
 
 
src
src
 
 
templates
templates
 
 
.gitattributes
.gitattributes
 
 
.gitignore
.gitignore
 
 
CODEOWNERS
CODEOWNERS
 
 
CODE_OF_CONDUCT.md
CODE_OF_CONDUCT.md
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
Dockerfile
Dockerfile
 
 
LICENSE.txt
LICENSE.txt
 
 
Nuget.config
Nuget.config
 
 
README.md
README.md
 
 
SECURITY.md
SECURITY.md
 
 
SUPPORT.md
SUPPORT.md
 
 
global.json
global.json
 
 

Repository files navigation

Data API builder for Azure Databases

NuGet Package Nuget Downloads Documentation License: MIT

What's new?

Join the community

Want to be part of our priorities and roadmap? Sign up here.

About Data API builder

Data API builder (DAB) is an open-source, no-code tool that creates secure, full-featured REST and GraphQL endpoints for your database. It’s a CRUD data API engine that runs in a container—on Azure, any other cloud, or on-premises. DAB is built for developers with integrated tooling, telemetry, and other productivity features.

Important

Data API builder (DAB) is open source and always free.

Which databases does Data API builder support?

Azure SQL SQL Server SQLDW Cosmos DB PostgreSQL MySQL
Supported Yes Yes Yes Yes Yes Yes

Which environments does Data API builder support?

On-Prem Azure AWS GCP Other
Supported Yes Yes Yes Yes Yes

Which endpoints does Data API builder support?

REST GraphQL MCP
Supported Yes Yes Yes

Getting started

Use the Getting Started tutorial to quickly explore the core tools and concepts.

1. Install the dotnet command line

https://get.dot.net

Note

You may already have .NET installed!

The Data API builder (DAB) command line requires the .NET runtime version 8 or later.

Validate your installation

dotnet --version

2. Install the dab command line

The Data API builder (DAB) command line is cross-platform and intended for local developer use.

dotnet tool install microsoft.dataapibuilder -g

Validate your installation

dab --version

3. Create your database (example: Azure SQL database / T-SQL)

This example uses a single table for simplicity.

CREATE TABLE dbo.Todo
(
    Id INT PRIMARY KEY IDENTITY,
    Title NVARCHAR(500) NOT NULL,
    IsCompleted BIT NOT NULL DEFAULT 0
);
INSERT dbo.Todo (Title, IsCompleted)
VALUES
    ('Walk the dog', 0),
    ('Feed the fish', 0),
    ('Clean the cat', 1);

4. Prepare your connection string

Data API builder (DAB) supports .env files for testing process-level environment variables.

PowerShell (Windows)

echo "my-connection-string=$env:database_connection_string" > .env

cmd.exe (Windows)

echo my-connection-string=%database_connection_string% > .env

bash (macOS/Linux)

echo "my-connection-string=$database_connection_string" > .env

Resulting .env file

The file .env is automatically created through this process. These are the resulting contents:

"my-connection-string=$env:database_connection_string" 

Note

Be sure and replace database_connection_string with your actual database connection string.

Important

Adding .env to your .gitignore file will help ensure your secrets are not added to source control.

5. Create your initial configuration file

Data API builder (DAB) requires a JSON configuration file. Use dab --help for syntax options.

dab init
  --database-type mssql
  --connection-string "@env('my-connection-string')"
  --host-mode development

Note

Including --host-mode development enables Swagger for REST and Nitro for GraphQL.

Resulting configuration

The file dab-config.json is automatically created through this process. These are the resulting contents:

{
  "$schema": "https://github.com/Azure/data-api-builder/releases/download/v1.5.56/dab.draft.schema.json",
  "data-source": {
    "database-type": "mssql",
    "connection-string": "@env('my-connection-string')",
    "options": {
      "set-session-context": false
    }
  },
  "runtime": {
    "rest": {
      "enabled": true,
      "path": "/api",
      "request-body-strict": true
    },
    "graphql": {
      "enabled": true,
      "path": "/graphql",
      "allow-introspection": true
    },
    "host": {
      "cors": {
        "origins": [],
        "allow-credentials": false
      },
      "authentication": {
        "provider": "AppService"
      },
      "mode": "development"
    }
  },
  "entities": { }
}

6. Add your table to the configuration

dab add Todo
  --source "dbo.Todo"
  --permissions "anonymous:*"

Note

DAB supports tables, views, and stored procedures. When the type is not specified, the default is table.

Resulting configuration

The entities section of the configuration is no longer empty:

{
  "entities": {
    "Todo": {
      "source": {
        "object": "dbo.Todo",
        "type": "table"
      },
      "graphql": {
        "enabled": true,
        "type": {
          "singular": "Todo",
          "plural": "Todos"
        }
      },
      "rest": {
        "enabled": true
      },
      "permissions": [
        {
          "role": "anonymous",
          "actions": [
            {
              "action": "*"
            }
          ]
        }
      ]
    }
  }
}

7. Run Data API builder

In production, DAB runs in a container. In development, it’s locally self-hosted.

dab start

Important

The DAB CLI assumes your configuration file is called dab-config.json and is in the local folder.

8. Access your data!

By default, DAB enables both REST and GraphQL.

GET http://localhost:5000/api/Todo

Note

Change the URL to match your port if it is different.

Other things you should try

  • DAB’s Health endpoint: http://localhost:5000/health
  • DAB’s Swagger UI: http://localhost:5000/swagger
  • DAB’s Nitro UI: http://localhost:5000/graphql

How does it work?

DAB dynamically creates endpoints and translates requests to SQL, returning JSON.

sequenceDiagram
  actor Client as Client
  participant Endpoint as Endpoint
  participant QueryBuilder as QueryBuilder
  participant DB as Database

  %% Initialization / Warming up section (light grey)
  rect rgba(120,120,120,0.10)
    Endpoint -->>+ Endpoint: Read Config
    Endpoint ->> DB: Query Metadata
    DB -->> Endpoint: Metadata Response
    Endpoint ->>- Endpoint: Start Engine
  end

  %% Request/Response section (very light purple)
  rect rgba(180,150,255,0.11)
    Client ->>+ Endpoint: HTTP Request
      Endpoint ->> Endpoint: Authorize
    Endpoint ->> QueryBuilder: Invoke
    QueryBuilder -->> Endpoint: SQL Query
      Endpoint ->> DB: Submit Query
      DB -->> Endpoint: Data Response
    Endpoint -->>- Client: HTTP Response
  end
Loading

Additional resources

  • Online Documentation
  • Official Samples
  • Known Issues
  • Feature Roadmap

References

  • Microsoft REST API Guidelines
  • Microsoft Azure REST API Guidelines
  • GraphQL Specification

How to contribute

To contribute, see these documents:

  • Code of Conduct
  • Security
  • Contributing
  • MIT License

Third-party component notice

Nitro (formerly Banana Cake Pop by ChilliCream, Inc.) may optionally store work in its cloud service via your ChilliCream account. Microsoft is not affiliated with or endorsing this service. Use at your discretion.

Trademarks

This project may use trademarks or logos. Use of Microsoft trademarks must follow Microsoft’s Trademark & Brand Guidelines. Use of third-party marks is subject to their policies.

About

Data API builder provides modern REST, GraphQL endpoints and MCP tools to your Azure Databases and on-prem stores.

aka.ms/dab/docs

Topics

apiazuredatabasegraphqlhacktoberfestmcpmcp-servermicrosoftrest

Resources

Readme
MIT license

Code of conduct

Code of conduct

Contributing

Contributing

Security policy

Security policy
Activity
Custom properties

Stars

1.5k stars

Watchers

50 watching

Forks

387 forks
Report repository

Releases

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.