--- title: 'Schemas als Quelle' description: 'Welche tibi-types-Schemas wofür gelten und wie du sie liest.' --- import { Aside, Tabs, TabItem } from '@astrojs/starlight/components'; Deine `api/*.yml`-Dateien sind durch JSON-Schemas geprüft. Die Schemas liegen in `tibi-types/schemas/config/`. Jede YML-Datei verweist oben per `$schema`-Zeile auf ihr Schema. ## Schema-Liste Das Verzeichnis enthält 16 Dateien (nicht 15, wie ältere Docs behaupten): | Schema | Gilt für | Pflichtfelder | | --- | --- | --- | | `project.schema.json` | `api/config.yml` | `namespace` | | `collection.schema.json` | `api/collections/*.yml` | `name`, `permissions` | | `field.schema.json` | einzelnes Feld | Typ-abhängig | | `field-list.schema.json` | Feld-Listen | — | | `field-meta.schema.json` | `meta:` an Feldern | keine (alle optional) | | `collection-meta.schema.json` | `meta:` an Collections | keine (alle optional) | | `permissions.schema.json` | `permissions:`-Block | `public`, `user` | | `hooks.schema.json` | `hooks:`-Block | keine (`get`, `post`, `put`, `delete`, `audit` optional) | | `job.schema.json` | Jobs in `config.yml` | `type`, `file` | | `action.schema.json` | Actions in `config.yml` | `name` | | `asset.schema.json` | Assets in `config.yml` | `name`, `path` | | `image-filter.schema.json` | `imageFilter:` an Collections | — | | `projections.schema.json` | `projections:`-Block | — | | `snapshot.schema.json` | Snapshots in `config.yml` | `name` | | `openapi.schema.json` | OpenAPI-Metadaten je Collection | keine | | `defs.schema.json` | nur `$ref`-Bausteine, kein eigenes Ziel | — | ## Lesart ```yaml title="api/collections/content.yml" # yaml-language-server: $schema=../../tibi-types/schemas/config/collection.schema.json name: content permissions: public: methods: get: true ``` Der Editor prüft live gegen das Schema. Tippfehler in Schlüsseln meldet er sofort. Das Schema prüft die **Form**. Ob der Server die Werte so versteht, steht im Code: - `collection.schema.json` verlangt `permissions` — was `public` und `user` dürfen, entscheidet `internal/models/permission.go` im tibi-server. - `field.schema.json` kennt Typen wie `string`, `number`, `date` — was davon wirklich validiert wird, steht in `internal/controller/validator.go`. - `project.schema.json` kennt `admin.tokens` — was diese Tokens dürfen, steht in `internal/config/admin_token.go`. ## Text-Diagramm: Wo was geprüft wird ```text title="Prüfebenen im Überblick" api/config.yml ──$schema──▶ project.schema.json (Form) │ ▼ tibi-server beim Reload (Bedeutung) ├── permission.go → wer darf was? ├── validator.go → ist der Datensatz gültig? └── admin_token.go → welches Token gilt wofür? ``` ## Nächste Schritte - Lege ein neues Projekt an: Einstieg Neues Projekt. - Schlage einen Hook-Kontext nach: Hook-Kontexte. - Verstehe Fehlermeldungen: Fehlerbilder. Verifiziert am 4c55f82 2026-10-12 (tibi-types)