Skip to content

Commit e67e712

Browse files
committed
Guidance on content negotiation
...and a few other minor wording improvements around HTTP usage.
1 parent 0c48470 commit e67e712

File tree

1 file changed

+31
-5
lines changed

1 file changed

+31
-5
lines changed

jsonschema-hyperschema.xml

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1297,11 +1297,10 @@ for varname in templateData:
12971297
using protocols such as CoAP that are explicitly analogous to HTTP.
12981298
</t>
12991299
<t>
1300-
This section provides guidance on how to define links for use with each
1301-
common HTTP method, and how collection resources impose additional constraints
1302-
on the use of HTTP POST. Additionally, guidance is provided on hinting at
1303-
HTTP response header values and describing possible HTTP request headers
1304-
that are relevant to the given resource.
1300+
This section provides guidance on how to use each common HTTP method with a link,
1301+
and how colletion resources impose additional constraints on HTTP POST.
1302+
Additionally, guidance is provided on hinting at HTTP response header values and
1303+
describing possible HTTP request headers that are relevant to the given resource.
13051304
</t>
13061305
<section title="One link per target and relation type">
13071306
<t>
@@ -1352,6 +1351,8 @@ for varname in templateData:
13521351
that are suitable for PATCH-ing define a syntax for expressing changes
13531352
to a document, which can be applied to the representation described by
13541353
"targetSchema" to determine the set of syntactically valid request payloads.
1354+
Often, the simplest way to validate a PATCH is to apply it and validate
1355+
the result as a normal representation.
13551356
</t>
13561357
<t>
13571358
HTTP POST request payloads are described by the "submissionSchema" and
@@ -1429,6 +1430,31 @@ for varname in templateData:
14291430
<xref target="collectionAndItem" />.
14301431
</t>
14311432
</section>
1433+
<section title="Content negotiation and schema evolution">
1434+
<t>
1435+
JSON Hyper-Schema facilitates HTTP content negotiation, and allows for
1436+
a hybrid of the proactive and reactive strategies. As mentioned
1437+
above, a hyper-schema can include a schema for HTTP headers such as
1438+
"Accept", "Accept-Charset", "Accept-Language", etc with the "headerSchema"
1439+
keyword. A user agent or client application can use information in
1440+
this schema, such as an enumerated list of supported laguages, in lieu of
1441+
making an initial request to start the reactive negotiation process.
1442+
</t>
1443+
<t>
1444+
In this way, the proactive content negotiation technique of setting these
1445+
headers can be informed by server information about what values are
1446+
possible, similar to examining a list of alternatives in reactive negotiation.
1447+
</t>
1448+
<t>
1449+
For media types that allow specifying a schema as a media type parameter,
1450+
the "Accept" values sent in a request or advertised in "headerSchema" can
1451+
include the URI(s) of the schema(s) to which the negotiated representation
1452+
is expected to conform. One possible use for schema parameters in
1453+
content negotiation is if the resource has conformed to several different
1454+
schema versions over time. The client can indicate what version(s) it
1455+
understands in the "Accept" header in this way.
1456+
</t>
1457+
</section>
14321458
</section>
14331459

14341460
<section title="Examples" anchor="examples">

0 commit comments

Comments
 (0)