It is an identifier keyword that can only be used to create plain name fragments. Its use is dependent on the presence of the property. A same origin policy?
Similarly, a reference target under a known keyword, for which the value is known not to be a schema, results in undefined behavior in order to avoid burdening implementations with the need to detect such targets. The current URI for the corresponding meta-schema is: While the "$" prefix is not formally reserved for the Core vocabulary, it is RECOMMENDED that extension keywords (in vocabularies or otherwise) begin with a character other than "$" to avoid possible future collisions. Since symbols are listed in decreasing order of significance, the JSON Schema library name/version should precede the more generic HTTP library name (if any). JSON Schema implementations are not expected to make use of the collected information on behalf of applications. This should not be confused with the core data model types defined here. For errors, the specific wording for the message is not defined by this specification. However, meta-schemas should not contradict any vocabularies that they declare, such as by requiring a different JSON type than the vocabulary expects. This vocabulary is essential to the functioning of the "application/schema+json" media type, and is used to bootstrap the loading of other vocabularies.
Implementations MAY deviate from this as supported by their specific languages and platforms, however it is RECOMMENDED that the output be convertible to the JSON format defined herein via serialization or other means. The use of URIs to identify remote schemas does not necessarily mean anything is downloaded, but instead JSON Schema implementations SHOULD understand ahead of time which schemas they will be using, and the URIs that identify them.
If "items" is an array of schemas, validation succeeds if each element of the instance validates against the schema at the same position, if any. Implementations SHOULD specify in their documentation which formats they support.
An instance validates successfully against this keyword if it validates successfully against all schemas defined by this keyword's value. Individual JSON Schema vocabularies are liable to also have their own security considerations. When additional information about the result is required, the output MUST also contain "errors" or "annotations" as described below. The mechanism for identifying such referenced schemas is defined by the keyword. This keyword specifies subschemas that are evaluated if the instance is an object and contains a certain property. Omitting this keyword has the same assertion behavior as an empty object.
This has some implications for the case where "$recursiveAnchor" is only allowed in the root schema but processing begins in a subschema. This requests an application/json representation that conforms to at least one of the identified schemas. The value of "unevaluatedProperties" MUST be a valid JSON Schema. Typically, a meta-schema will specify a set of vocabularies, and validate schemas that conform to the syntax of those vocabularies. While custom identifier keywords are possible, vocabulary designers should take care not to disrupt the functioning of core keywords. For example, if an "anyOf" keyword contains five sub-schemas, and the second one passes, there is no need to check the other three. For example, the "$recursiveAnchor" keyword in this specification limits its URI resolution effects to the matching "$recursiveRef" keyword, leaving "$ref" undisturbed. If "items" is a schema, validation succeeds if all elements in the array successfully validate against that schema. These features are useful in content negotiation and in calculating URIs for specific locations within an instance, respectively. JSON Schema is defined to be platform-independent. Servers MUST ensure that malicious parties can't change the functionality of existing schemas by uploading a schema with a pre-existing or very similar "$id". Implementations MUST NOT parse or otherwise take action based on "$comment" contents. This is to ensure that all possible annotations are collected. This means that "properties", "patternProperties", "additionalProperties", and all in-place applicators MUST be evaluated before this keyword can be evaluated.
If you are a schema author and want to provide even more customized completion proposals, you can also specify snippets in the schema.
Applicators apply subschemas to parts of the instance and combine their results.