Skip to content

Commit 82be1df

Browse files
authored
fix: Add additionalProperties annotations to match benchmark schema (#42)
1 parent ca8f594 commit 82be1df

File tree

4 files changed

+631
-297
lines changed

4 files changed

+631
-297
lines changed

resources/schemas/hypermedia.yaml

Lines changed: 30 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,11 @@ classes:
124124
description: >-
125125
A link can be viewed as a statement of the form "link context has a relation type resource at link target",
126126
where the optional target attributes may further describe the resource.
127+
annotations:
128+
jsonschema_config:
129+
tag: jsonschema_config
130+
value:
131+
additionalProperties: true
127132
attributes:
128133
href:
129134
description: Target IRI of a link or submission target of a form.
@@ -169,86 +174,43 @@ classes:
169174
Form:
170175
class_uri: hctl:Form
171176
description: >-
172-
A form can be viewed as a statement of "To perform an operation type operation on form context, make a
173-
request method request to submission target" where the optional form fields may further describe the required
174-
request. In Thing Descriptions, the form context is the surrounding Object, such as Properties, Actions, and
175-
Events or the Thing itself for meta-interactions.
176-
comments:
177-
- >-
178-
If no response name-value pair is provided, it MUST be assumed that the content type of the response
179-
is equal to the content type assigned to the Form instance
180-
- >-
181-
If the content type of the expected response differs from the content type of the form, the Form instance
182-
MUST include a name-value pair with the name response
183-
attributes:
177+
A form hypermedia control that describes how an operation can be performed.
178+
annotations:
179+
jsonschema_config:
180+
tag: jsonschema_config
181+
value:
182+
additionalProperties: true
183+
slots:
184+
- op
185+
- href
186+
- contentType
187+
- contentCoding
188+
- subprotocol
189+
- security
190+
- scopes
191+
- response
192+
- additionalResponses
193+
slot_usage:
194+
op:
195+
range: string
196+
pattern: ^(readproperty|writeproperty|observeproperty|unobserveproperty|invokeaction|queryaction|cancelaction|subscribeevent|unsubscribeevent|readallproperties|writeallproperties|readmultipleproperties|writemultipleproperties|observeallproperties|unobserveallproperties|queryallactions|subscribeallevents|unsubscribeallevents)$
197+
multivalued: true
184198
href:
185-
description: Target IRI of a link or submission target of a form.
186-
slot_uri: hctl:hasTarget
187-
range: uri
188199
required: true
200+
range: uri
189201
contentType:
190-
description: >-
191-
Assign a content type based on a media type (e.g., text/plain) and potential parameters
192-
(e.g., charset=utf-8) for the media type [RFC2046].
193-
slot_uri: hctl:forContentType
194202
range: string
195203
contentCoding:
196-
description: >-
197-
Content coding values indicate an encoding transformation that has been or can be applied to a
198-
representation. Content codings are primarily used to allow a representation to be compressed or
199-
otherwise usefully transformed without losing the identity of its underlying media type and without
200-
loss of information. Examples of content coding include "gzip", "deflate", etc.
201-
slot_uri: hctl:forContentCoding
202204
range: string
205+
subprotocol:
206+
range: string
207+
pattern: ^(longpoll|websub|sse)$
203208
security:
204-
description: >-
205-
Set of security definition names, chosen from those defined in securityDefinitions. These must all be
206-
satisfied for access to resources.
207209
range: string
208210
multivalued: true
209211
scopes:
210-
description: >-
211-
Set of authorization scope identifiers provided as an array. These are provided in tokens returned by
212-
an authorization server and associated with forms in order to identify what resources a client may
213-
access and how. The values associated with a form SHOULD be chosen from those defined in an
214-
OAuth2SecurityScheme active on that form.
215212
range: string
216213
multivalued: true
217-
response:
218-
description: >-
219-
This optional term can be used if, e.g., the output communication metadata differ from input metadata
220-
(e.g., output contentType differ from the input contentType). The response name contains metadata that
221-
is only valid for the primary response messages.
222-
slot_uri: hctl:returns
223-
range: ExpectedResponse
224-
additionalResponses:
225-
description: >-
226-
This optional term can be used if additional expected responses are possible, e.g. for error reporting.
227-
Each additional response needs to be distinguished from others in some way (for example, by specifying
228-
a protocol-specific error code), and may also have its own data schema.
229-
slot_uri: hctl:additionalReturns
230-
range: AdditionalExpectedResponse
231-
multivalued: true
232-
subprotocol:
233-
description: >-
234-
Indicates the exact mechanism by which an interaction will be accomplished for a given protocol when
235-
there are multiple options. For example, for HTTP and Events, it indicates which of several available
236-
mechanisms should be used for asynchronous notifications such as long polling, WebSub, Server-Sent Events (also known as EventSource).
237-
slot_uri: hctl:forSubProtocol
238-
range: string
239-
comments:
240-
- e.g., longpoll, websub, or sse
241-
op:
242-
description: >-
243-
Indicates the semantic intention of performing the operation(s) described by the form. For example,
244-
the Property interaction allows get and set operations. The protocol binding may contain a form for
245-
the get operation and a different form for the set operation. The op attribute indicates which form
246-
is for which and allows the client to select the correct form for the operation required.
247-
slot_uri: hctl:hasOperationType
248-
exactly_one_of:
249-
- range: OperationType
250-
- range: OperationType
251-
multivalued: true
252214

253215
ExpectedResponse:
254216
class_uri: hctl:ExpectedResponse

0 commit comments

Comments
 (0)