diff --git a/jsonschema-hyperschema.xml b/jsonschema-hyperschema.xml index 4b1e9bb6..4bc94371 100644 --- a/jsonschema-hyperschema.xml +++ b/jsonschema-hyperschema.xml @@ -10,7 +10,6 @@ - ]> @@ -390,8 +389,13 @@
- "Form"-like functionality can be defined by use of the "method" and "submissionSchema" keywords, which supplies a schema describing the data to supply to the server. - Functionality equivalent to dynamic URI generation is available through the "href" template and "hrefSchema". + Data input functionality can be defined by use of the + "submissionSchema" and + "submissionEncType" keywords, + which supply a description of data to send to the target resource for processing. + Functionality equivalent to dynamic URI generation is available through + the "href" template and + "hrefSchema". The simplest kind of link has an "href" with no template variables, and no "submissionSchema". This does not @@ -407,9 +411,7 @@ data to resolve the template, and falls back to resolving any remaining variables from the instance. - A link with a "submissionSchema" allows submitting external data either as a request body (if "method" is "post"), - or as a URI query string (if "method" is "get"). Such a query string replaces any query string - present after the "href" template is resolved. + A link with a "submissionSchema" allows submitting data for processing. See the individual keyword descriptions below for details related to each of these cases. @@ -579,8 +581,8 @@ - The above example simulates the behavior found in earlier drafts using only "hrefSchema", - which would allow the concurrent use of "submissionSchema" on a "post" link. + The above example simulates the behavior handled in earlier drafts + with a "method" of "get" by using the new "hrefSchema" keyword.
@@ -863,81 +865,30 @@ GET /foo/ -
+
- The following properties also apply to Link Description Objects, and provide functionality analogous to HTML forms, by providing a means for making a request with client- or user-selected information. + If present, this property indicates the media type format the + client should use to for the request payload described by + "submissionSchema". + + Omitting this keyword has the same behavior as a value of application/json. + + + Note that "submissionEncType" and "submissionSchema" + are not restricted to HTTP URIs. -
- - This property specifies that the client can construct a templated query or non-idempotent request to a resource. - - - If "method" is "get", the link identifies how a user can compute the URI of an arbitrary resource. For example, how to compute a link to a page of search results relating to the instance, for a user-selected query term. Despite being named after GET, there is no constraint on the method or protocol used to interact with the remote resource. - - - If "method" is "post", the link specifies how a user can construct a document to submit to the link target for evaluation. - - - Values for this property SHOULD be lowercase, and SHOULD be compared case-insensitive. Use of other values not defined here SHOULD be ignored. - -
- -
- - If present, this property indicates the media type format the client should use to encode a query parameter or send to the server. - If the method is "get", this will indicate how to encode the query-string that is appended to the "href" link target. - If the method is "post", this indicates which media type to send to the server and how to encode it. - -
- For example, with the following schema: - - - - This indicates that the client can query the server for instances that have a specific name. -
- -
- For example: - - - -
-
- - If the method is "post", "application/json" is the default media type. - - - As noted under method, these fields - are not restricted to HTTP URIs. - -
- - For example, this link indicates that if you want to - send an email to the author of the context resource, - your client needs to ask for both a plain text - and an HTML representation. - - +
+ + For example, this link indicates that if you want to + send an email to the author of the context resource, + your client needs to ask for both a plain text + and an HTML representation. + + - -
- -
- -
- - This property contains a schema which defines the acceptable structure of the document being encoded according to the "submissionEncType" property. - + + + +
- - Note that this does not define the structure for URI template variables. That is handed by "hrefSchema". If the method is "get" and the resolved URI Template has a query string, the query string produced by input validated against "submissionSchema" replaces the existing query string. - +
+ + This property contains a schema which defines the acceptable structure + of the document to be encoded according to the "submissionEncType" property + and sent to the target resource for processing. This can be viewed as + describing the domain of the processing function implemented by the + target resource. + - - This is a separate concept from the "targetSchema" property, which is describing the target information resource (including for replacing the contents of the resource in a PUT request), unlike "submissionSchema" which describes the user-submitted request data to be evaluated by the resource. - "submissionSchema" is intended for use with requests that have payloads that are not - defined in terms of the target representation. - -
+ + This is a separate concept from the "targetSchema" property, which is describing the target information resource (including for replacing the contents of the resource in a PUT request), unlike "submissionSchema" which describes the user-submitted request data to be evaluated by the resource. + "submissionSchema" is intended for use with requests that have payloads that are not + defined in terms of the target representation. + + + Omitting "submissionSchema" or setting the entire schema to "false" prevents + any external data from being accepted. +
@@ -1018,7 +972,6 @@ GET /foo/ &rfc5789; &rfc5988; &rfc7231; - &html5;
@@ -1061,6 +1014,7 @@ GET /foo/ Clarified HTTP use with "targetSchema" Renamed "schema" to "submissionSchema" Renamed "encType" to "submissionEncType" + Removed "method"