Dela via


Referens för konfigurationsschema för Data API Builder

Data API Builder kräver minst en konfigurationsfil för att köras. Den här JSON-baserade filen definierar din API-konfiguration, från miljöinställningar till entitetsdefinitioner. Den börjar med en $schema egenskap som aktiverar schemaverifiering för resten av filen.

Egenskaper på den översta nivån

Property Description
$schema URI för JSON-schemat för den här konfigurationen.
datakälla Objekt som innehåller inställningar för databasanslutning.
data-source-files Matris med andra konfigurationsfilsökvägar.
runtime Objekt som konfigurerar körningsbeteenden.
entities Objekt som definierar alla entiteter som exponeras via REST eller GraphQL.
autoentiteter Objekt som definierar mönsterbaserade regler som automatiskt exponerar matchande databasobjekt som entiteter (endast MSSQL).
azure-key-vault Azure Key Vault-konfiguration för hemlig hantering.

Egenskaper för datakälla

Property Description
datakälla Objekt som innehåller inställningar för databasanslutning.
data-source.database-type Databastyp som används i serverdelen (mssql, postgresql, mysql, cosmosdb_nosql, cosmosdb_postgresql).
data-source.connection-string Anslutningssträng för den valda databastypen.
data-source.options Databasspecifika alternativ och avancerade inställningar.
data-source.health Konfiguration av hälsokontroll för datakällan.
data-source-files Matris med andra konfigurationsfilsökvägar.

Körningsegenskaper

Property Description
runtime Objekt som konfigurerar körningsbeteenden.
runtime.pagination Sidnumreringsinställningar för API-svar.
runtime.rest Global konfiguration för REST API.
runtime.graphql Global konfiguration av GraphQL API.
runtime.cache Konfiguration av cachelagring av globala svar.
runtime.compression Http-svarskomprimeringskonfiguration.
runtime.mcp Global konfiguration av Model Context Protocol (MCP).
runtime.telemetry Konfiguration av telemetri, loggning och övervakning.
runtime.health Konfiguration av global hälsokontroll.

Egenskaper för entiteter

Property Description
entities Objekt som definierar alla entiteter som exponeras via REST eller GraphQL.
entities.entity-name.source Information om databaskällan för entiteten.
entities.entity-name.rest REST API-konfiguration för entiteten.
entities.entity-name.graphql GraphQL API-konfiguration för entiteten.
entities.entity-name.permissions Behörigheter och åtkomstkontroll för entiteten.
entities.entity-name.relationships Relationer till andra entiteter.
entities.entity-name.cache Cachelagringskonfiguration på entitetsnivå.
entities.entity-name.health Konfiguration av hälsokontroll på entitetsnivå.
entities.entity-name.mcp MCP-konfiguration på entitetsnivå.
entities.entity-name.fields Fältmetadata, alias och primärnyckelbeteckningar.
entities.entity-name.description Beskrivning av entitet som kan läsas av människor.

Schema

Parent Property Type Required Default
$root $schema string ✔️ Ja None

Varje konfigurationsfil börjar med en $schema egenskap som anger JSON-schemat för validering.

Format

{
  "$schema": <string>
}

Example

{
  "$schema": "https://github.com/Azure/data-api-builder/releases/latest/download/dab.draft.schema.json"
}

Versioning

Schemafiler är tillgängliga på specifika URL:er, vilket säkerställer att du kan använda rätt version eller det senaste tillgängliga schemat.

https://github.com/Azure/data-api-builder/releases/download/<VERSION>-<suffix>/dab.draft.schema.json

Ersätt VERSION-suffix med den version du vill ha.

https://github.com/Azure/data-api-builder/releases/download/v0.3.7-alpha/dab.draft.schema.json

Datakällans filer

Parent Property Type Required Default
$root data-source-files strängmatris ❌ Nej None

Data API Builder har stöd för flera konfigurationsfiler, där en har angetts som inställningarna för filhantering runtime på den översta nivån. Alla konfigurationer delar samma JSON-schema, vilket tillåter runtime inställningar i alla filer eller filer utan fel. Dela entiteter för bättre organisation.

Diagram över flera konfigurationsfiler som refereras till som en matris i en enda konfigurationsfil.

Format

{
  "data-source-files": [ "<string>" ]
}

Flera konfigurationsregler

  • Varje konfigurationsfil måste innehålla egenskapen data-source.
  • Varje konfigurationsfil måste innehålla entities egenskapen (eller autoentities).
  • Konfigurationen på den översta nivån måste innehålla runtime.
  • Underordnade konfigurationer kan innehålla runtime, men Data API Builder ignorerar det.
  • Underordnade konfigurationsfiler kan innehålla egna underordnade filer.
  • Konfigurationsfiler kan ordnas i undermappar.
  • Entitetsnamn måste vara unika för alla konfigurationsfiler.
  • Relationer mellan entiteter i olika konfigurationsfiler stöds inte.

Examples

{
  "data-source-files": [
    "dab-config-2.json",
    "my-folder/dab-config-3.json",
    "my-folder/my-other-folder/dab-config-4.json"
  ]
}

Autoentiteter

Parent Property Type Required Default
$root autoentities objekt ❌ Nej None

Avsnittet autoentities definierar mönsterbaserade regler som automatiskt exponerar matchande databasobjekt som DAB-entiteter vid start. Varje nyckel i objektet är en namngiven definition som innehåller mönster, en mall och behörigheter.

Viktigt!

Automatiska entiteter stöder för närvarande endast MSSQL-datakällor .

När autoentities är närvarande krävs inte längre avsnittet entities . Konfigurationsschemat tillåter antingen autoentities eller entities (eller båda). Om båda finns har explicit definierade entiteter företräde framför automatiska entiteter som matchar med samma namn.

Format

{
  "autoentities": {
    "<definition-name>": {
      "patterns": {
        "include": [ "<string>" ],
        "exclude": [ "<string>" ],
        "name": "<string>"
      },
      "template": {
        "mcp": { "dml-tools": <boolean> },
        "rest": { "enabled": <boolean> },
        "graphql": { "enabled": <boolean> },
        "health": { "enabled": <boolean> },
        "cache": {
          "enabled": <boolean>,
          "ttl-seconds": <integer>,
          "level": "<string>"
        }
      },
      "permissions": [
        {
          "role": "<string>",
          "actions": [ { "action": "<string>" } ]
        }
      ]
    }
  }
}

Egenskaper

Property Type Required Default Description
patterns objekt ✔️ Ja None Definierar inkluderar, exkluderar och namngivningsregler.
patterns.include strängmatris ❌ Nej ["%.%"] MSSQL-mönster LIKE för objekt som ska inkluderas.
patterns.exclude strängmatris ❌ Nej null MSSQL-mönster LIKE för objekt som ska undantas.
patterns.name string ❌ Nej "{object}" Interpoleringsmönster med hjälp av {schema} och {object}.
template objekt ❌ Nej None Standardkonfiguration som tillämpas på alla matchade entiteter.
template.mcp objekt ❌ Nej None MCP-inställningar för matchade entiteter.
template.mcp.dml-tools booleskt ❌ Nej true Aktivera verktyg för MCP-datamanipuleringsspråk (DML).
template.rest objekt ❌ Nej None REST-inställningar för matchade entiteter.
template.rest.enabled booleskt ❌ Nej true Aktivera REST-slutpunkter.
template.graphql objekt ❌ Nej None GraphQL-inställningar för matchade entiteter.
template.graphql.enabled booleskt ❌ Nej true Aktivera GraphQL.
template.health objekt ❌ Nej None Hälsokontrollinställningar för matchade entiteter.
template.health.enabled booleskt ❌ Nej false Aktivera hälsokontroller.
template.cache objekt ❌ Nej None Cacheinställningar för matchade entiteter.
template.cache.enabled booleskt ❌ Nej false Aktivera cachelagring av svar.
template.cache.ttl-seconds integer ❌ Nej null Cachelagrade time-to-live i sekunder.
template.cache.level string ❌ Nej "L1L2" Cachenivå.
permissions array ❌ Nej None Behörigheter som tillämpas på alla matchade entiteter.

Example

{
  "autoentities": {
    "my-def": {
      "patterns": {
        "include": [ "dbo.%" ],
        "exclude": [ "dbo.internal%" ],
        "name": "{schema}_{object}"
      },
      "template": {
        "rest": { "enabled": true },
        "graphql": { "enabled": true },
        "cache": { "enabled": true, "ttl-seconds": 30, "level": "l1l2" }
      },
      "permissions": [
        { "role": "anonymous", "actions": [ { "action": "read" } ] }
      ]
    }
  }
}

Med den här konfigurationen exponeras varje tabell och vy i dbo schemat (förutom de matchande dbo.internal%) automatiskt som en DAB-entitet. Varje entitet namnges med hjälp av {schema}_{object} mönstret (till exempel dbo_Products), har REST och GraphQL aktiverat, använder cachelagring med en 30-sekunders TTL (time-to-live) och ger read åtkomst till anonymous rollen.

Tip

Använd dab auto-config för att skapa definitioner av automatiska entiteter från CLI och dab auto-config-simulate för att förhandsgranska vilka objekt som matchar innan du genomför ändringar. Mer information finns i nyheter i version 2.0.

Azure 密钥保管库

Parent Property Type Required Default
$root azure-key-vault objekt ❌ Nej None

Konfigurerar Azure Key Vault-integrering för hantering av hemligheter. I förekommande fall krävs egenskapen endpoint .

Kapslade egenskaper

Parent Property Type Required Default
azure-key-vault endpoint string ✔️ Ja None
azure-key-vault retry-policy objekt ❌ Nej None
Parent Property Type Required Default
azure-key-vault.retry-policy mode uppräkning (fixed | exponential) ❌ Nej "exponential"
azure-key-vault.retry-policy max-count integer ❌ Nej 3
azure-key-vault.retry-policy delay-seconds integer ❌ Nej 1
azure-key-vault.retry-policy max-delay-seconds integer ❌ Nej 60
azure-key-vault.retry-policy network-timeout-seconds integer ❌ Nej 60

Om du vill referera till hemligheter som lagras i Azure Key Vault använder du @akv() funktionen i dina konfigurationsvärden. Data API Builder löser dessa referenser vid start med hjälp av den konfigurerade slutpunkten.

Format

{
  "azure-key-vault": {
    "endpoint": "<string>",
    "retry-policy": {
      "mode": <"exponential"> (default) | <"fixed">,
      "max-count": <integer; default: 3>,
      "delay-seconds": <integer; default: 1>,
      "max-delay-seconds": <integer; default: 60>,
      "network-timeout-seconds": <integer; default: 60>
    }
  }
}

Example

{
  "azure-key-vault": {
    "endpoint": "https://my-vault.vault.azure.net/",
    "retry-policy": {
      "mode": "exponential",
      "max-count": 5,
      "delay-seconds": 2,
      "max-delay-seconds": 120,
      "network-timeout-seconds": 90
    }
  },
  "data-source": {
    "database-type": "mssql",
    "connection-string": "@akv('sql-connection-string')"
  }
}