diff --git a/index.html b/index.html index 4fe46642d..eae1dc833 100644 --- a/index.html +++ b/index.html @@ -559,25 +559,25 @@

Overview

Core Vocabulary Definition

-

Thing

Describes a physical and/or virtual Thing (may represent one or more physical and/or virtual Things) in the Web of Things context.

+

Thing

Describes a physical and/or virtual Thing (may represent one or more physical and/or virtual Things) in the Web of Things context.

Vocabulary termDescriptionMandatoryDefault valueType
lastModifiedProvides information when the TD instance was last modified.no.string
- - - - - + - - + - -
Vocabulary termDescriptionMandatoryDefault valueType
actionsAll Action-based interaction patterns of the Thing.no.Action
baseDefine the base URI that is valid for all defined local interaction resources. All other URIs in the TD must then be resolved using the algorithm defined in [[!RFC3986]].no.anyURI
descriptionProvides additional (human-readable) information.no.string
actionsAll Action-based interaction patterns of the Thing.no.Action
securitySet of security definition names, chosen from those defined in securityDefinitions. These must all be satisfied for access to resources at or below the current level, if not overridden at a lower level.yes.array of string
eventsAll Event-based interaction patterns of the Thing.no.Event
supportProvides information about the TD maintainer (e.g., author, link or telephone number to get support, etc).no.anyURI
createdProvides information when the TD instance was created.no.string
propertiesAll Property-based interaction patterns of the Thing.no.Property
versionProvides version information.no.Versioning
lastModifiedProvides information when the TD instance was last modified.no.string
nameName of the Thing.yes.string
supportProvides information about the TD maintainer (e.g., author, link or telephone number to get support, etc).no.anyURI
securityDefinitionsSet of named security configurations (definitions only). Not actually applied unless names are used in a security section.no.SecurityScheme
-

InteractionPattern

Three interaction patterns are defined as subclasses: Property, Action and Event. When a concrete Property, Action or Event is defined in a Thing Description, it is called an "interaction resource". Interactions between Things can be as simple as one Thing accessing another Thing's data to get or (in the case the data is also writable) change the representation of data such as metadata, status or mode. A Thing may also be interested in getting asynchronously notified of future changes in another Thing, or may want to initiate a process served in another Thing that may take some time to complete and monitor the progress. Interactions between Things may involve exchanges of data between them. This data can be either given as input by the client Thing, returned as output by the server Thing or both.

- - + + + + + +
Vocabulary termDescriptionMandatoryDefault valueType
securitySet of security definition names, chosen from those defined in securityDefinitions. These must all be satisfied for access to resources at or below the current level, if not overridden at a lower level.no.array of string
titleProvides a human-readable title (e.g., display a text for UI representation) of the interaction pattern.no.string
formsIndicates one or more endpoints from which an interaction pattern is accessible.yes.array of Form
versionProvides version information.no.Versioning
eventsAll Event-based interaction patterns of the Thing.no.Event
descriptionProvides additional (human-readable) information.no.string
securitySet of security definition names, chosen from those defined in securityDefinitions. These must all be satisfied for access to resources at or below the current level, if not overridden at a lower level.yes.array of string
propertiesAll Property-based interaction patterns of the Thing.no.Property
securityDefinitionsSet of named security configurations (definitions only). Not actually applied unless names are used in a security section.no.SecurityScheme
+

InteractionPattern

Three interaction patterns are defined as subclasses: Property, Action and Event. When a concrete Property, Action or Event is defined in a Thing Description, it is called an "interaction resource". Interactions between Things can be as simple as one Thing accessing another Thing's data to get or (in the case the data is also writable) change the representation of data such as metadata, status or mode. A Thing may also be interested in getting asynchronously notified of future changes in another Thing, or may want to initiate a process served in another Thing that may take some time to complete and monitor the progress. Interactions between Things may involve exchanges of data between them. This data can be either given as input by the client Thing, returned as output by the server Thing or both.

-
Vocabulary termDescriptionMandatoryDefault valueType
descriptionProvides additional (human-readable) information.no.string
scopesSet of authorization scope identifiers, provided as an array. These are provided in tokens returned by an authorization server and associated with forms in order to identify what resources a client may access and how.no.array of string
uriVariablesDefine URI template variables as collection based on DataSchema declarations.no.DataSchema

The class InteractionPattern has the following subclasses:

Action

Actions offer functions of the Thing. These functions may manipulate the internal state of a Thing in a way that is not possible through setting Properties. Examples are changing internal state that is not exposed as a Property, changing multiple Properties, changing Properties over time or with a process that should not be disclosed. Actions may also be pure functions, that is, they may not use any internal state at all, and may simply process input data and return a result that directly depends only on the input given.

- +
Vocabulary termDescriptionMandatoryDefault valueType
safeSignals if the action is safe (=true) or not. Used to signal if there is no internal state (cf. resource state) is changed when invoking an Action. In that case responses can be cached as example.yesfalseboolean
idempotentSignals if the action is idempotent (=true) or not. Informs if the action can be called repeatedly with the same outcome. .yesfalseboolean
inputUsed to define the input data schema of the action.no.DataSchema
idempotentSignals if the action is idempotent (=true) or not. Informs if the action can be called repeatedly with the same outcome. .yesfalseboolean
outputUsed to define the output data schema of the action.no.DataSchema
-

Event

The Event Interaction Pattern describes event sources that asynchronously push messages. Here not state, but state transitions (events) are communicated (e.g., "clicked"). Events may be triggered by internal state changes that are not exposed as Properties. Events usually follow strong consistency, where messages need to be queued to ensure eventual delivery of all events that have occurred.

+

Event

The Event Interaction Pattern describes event sources that asynchronously push messages. Here not state, but state transitions (events) are communicated (e.g., "clicked"). Events may be triggered by internal state changes that are not exposed as Properties. Events usually follow strong consistency, where messages need to be queued to ensure eventual delivery of all events that have occurred.

Vocabulary termDescriptionMandatoryDefault valueType
subscriptionDefines data that needs to be passed upon subscription, e.g., filters or message format for setting up Webhooks.no.DataSchema
-
Vocabulary termDescriptionMandatoryDefault valueType
dataDefines the data schema of the Event instance messages pushed by the Thing.no.DataSchema
cancellationDefines any data that needs to be passed to cancel a subscription, e.g., a specific message to remove a Webhook.no.DataSchema
dataDefines the data schema of the Event instance messages pushed by the Thing.no.DataSchema
+subscriptionDefines data that needs to be passed upon subscription, e.g., filters or message format for setting up Webhooks.no.DataSchema

Form

Communication metadata indicating where a service can be accessed by a client application. An interaction might have more than one form.

- - + + -
Vocabulary termDescriptionMandatoryDefault valueType
hrefURI of the endpoint where an interaction pattern is provided.yes.anyURI
contentTypeAssign a content type based on a media type [[!MEDIATYPES]] (e.g., 'application/json) and (optional) parameters (e.g., 'charset=utf-8').yesapplication/jsonstring
securitySet of security definition names, chosen from those defined in securityDefinitions. These must all be satisfied for access to resources at or below the current level, if not overridden at a lower level.no.array of string
responseThis optional term can be used if, e.g., the output communication metadata differ from input metdata (e.g., output contentType differ from the + input contentType). The response name contains metadata that is only valid for the reponse messages.no.Response
opIndicates the expected result of performing the operation described by the form. For example, the Property interaction allows get and set operations. The protocol binding may contain a form for the get operation and a different form for the set operation. The op attribute indicates which form is which and allows the client to select the correct form for the operation required.no.string (one of readproperty, writeproperty, observeproperty, invokeaction, subscribeevent, or unsubscribeevent)
contentTypeAssign a content type based on a media type [[!MEDIATYPES]] (e.g., 'application/json) and (optional) parameters (e.g., 'charset=utf-8').yesapplication/jsonstring
subprotocolIndicates the exact mechanism by which an interaction will be accomplished for a given protocol when there are multiple options. For example, for HTTP and Events, it indicates which of several available mechanisms should be used for asynchronous notifications.no.string (one of longpoll)
scopesSet of authorization scope identifiers, provided as an array. These are provided in tokens returned by an authorization server and associated with forms in order to identify what resources a client may access and how.no.array of string
responseThis optional term can be used if, e.g., the output communication metadata differ from input metdata (e.g., output contentType differ from the - input contentType). The response name contains metadata that is only valid for the reponse messages.no.Response
-

Link

A Web link, as specified by IETF RFC 8288 (https://tools.ietf.org/html/rfc8288).

- +
Vocabulary termDescriptionMandatoryDefault valueType
anchorBy default, the context of a link is the URL of the representation it is associated with, and is serialised as a URI. When present, the anchor parameter overrides this with another URI, such as a fragment of this resource, or a third resource (i.e., when the anchor value is an absolute URI).no.anyURI
typeProvides a hint indicating what the media type [[!MEDIATYPES]] of the result of dereferencing the link should be.no.string
securitySet of security definition names, chosen from those defined in securityDefinitions. These must all be satisfied for access to resources at or below the current level, if not overridden at a lower level.no.array of string
+

Link

A Web link, as specified by IETF RFC 8288 (https://tools.ietf.org/html/rfc8288).

+
Vocabulary termDescriptionMandatoryDefault valueType
typeProvides a hint indicating what the media type [[!MEDIATYPES]] of the result of dereferencing the link should be.no.string
anchorBy default, the context of a link is the URL of the representation it is associated with, and is serialised as a URI. When present, the anchor parameter overrides this with another URI, such as a fragment of this resource, or a third resource (i.e., when the anchor value is an absolute URI).no.anyURI
relIndicates the relation to an other Thing.no.string
hrefURI of the endpoint where an interaction pattern is provided.yes.anyURI

Versioning

Carries version information about the TD instance. If required, additional version information such as firmware and hardware version (term definitions outside of the TD namespace) can be extended here.

Vocabulary termDescriptionMandatoryDefault valueType
instanceProvides a version identicator of this TD instance.yes.string
@@ -630,15 +630,15 @@

Core Vocabulary Definition

Data Schema Vocabulary Definition

-

DataSchema

+

DataSchema

Vocabulary termDescriptionMandatoryDefault valueType
constProvides a constant value.no.any type
+ + + - + - - - -
Vocabulary termDescriptionMandatoryDefault valueType
titleProvides a human-readable title (e.g., display a text for UI representation) of the interaction pattern.no.string
constProvides a constant value.no.any type
unitProvides unit information that is used, e.g., in international science, engineering, and business.no.DataSchema
enumRestricted set of values provided as an array.no.array of any type
oneOfUsed to ensure that the data is valid against one of the specified schemas in the array.no.array of DataSchema
descriptionProvides additional (human-readable) information.no.string
writeOnlyBoolean value that indicates whether a property interaction / value is write only (=true) or not (=false).yesfalseboolean
typeAssignment of JSON-based data types compatible with JSON Schema (one of boolean, integer, number, string, object, array, or null).no.string (one of object, array, string, number, integer, boolean, or null)
readOnlyBoolean value that indicates whether a property interaction / value is read only (=true) or not (=false).yesfalseboolean
oneOfUsed to ensure that the data is valid against one of the specified schemas in the array.no.array of DataSchema
unitProvides unit information that is used, e.g., in international science, engineering, and business.no.DataSchema
titleProvides a human-readable title (e.g., display a text for UI representation) of the interaction pattern.no.string
typeAssignment of JSON-based data types compatible with JSON Schema (one of boolean, integer, number, string, object, array, or null).no.string (one of object, array, string, number, integer, boolean, or null)

The class DataSchema has the following subclasses:

ArraySchema

A JSON array specification ("type": "array").

- -
Vocabulary termDescriptionMandatoryDefault valueType
maxItemsDefines the maximum number of items that have to be in the array.no.unsignedInt
itemsUsed to define the characteristics of an array.no.DataSchema
minItemsDefines the minimum number of items that have to be in the array.no.unsignedInt
+minItemsDefines the minimum number of items that have to be in the array.no.unsignedInt +itemsUsed to define the characteristics of an array.no.DataSchema

BooleanSchema

A JSON boolean value specification ("type": "boolean").

-

NumberSchema

A JSON number value specification ("type": "number").

-
Vocabulary termDescriptionMandatoryDefault valueType
minimumSpecifies a minimum numeric value. Only applicable for associated number or integer types.no.double
maximumSpecifies a maximum numeric value. Only applicable for associated number or integer types.no.double
+

NumberSchema

A JSON number value specification ("type": "number").

+
Vocabulary termDescriptionMandatoryDefault valueType
maximumSpecifies a maximum numeric value. Only applicable for associated number or integer types.no.double
minimumSpecifies a minimum numeric value. Only applicable for associated number or integer types.no.double

IntegerSchema

A JSON integer value specification, that is, numbers without a fractional part ("type": "integer").

Vocabulary termDescriptionMandatoryDefault valueType
maximumSpecifies a maximum numeric value. Only applicable for associated number or integer types.no.integer
minimumSpecifies a minimum numeric value. Only applicable for associated number or integer types.no.integer
-

ObjectSchema

A JSON object specification ("type": "object").

-
Vocabulary termDescriptionMandatoryDefault valueType
propertiesData schema nested definitions.no.DataSchema
requiredDefines which members of the object type are mandatory.no.array of string
+

ObjectSchema

A JSON object specification ("type": "object").

+
Vocabulary termDescriptionMandatoryDefault valueType
requiredDefines which members of the object type are mandatory.no.array of string
propertiesData schema nested definitions.no.DataSchema

StringSchema

A JSON string value specification ("type": "string").

NullSchema

A JSON null value specification ("type": "null"). Is the type of null then it has only one acceptable value, namely null.

@@ -686,8 +686,8 @@

Security Vocabulary Definition

WoT Security TF repository.

-

SecurityScheme

- +

SecurityScheme

Vocabulary termDescriptionMandatoryDefault valueType
schemeIdentification of security mechanism being configured.yes.string (one of nosec, basic, cert, digest, bearer, pop, psk, public, oauth2, or apikey)
descriptionProvides additional (human-readable) information.no.string
+
Vocabulary termDescriptionMandatoryDefault valueType
descriptionProvides additional (human-readable) information.no.string
schemeIdentification of security mechanism being configured.yes.string (one of nosec, basic, cert, digest, bearer, pop, psk, public, oauth2, or apikey)
proxyURI of the proxy server this security configuration provides access to. If not given, the corresponding security configuration is for the endpoint.no.anyURI

The class SecurityScheme has the following subclasses:

APIKeySecurityScheme

API key authentication security configuration ("scheme": "apikey"). This is for the case where the access token is opaque and is not using a standard token format.

Vocabulary termDescriptionMandatoryDefault valueType
inSpecifies the location of security authentication information (one of header, query, body, or cookie).noquerystring
nameName for query, header, or cookie parameters.no.string
-

BearerSecurityScheme

Bearer token authentication security configuration ("scheme": "bearer"). This scheme is intended for situations where bearer tokens are used independently of OAuth2. If the oauth2 scheme is specified it is not generally necessary to specify this scheme as well as it is implied.

- +

BearerSecurityScheme

Bearer token authentication security configuration ("scheme": "bearer"). This scheme is intended for situations where bearer tokens are used independently of OAuth2. If the oauth2 scheme is specified it is not generally necessary to specify this scheme as well as it is implied.

Vocabulary termDescriptionMandatoryDefault valueType
authorizationURI of the authorization server.no.anyURI
formatSpecifies format of security authentication information (one of jwt, jwe, or jws).nojwtstring
+
Vocabulary termDescriptionMandatoryDefault valueType
formatSpecifies format of security authentication information (one of jwt, jwe, or jws).nojwtstring
authorizationURI of the authorization server.no.anyURI
nameName for query, header, or cookie parameters.no.string
algEncoding, encryption, or digest algorithm (one of MD5, ES256, or ES512-256).noES256string
inSpecifies the location of security authentication information (one of header, query, body, or cookie).noheaderstring

CertSecurityScheme

Certificate-base asymmetric key security configuration ("scheme": "cert").

Vocabulary termDescriptionMandatoryDefault valueType
identityPre-shared key identity.no.string

PSKSecurityScheme

Pre-shared key authentication security configuration ("scheme": "psk").

Vocabulary termDescriptionMandatoryDefault valueType
identityPre-shared key identity.no.string

PublicSecurityScheme

Raw public key asymmetric key security configuration ("scheme": "public").

Vocabulary termDescriptionMandatoryDefault valueType
identityPre-shared key identity.no.string
-

PoPSecurityScheme

Proof-of-possession token authentication security configuration ("scheme": "pop").

- +

PoPSecurityScheme

Proof-of-possession token authentication security configuration ("scheme": "pop").

Vocabulary termDescriptionMandatoryDefault valueType
algEncoding, encryption, or digest algorithm (one of MD5, ES256, or ES512-256).noES256string
authorizationURI of the authorization server.no.anyURI
+
Vocabulary termDescriptionMandatoryDefault valueType
authorizationURI of the authorization server.no.anyURI
algEncoding, encryption, or digest algorithm (one of MD5, ES256, or ES512-256).noES256string
inSpecifies the location of security authentication information (one of header, query, body, or cookie).noheaderstring
nameName for query, header, or cookie parameters.no.string
formatSpecifies format of security authentication information (one of jwt, jwe, or jws).nojwtstring

OAuth2SecurityScheme

OAuth2 authentication security configuration ("scheme": "oauth2"). For the implicit flow the authorization and scopes are required. For the password and client flows both token and scopes are required. For the code flow authorization, token, and scopes are required.

- + -
Vocabulary termDescriptionMandatoryDefault valueType
refreshURI of the refresh server.no.anyURI
tokenURI of the token server.no.anyURI
flowAuthorization flow (one of implicit, password, client, or code).noimplicitstring
scopesSet of authorization scope identifiers, provided as an array. These are provided in tokens returned by an authorization server and associated with forms in order to identify what resources a client may access and how.no.array of string
authorizationURI of the authorization server.no.anyURI
flowAuthorization flow (one of implicit, password, client, or code).noimplicitstring
+tokenURI of the token server.no.anyURI @@ -2735,9 +2735,14 @@

JSON Schema for TD Instance Validation

Recent Specification Changes

Changes from Third Public Working Draft