# Declare a metadata schema

> Declares what metadata must satisfy for one resource type under one selector.

Declares what `metadata` must satisfy for one resource type under one selector. A document is selected by `path_prefix`, matched on a path boundary: `/reports` covers `/reports/q1.txt` and never `/reports-archive/q1.txt`.

The schema is compiled here, so one JSON Schema cannot parse is refused rather than stored — a stored one would be a rule that silently governs nothing. One selector has one schema per resource type; a second declaration of the same one is `409 NAME_CONFLICT`. The reserved root `/.system` cannot be governed: a platform-written document carries no caller metadata.

  Request

<RequestSchema
  {...require("./create-metadata-schema.RequestSchema.json")}
>

<StatusCodes
  {...require("./create-metadata-schema.StatusCodes.json")}
>
