Skip to content
This repository was archived by the owner on Nov 2, 2023. It is now read-only.

Commit 6a81804

Browse files
committed
Add Draft 6 migration FAQs to website
1 parent f6fa7a8 commit 6a81804

5 files changed

+60
-60
lines changed

documentation.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ layout: page
33
title: Specification
44
---
55

6-
The latest Internet-Drafts at the IETF are the draft-wright-json-schema\*-01 documents, which correspond to the draft-06 meta-schemas. These were published on 2017-04-15. (Due to a change in authorship the I-D numbering was reset with the previous draft). The specification is split into three parts, Core, Validation, and Hyper-Schema:
6+
The latest Internet-Drafts at the IETF are the draft-wright-json-schema\*-01 documents, which correspond to the draft-06 meta-schemas. These were published on 2017-04-15. (Due to a change in authorship the I-D numbering was reset with the previous draft). Please see the [release notes](draft-06/README.md) for more information on this release and information on migrating from previous drafts.
7+
8+
The specification is split into three parts, Core, Validation, and Hyper-Schema:
79

810
|--------------------------------------------------------------|-------------------------------------------------|
911
| [JSON Schema Core](latest/json-schema-core.html) | defines the basic foundation of JSON Schema |

draft-05/README.md

+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
---
2+
layout: default
3+
---
4+
15
## Explanation for lack of draft-05 meta-schemas
26

37
"Draft-05" in the sequential meta-schema numbering would have

draft-06/README.md

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
---
2+
layout: default
3+
---
4+
5+
# Draft 6 Release Notes
6+
7+
- [JSON Schema Release FAQ](json-schema-migration-faq.md)
8+
- [JSON Hyper-Schema Release FAQ](json-hyper-schema-migration-faq.md)
9+
- **A note on draft naming and numbering:**
10+
<!-- This note should be incorporated into **specification-links.md**, but there are outstanding PR changes against that file. Leaving here to prevent merge conflicts. -->
11+
12+
IETF Internet-Drafts (I-Ds) are named with the editor's name and a sequential number which resets with each new editor. Meta-schemas are numbered sequentially. Additionally, drafts 00-03 used one document for all three current specs. Most people find it easier to remember the sequential meta-schema numbers, so those are used throughout the site.
13+
14+
For JSON Schema, the correspondences are:
15+
16+
Core/Validation IETF Drafts | Meta-Schema URI
17+
---- | ----
18+
[draft-zyp-json-schema-00](https://tools.ietf.org/html/draft-zyp-json-schema-00) | [http://json-schema.org/draft-00/schema](http://json-schema.org/draft-00/hyper-schema)
19+
[draft-zyp-json-schema-01](https://tools.ietf.org/html/draft-zyp-json-schema-01) | [http://json-schema.org/draft-01/schema](http://json-schema.org/draft-01/hyper-schema)
20+
[draft-zyp-json-schema-02](https://tools.ietf.org/html/draft-zyp-json-schema-02) | [http://json-schema.org/draft-02/schema](http://json-schema.org/draft-02/hyper-schema)
21+
[draft-zyp-json-schema-03](https://tools.ietf.org/html/draft-zyp-json-schema-03) | [http://json-schema.org/draft-03/schema](http://json-schema.org/draft-03/hyper-schema)
22+
[draft-zyp-json-schema-04](https://tools.ietf.org/html/draft-zyp-json-schema-04) and [draft-fge-json-schema-validation-00](https://tools.ietf.org/html/draft-fge-json-schema-validation-00) | [http://json-schema.org/draft-04/hyper-schema](http://json-schema.org/draft-04/schema)
23+
[draft-wright-json-schema-00](https://tools.ietf.org/html/draft-wright-json-schema-00) and [draft-wright-json-schema-validation-00](https://tools.ietf.org/html/draft-wright-json-schema-validation-00) | draft-05; [not published](../draft-05/README.md)
24+
[draft-wright-json-schema-01](https://tools.ietf.org/html/draft-wright-json-schema-01) and [draft-wright-json-schema-validation-01](https://tools.ietf.org/html/draft-wright-json-schema-validation-01) | [http://json-schema.org/draft-06/schema](http://json-schema.org/draft-06/hyper-schema)
25+
26+
27+
For JSON Hyper-Schema, the correspondences are:
28+
29+
Hyper-Schema IETF Draft | Hyper-Schema Meta-Schema URI
30+
---- | ----
31+
[draft-zyp-json-schema-00](https://tools.ietf.org/html/draft-zyp-json-schema-00) | [http://json-schema.org/draft-00/hyper-schema](http://json-schema.org/draft-00/hyper-schema)
32+
[draft-zyp-json-schema-01](https://tools.ietf.org/html/draft-zyp-json-schema-01) | [http://json-schema.org/draft-01/hyper-schema](http://json-schema.org/draft-01/hyper-schema)
33+
[draft-zyp-json-schema-02](https://tools.ietf.org/html/draft-zyp-json-schema-02) | [http://json-schema.org/draft-02/hyper-schema](http://json-schema.org/draft-02/hyper-schema)
34+
[draft-zyp-json-schema-03](https://tools.ietf.org/html/draft-zyp-json-schema-03) | [http://json-schema.org/draft-03/hyper-schema](http://json-schema.org/draft-03/hyper-schema)
35+
[draft-luff-json-hyper-schema-00](https://tools.ietf.org/html/draft-luff-json-hyper-schema-00) | [http://json-schema.org/draft-04/hyper-schema](http://json-schema.org/draft-04/hyper-schema)
36+
[draft-wright-json-schema-hyperschema-00](https://tools.ietf.org/html/draft-wright-json-schema-hyperschema-00) | draft-05; [not published](../draft-05/README.md)
37+
[draft-wright-json-schema-hyperschema-01](https://tools.ietf.org/html/draft-wright-json-schema-hyperschema-01) | [http://json-schema.org/draft-06/hyper-schema](http://json-schema.org/draft-06/hyper-schema)

draft-06/json-hyper-schema-migration-faq.md

+7-32
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,13 @@
1-
## FAQ for migrating from draft-luff-json-hyper-schema-00 (draft-04) to draft-wright-json-schema-hyperschema-01 (draft-06)
1+
---
2+
title: JSON Hyper-Schema Draft 6 migration FAQ
3+
layout: page
4+
---
25

3-
* [**Q: What are the incompatible changes between draft-04 and draft-06?**](#changes)
4-
* [**Q: What are key issues under consideraton for draft-07?**](#consideration)
5-
* [**Q: Why were several major changes made to Hyper-Schema just before publication?**](#publication)
6-
* [**Q: Why doesn't the spec mention or behave like HTML anymore?**](#html)
7-
* [**Q: So how do I indicate which HTTP methods are supported on a link?**](#implicit)
8-
* [**Q: No, really. How do I _explicitly_ indicate which HTTP methods are supported on a link?**](#explicit)
9-
* [**Q: If `"targetSchema"` is not the response, how do I describe responses?**](#response)
6+
FAQ for migrating from draft-luff-json-hyper-schema-00 (draft-04) to draft-wright-json-schema-hyperschema-01 (draft-06).
107

11-
## _A note on draft naming and numbering:_
8+
* TOC
9+
{:toc}
1210

13-
IETF Internet-Drafts (I-Ds) are named with the editor's name and a sequential number which resets with each new editor. Meta-schemas are numbered sequentially. Additionally, drafts 00-03 used one document for all three current specs. So, for hyper-schema, the correspondences are:
14-
15-
Hyper-Schema IETF Draft | Hyper-Schema Meta-Schema URI
16-
---- | ----
17-
[draft-zyp-json-schema-00](https://tools.ietf.org/html/draft-zyp-json-schema-00) | [http://json-schema.org/draft-00/hyper-schema#](http://json-schema.org/draft-00/hyper-schema#)
18-
[draft-zyp-json-schema-01](https://tools.ietf.org/html/draft-zyp-json-schema-01) | [http://json-schema.org/draft-01/hyper-schema#](http://json-schema.org/draft-01/hyper-schema#)
19-
[draft-zyp-json-schema-02](https://tools.ietf.org/html/draft-zyp-json-schema-02) | [http://json-schema.org/draft-02/hyper-schema#](http://json-schema.org/draft-02/hyper-schema#)
20-
[draft-zyp-json-schema-03](https://tools.ietf.org/html/draft-zyp-json-schema-03) | [http://json-schema.org/draft-03/hyper-schema#](http://json-schema.org/draft-03/hyper-schema#)
21-
[draft-luff-json-hyper-schema-00](https://tools.ietf.org/html/draft-luff-json-hyper-schema-00) | [http://json-schema.org/draft-04/hyper-schema#](http://json-schema.org/draft-04/hyper-schema#)
22-
[draft-wright-json-schema-hyperschema-00](https://tools.ietf.org/html/draft-wright-json-schema-hyperschema-00) | draft-05; [not published](https://github.com/json-schema-org/json-schema-spec/wiki/Specification-Links)
23-
[draft-wright-json-schema-hyperschema-01](https://tools.ietf.org/html/draft-wright-json-schema-hyperschema-01) | [http://json-schema.org/draft-06/hyper-schema#](http://json-schema.org/draft-06/hyper-schema#)
24-
25-
Most people find it easier to remember the sequential meta-schema numbers, so this FAQ will use those, including draft-05 for draft-wright-json-schema-hyperschema-00.
26-
27-
## Questions and Answers
28-
29-
<a id="changes"></a>
3011
### Q: What are the incompatible changes between draft-04 and draft-06?
3112

3213
Between drafts 04 and 06 we undertook a major re-examining of Hyper-Schema, which has never been as widely adopted as JSON Schema Validation.
@@ -67,7 +48,6 @@ Draft-06 clarfies this usage and provides guidance on its use with different HTT
6748

6849
However, see also [#296](https://github.com/json-schema-org/json-schema-spec/issues/296) for a proposal for hinting at "Accept-Patch", which is needed to properly use `"targetSchema"` with HTTP PATCH.
6950

70-
<a id="consideration"></a>
7151
### Q: What are key issues under consideraton for draft-07?
7252

7353
There are a number of relatively concrete proposals, although it is unlikely that all will be resolved in draft-07
@@ -92,12 +72,10 @@ Additionally, there are two further proposals for JSON Schema vocabularies which
9272
* [Documentation](https://github.com/json-schema-org/json-schema-spec/issues/136), which could take over some static API description work
9373
* [UI](https://github.com/json-schema-org/json-schema-spec/issues/67), which would deal with presentation issues for forms
9474

95-
<a id="publication"></a>
9675
### Q: Why were several major changes made to Hyper-Schema just before publication?
9776

9877
A: During final review, it became apparent that there was no consensus on how to use the spec as written. The late changes were necessary to publish a spec with unambiguous meaning, so that we could get feedback on its contents rather than differing interpretations. Originally we attempted to simply clarify what was there, but then we realized there was no agreement on what was there in the first place.
9978

100-
<a id="html"></a>
10179
### Q: Why doesn't the spec mention or behave like HTML anymore?
10280

10381
A: While there are [unresolved questions around HTML analogies](https://github.com/json-schema-org/json-schema-spec/issues/294), we came to a consensus that the existing analogies caused more harm than good, for two reasons:
@@ -120,7 +98,6 @@ Draft-05 tried to restore the draft-03 behavior of `"method"`, but feedback told
12098
We could have switched by to draft-04's `"method"` behavior, but in addition to producing more confusion from all of the back and forth, the draft-04 approach to `"method"` was not consistent with the rest of the LDO design anyway. Most notably, it caused problems with the usage of `"targetSchema"` as described above.
12199

122100

123-
<a id="implicit"></a>
124101
### Q: So how do I indicate which HTTP methods are supported on a link?
125102

126103
A: Ideally, this is implicitly conveyed by your link relation type, which is the primary indicator of semantics across machine-oriented hypermedia in general. [RFC 5988](https://tools.ietf.org/html/rfc5988) provides guidance on creating custom (a.k.a. "extension") link relations.
@@ -129,12 +106,10 @@ Several URI schemes and namespaces, such as the [UUID namespace in the `urn:` sc
129106

130107
And of course, there are ways to detect this at runtime such as HTTP's `"Allow"` response header, or attempting a method and handling a `405 Method Not Allowed` error accordingly.
131108

132-
<a id="explicit"></a>
133109
### Q: No, really. How do I _explicitly_ indicate which HTTP methods are supported on a link?
134110

135111
A: Pick a proposal such as [`"allow"`](https://github.com/json-schema-org/json-schema-spec/issues/73) or [`"usageHints"`](https://github.com/json-schema-org/json-schema-spec/issues/296) to implement as an extension keyword and let us know how it works for you. This will help us determine the right permanent solution in future drafts.
136112

137-
<a id="response"></a>
138113
### Q: If `"targetSchema"` is not the response, how do I describe responses?
139114

140115
A: You should have hyper-schemas for your various success and error responses, but connecting them to links is is more of a documentation question than a usage question: each response will indicate its own schema, so you don't need to know it in advance at runtime.

draft-06/json-schema-migration-faq.md

+9-27
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,13 @@
1-
## FAQ for migrating from zyp-04 and fge-00 (draft-04) to wright-01 (draft-06)
1+
---
2+
title: JSON Schema Draft 6 migration FAQ
3+
layout: page
4+
---
25

3-
* [**Q: What are the changes between draft-04 and draft-06?**](#changes)
4-
* [**Q: What happened to all of the discussions around re-using schemas with `"additionalProperties"`?](#addlprop)
5-
* [**Q: What are key issues under consideraton for draft-07?**](#consideration)
6+
FAQ for migrating from zyp-04 and fge-00 (draft-04) to wright-01 (draft-06).
67

7-
## _A note on draft naming and numbering:_
8+
* TOC
9+
{:toc}
810

9-
IETF Internet-Drafts (I-Ds) are named with the editor's name and a sequential number which resets with each new editor. Meta-schemas are numbered sequentially. Additionally, drafts 00-03 used one document for all three current specs. So, for core and validation, the correspondences are:
10-
11-
Core/Validation IETF Drafts | Meta-Schema URI
12-
---- | ----
13-
[draft-zyp-json-schema-00](https://tools.ietf.org/html/draft-zyp-json-schema-00) | [http://json-schema.org/draft-00/schema#](http://json-schema.org/draft-00/hyper-schema#)
14-
[draft-zyp-json-schema-01](https://tools.ietf.org/html/draft-zyp-json-schema-01) | [http://json-schema.org/draft-01/schema#](http://json-schema.org/draft-01/hyper-schema#)
15-
[draft-zyp-json-schema-02](https://tools.ietf.org/html/draft-zyp-json-schema-02) | [http://json-schema.org/draft-02/schema#](http://json-schema.org/draft-02/hyper-schema#)
16-
[draft-zyp-json-schema-03](https://tools.ietf.org/html/draft-zyp-json-schema-03) | [http://json-schema.org/draft-03/schema#](http://json-schema.org/draft-03/hyper-schema#)
17-
[draft-zyp-json-schema-04](https://tools.ietf.org/html/draft-zyp-json-schema-04) and [draft-fge-json-schema-validation-00](https://tools.ietf.org/html/draft-fge-json-schema-validation-00) | [http://json-schema.org/draft-04/hyper-schema#](http://json-schema.org/draft-04/schema#)
18-
[draft-wright-json-schema-00](https://tools.ietf.org/html/draft-wright-json-schema-00) and [draft-wright-json-schema-validation-00](https://tools.ietf.org/html/draft-wright-json-schema-validation-00) | draft-05; [not published](https://github.com/json-schema-org/json-schema-spec/wiki/Specification-Links)
19-
[draft-wright-json-schema-01](https://tools.ietf.org/html/draft-wright-json-schema-01) and [draft-wright-json-schema-validation-01](https://tools.ietf.org/html/draft-wright-json-schema-validation-01) | [http://json-schema.org/draft-06/schema#](http://json-schema.org/draft-06/hyper-schema#)
20-
21-
Most people find it easier to remember the sequential meta-schema numbers, so this FAQ will use those, including draft-05 for draft-wright-json-schema-hyperschema-00.
22-
23-
## Questions and Answers
24-
25-
<a id="changes"></a>
2611
### Q: What are the changes between draft-04 and draft-06?
2712

2813
#### Backwards-incompatible changes
@@ -59,21 +44,19 @@ When a relative path, fragment, or any other style of URI Reference (per RFC 398
5944

6045
Implementations offering a translation from draft-04 to draft-06 may want to offer an option to convert `"uri"` formats to `"uri-reference"`, although any such option should be disable by default for strict conformance.
6146

62-
<a id="draft05"></a>
6347
### Q: What happened to draft-05?
6448

6549
The draft-05 core and validation specifications were intended to be more clear and readible rewrites of draft-04, to give us a strong base for draft-06 changes. Implementors should **not** implement or advertise support for "draft-05".
6650

6751
Implementations that supported "draft-05" by implementing proposals from right after the publication of draft-04 should either remove that support or give it a different name to avoid confusion.
6852

69-
<a id="addlprop"></a>
7053
### Q: What happened to all of the discussions around re-using schemas with `"additionalProperties"`?
7154

7255
There are several competing proposals for making the re-use of schemas that set `"additionalProperties"` to something other than `true`. Most people specifically care about the case where it is `false`, but the same behavior occurs with any non-`true` value.
7356

7457
The difficulty is that if you attempt to do this:
7558

76-
```JSON
59+
```json
7760
{
7861
"type": "object",
7962
"allOf": [
@@ -103,7 +86,7 @@ So in this example, if the instance has a "bar" property, it will fail the first
10386

10487
A workaround is available with the new `"propertyNames"` keyword:
10588

106-
```JSON
89+
```json
10790
{
10891
"type": "object",
10992
"allOf": [
@@ -141,7 +124,6 @@ It does require duplicating the names, and the awkward use of both an `"allOf"`
141124

142125
_*TODO:* Link to all of the discussions about other use cases and proposed solutions._
143126

144-
<a id="consideration"></a>
145127
### Q: What are key issues under consideraton for draft-07?
146128

147129
We are just starting to consider what to prioritize for the next draft.

0 commit comments

Comments
 (0)