Referenční informace ke schématu konfigurace tvůrce rozhraní Data API

Tvůrce rozhraní DATA API vyžaduje ke spuštění aspoň jeden konfigurační soubor. Tento soubor založený na FORMÁTU JSON definuje nastavení rozhraní API, od nastavení prostředí po definice entit. $schema Začíná vlastností, která umožňuje ověření schématu pro zbytek souboru.

Vlastnosti nejvyšší úrovně

Property Description
$schema Identifikátor URI schématu JSON pro tuto konfiguraci
zdroj dat Objekt obsahující nastavení připojení k databázi
soubory zdroje dat Pole dalších cest ke konfiguračním souborům
runtime Objekt konfiguruje chování modulu runtime.
entities Objekt definující všechny entity vystavené přes REST nebo GraphQL
autoentity Objekt definující pravidla založená na vzorech, která automaticky zpřístupňují odpovídající databázové objekty jako entity (pouze MSSQL).
azure-key-vault Konfigurace služby Azure Key Vault pro správu tajných kódů

Vlastnosti zdroje dat

Property Description
zdroj dat Objekt obsahující nastavení připojení k databázi
data-source.database-type Typ databáze používaný v back-endu (mssql, postgresql, mysql, cosmosdb_nosql, cosmosdb_postgresql).
data-source.connection-string Připojovací řetězec pro vybraný typ databáze.
data-source.options Možnosti specifické pro databázi a upřesňující nastavení
data-source.health Konfigurace kontroly stavu pro zdroj dat
soubory zdroje dat Pole dalších cest ke konfiguračním souborům

Vlastnosti modulu runtime

Property Description
runtime Objekt konfiguruje chování modulu runtime.
runtime.pagination Nastavení stránkování pro odpovědi rozhraní API
runtime.rest Globální konfigurace rozhraní REST API
runtime.graphql Globální konfigurace rozhraní GraphQL API
runtime.cache Globální konfigurace ukládání odpovědí do mezipaměti
runtime.compression Konfigurace komprese odpovědí HTTP
runtime.mcp Globální konfigurace protokolu MCP (Model Context Protocol).
runtime.telemetry Konfigurace telemetrie, protokolování a monitorování
runtime.health Konfigurace globální kontroly stavu

Vlastnosti entit

Property Description
entities Objekt definující všechny entity vystavené přes REST nebo GraphQL
entities.entity-name.source Podrobnosti o zdroji databáze pro entitu
entities.entity-name.rest Konfigurace rozhraní REST API pro entitu
entities.entity-name.graphql Konfigurace rozhraní GraphQL API pro entitu
entities.entity-name.permissions Oprávnění a řízení přístupu pro entitu
entities.entity-name.relationships Vztahy s jinými entitami
entities.entity-name.cache Konfigurace ukládání do mezipaměti na úrovni entity
entities.entity-name.health Konfigurace kontroly stavu na úrovni entit
entities.entity-name.mcp Konfigurace MCP na úrovni entity
entities.entity-name.fields Metadata polí, aliasy a označení primárního klíče
entities.entity-name.description Popis entity čitelný pro člověka

Schema

Parent Property Typ Required Default
$root $schema řetězec ✔️ Ano None

Každý konfigurační soubor začíná $schema vlastností a určuje schéma JSON pro ověření.

Format

{
  "$schema": <string>
}

Example

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

Tip

Nejnovější schéma je vždy k dispozici na adrese https://github.com/Azure/data-api-builder/releases/latest/download/dab.draft.schema.json.

Versioning

Soubory schématu jsou k dispozici na konkrétních adresách URL a zajišťují, že můžete použít správnou verzi nebo nejnovější dostupné schéma.

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

Nahraďte VERSION-suffix požadovanou verzí.

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

Soubory zdroje dat

Parent Property Typ Required Default
$root data-source-files Řetězcové pole ❌ Ne None

Tvůrce rozhraní Data API podporuje více konfiguračních souborů s jedním určeným jako nastavení správy runtime souborů nejvyšší úrovně. Všechny konfigurace sdílejí stejné schéma JSON, což umožňuje runtime nastavení v jakémkoli souboru nebo v každém souboru bez chyby. Rozdělte entity pro lepší organizaci.

Diagram více konfiguračních souborů odkazovaných jako pole v rámci jednoho konfiguračního souboru

Format

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

Více pravidel konfigurace

  • Každý konfigurační soubor musí obsahovat vlastnost data-source.
  • Každý konfigurační soubor musí obsahovat entities vlastnost (nebo autoentities).
  • Konfigurace nejvyšší úrovně musí obsahovat runtime.
  • Podřízené konfigurace můžou zahrnovat runtime, ale Tvůrce rozhraní DATA ho ignoruje.
  • Podřízené konfigurační soubory můžou obsahovat vlastní podřízené soubory.
  • Konfigurační soubory je možné uspořádat do podsložek.
  • Názvy entit musí být jedinečné ve všech konfiguračních souborech.
  • Vztahy mezi entitami v různých konfiguračních souborech se nepodporují.

Examples

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

Automatickéenty

Parent Property Typ Required Default
$root autoentities objekt ❌ Ne None

Oddíl autoentities definuje pravidla založená na vzorech, která automaticky zpřístupňují odpovídající databázové objekty jako entity DAB při spuštění. Každý klíč v objektu je pojmenovaná definice obsahující vzory, šablonu a oprávnění.

Důležité

Automatické funkce aktuálně podporují pouze zdroje dat MSSQL .

Pokud autoentities je oddíl k dispozici, entities už není potřeba. Schéma konfigurace umožňuje buď autoentities nebo entities (nebo obojí). Pokud existují obě entity, mají explicitně definované entity přednost před automatickýmienty, které odpovídají stejnému názvu.

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>" } ]
        }
      ]
    }
  }
}

Vlastnosti

Property Typ Required Default Description
patterns objekt ✔️ Ano None Definuje pravidla zahrnutí, vyloučení a pojmenování.
patterns.include Řetězcové pole ❌ Ne ["%.%"] Vzory MSSQL LIKE pro objekty, které se mají zahrnout.
patterns.exclude Řetězcové pole ❌ Ne null Vzory MSSQL LIKE pro objekty, které se mají vyloučit.
patterns.name řetězec ❌ Ne "{schema}_{object}" Interpolační vzor používající {schema} a {object}.
template objekt ❌ Ne None Výchozí konfigurace použitá pro všechny odpovídající entity.
template.mcp objekt ❌ Ne None Nastavení MCP pro odpovídající entity
template.mcp.dml-tools Boolean ❌ Ne true Povolte nástroje jazyka DML (Data Manipulací s daty MCP).
template.rest objekt ❌ Ne None Nastavení REST pro odpovídající entity
template.rest.enabled Boolean ❌ Ne true Povolte koncové body REST.
template.graphql objekt ❌ Ne None Nastavení GraphQL pro odpovídající entity
template.graphql.enabled Boolean ❌ Ne true Povolte GraphQL.
template.health objekt ❌ Ne None Nastavení kontroly stavu pro odpovídající entity
template.health.enabled Boolean ❌ Ne true Povolte kontroly stavu.
template.cache objekt ❌ Ne None Nastavení mezipaměti pro odpovídající entity
template.cache.enabled Boolean ❌ Ne false Povolte ukládání odpovědí do mezipaměti.
template.cache.ttl-seconds integer ❌ Ne null Ukládání do mezipaměti v sekundách
template.cache.level řetězec ❌ Ne "L1L2" Úroveň mezipaměti.
permissions pole ❌ Ne None Oprávnění použitá u všech shodných entit

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" } ] }
      ]
    }
  }
}

Při této konfiguraci se každá tabulka a zobrazení ve schématu dbo (s výjimkou těch odpovídajících dbo.internal%) automaticky zveřejňují jako entita DAB. Každá entita má název pomocí {schema}_{object} vzoru (například dbo_Products), má povolený rest a GraphQL, používá ukládání do mezipaměti s 30sekundovým TTL (Time to Live) a uděluje read přístup k anonymous roli.

Tip

Slouží dab auto-config k vytváření definic autoentit z rozhraní příkazového řádku a dab auto-config-simulate k zobrazení náhledu, které objekty se shodují před potvrzením změn. Další informace najdete v novinkách ve verzi 2.0.

Azure Key Vault

Parent Property Typ Required Default
$root azure-key-vault objekt ❌ Ne None

Konfiguruje integraci služby Azure Key Vault pro správu tajných kódů. Při přítomnosti je vlastnost povinná endpoint .

Vnořené vlastnosti

Parent Property Typ Required Default
azure-key-vault endpoint řetězec ✔️ Ano None
azure-key-vault retry-policy objekt ❌ Ne None
Parent Property Typ Required Default
azure-key-vault.retry-policy mode enum (fixed | exponential) ❌ Ne "exponential"
azure-key-vault.retry-policy max-count integer ❌ Ne 3
azure-key-vault.retry-policy delay-seconds integer ❌ Ne 1
azure-key-vault.retry-policy max-delay-seconds integer ❌ Ne 60
azure-key-vault.retry-policy network-timeout-seconds integer ❌ Ne 60

Pokud chcete odkazovat na tajné kódy uložené ve službě @akv() Azure Key Vault, použijte funkci v hodnotách konfigurace. Tvůrce rozhraní Data API tyto odkazy vyřeší při spuštění pomocí nakonfigurovaného koncového bodu.

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')"
  }
}