$id : URI Reference

$id

URI Reference

This keyword declares an identifier for the schema resource.

Value This keyword must be set to an absolute URI or a relative reference as defined by RFC 3986 without a fragment Hint: Use the jsonschema metaschema and jsonschema lint commands to catch keywords set to invalid values
Kind Identifier
Applies To Any
Base Dialect 2020-12
Changed In 2019-09
Introduced In Draft 6
Vocabulary Core
Specification https://json-schema.org/draft/2020-12/json-schema-core.html#section-8.2.1
Metaschema https://json-schema.org/draft/2020-12/meta/core
Official Tests draft2020-12/optional/id.json
Default None
Annotation None
Affected By None
Affects
Also See

The $id keyword explicitly turns a schema into a schema resource (a schema that is associated with a URI). Relative URIs are resolved against the current base URI, which is either the closest parent $id keyword (applicable in the case of compound schemas), or the base URI as determined by the context on which the schema is declared (i.e. serving a schema over HTTP may implicitly award it such URL as the base).

Note that you cannot set this keyword to a URI that contains a fragment identifier. Instead, fragment identifiers must be set with the $anchor keyword.

Examples

A schema that declares a potentially resolvable HTTP absolute URL identifier Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://example.com/schemas/even-number.json",
  "type": "number",
  "multipleOf": 2
}
A schema that declares a non-resolvable Tag URI identifier Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "tag:example.com,2025:even-number",
  "type": "number",
  "multipleOf": 2
}
A schema that declares a non-resolvable URN example identifier Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:example:even-number",
  "type": "number",
  "multipleOf": 2
}
A compound schema that declares relative and absolute nested URIs Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$comment": "This is the root schema resource",
  "$id": "https://example.com/schemas/root.json",
  "properties": {
    "foo": {
      "$comment": "The resolved URI of this nested schema resource is https://example.com/schemas/foo.json",
      "$id": "foo.json",
    },
    "bar": {
      "$comment": "The resolved URI of this nested schema resource is https://example.com/schemas/bar.json",
      "$id": "/schemas/bar.json"
    },
    "baz": {
      "$comment": "The resolved URI of this nested schema resource is https://absolute.example/baz.json",
      "$id": "https://absolute.example/baz.json",
      "items": {
        "$comment": "The resolved URI of this nested schema resource is https://absolute.example/deep",
        "$id": "deep"
      }
    }
  }
}