W3C

Web of Things (WoT) Thing Description 1.1:
Implementation Report

Version: 29 Nov 2023

Editors:
Michael McCool (Intel)
Ege Korkan (Siemens)
Fady Salama (Siemens / Technical University of Munich)


Table of Contents

1. Introduction

The Web of Things (WoT) Thing Description 1.1 document was published as a Candidate Recommendation Snapshot on 19 January 2023 and a Proposed Recommendation on 11 July 2023.

This document summarizes the results from the Web of Things (WoT) Thing Description 1.1 implementer reports received and describes the process that the Web of Things (WoT) Working Group followed in preparing this Implementation Report (IR).

1.1 Implementation Report objectives

1.2 Implementation Report non-objectives

Although results were generated with a combination of automated and manual tests, the automated tests were only meant to provide assistance to implementers in preparing their individual implementation test reports.

2. Work done during the Candidate Recommendation period

During the CR period, the Working Group performed the following activities:

  1. Clarification and improvement of the exposition of the specification
  2. Disposing of comments that were communicated to the WG during the CR period. These comments and their resolution are detailed in the GitHub Issue tracker.
  3. Gathering of additional test inputs and resolution of any at-risk assertions.
  4. Preparation of this Implementation Report.

3. Participating in the Implementation Report

Implementers were invited to contribute to the assessment of the Web of Things (WoT) Thing Description 1.1 Candidate Recommendation by submitting implementer reports describing the coverage of their implementations with respect to the test assertions outlined in the tables below.

Implementer reports were collected through the W3C WoT Interest Group's PlugFest activity and collected in the GitHub repository https://github.com/w3c/wot-testing under data/input_2022/TD.

Comments on this document, or requests made for further information were posted to the Working Group's public mailing list wot-wg@w3.org (archive) and as issues on the GitHub repository https://github.com/w3c/wot-thing-description.

4. Entrance criteria for the Proposed Recommendation phase

The Web of Things (WoT) Working Group established the following entrance criteria for the Proposed Recommendation phase:

  1. Sufficient reports of implementation experience have been gathered to demonstrate that Things can be described by Thing Descriptions in sufficient detail to allow interoperabilty, and that the WoT Thing Description 1.1 data model and processing have been described in sufficient detail to allow interoperabilty.
  2. Specific Implementation Report requirements (outlined below) have been met.
  3. The Working Group has formally addressed and responded to all public comments received by the Working Group.

In order to be included in the PR all features, whether optional or required, needed to have received at least two implementations. At the time of publication of this report all assertions have met this requirement.

5. Implementation Report requirements

5.1 Detailed requirements

  1. The IR must cover all specified features in the specification. For each feature the IR should indicate:

Feature status is in practice indicated by RFC 2119 assertions associated with the feature. Features defined using any assertions containing the words MUST are considered required. Features defined using MAY and SHOULD assertions are considered optional.

Feature utility is indicated indirectly by the number of implementations supporting each feature. In general, features with fewer implementations will have a narrower scope, but may still be important for specific use cases.

5.2 Notes on testing

  1. An implementer report must indicate the outcome of evaluating the implementation with respect to each of the assertions defined in the specification. Possible outcomes are pass, fail, or not-impl (not implemented).
  2. In practice, implementer reports consist of CSV files for each implementation with the above status assigned to each assertion in the specification. This report was then automatically generated from these input files.

5.3 Out of scope

This implementation Report will not cover:

Although we did not formally test interoperability, we required two or more independent implementations for all features in the specification and tested general interoperability at plugfest events.

6. Systems

This section contains descriptions of each of the implementations of the WoT Thing Description 1.1 specification from all organizations that submitted implementer reports. Each implementation represents a working system that either exposes (provides) a WoT Thing Description, consumes WoT Thing Descriptions, or both. Implementations that expose a network interface described by a Thing Description will be referred to as "servers". Implementations that consume Thing Descriptions will be referred to as "clients". Note that these terms will be used with these specific definitions in the following regardless of which device initiates network requests. Normally the client initiates requests and the server responds. However, in some protocols or sub-protocols that support push notifications (such as webhooks or MQTT) the usual relationship of initiator/responder may be reversed. In some cases a given implementation may be used for multiple Things and a single Thing may also act as both client and server on multiple interfaces.

We only count systems with mostly independent code bases as distinct implementations. There are however some cases (documented in the following) where implementations shared components but were still considered substantially independent implementations. In cases where a substantial component was shared across implementations the features supported by that component were only counted once. We did permit the same implementer to report on multiple different implementations as long as the code bases were distinct.

All test results from the first version of this specification were reused to check for backward compatibility between this version and the older specification. Please see the implementation report for the previous version of this specification for additional implementation descriptions.

dart_wot: Consumer and Discoverer

The library dart_wot is a WoT Scripting API implementation written in the Dart programming language, aimed at bringing Web of Things support to the Dart/Flutter ecosystem.

It supports consuming and discovering TDs, providing protocol bindings for HTTP, CoAP, and MQTT. Its supported security mechanisms include DTLS (CoAP), TLS (HTTP, MQTT), Basic and Bearer authentication (HTTP), PSK (CoAP), and username/password authentication (MQTT). Furthermore, dart_wot's CoAP binding offers experimental support for ACE-OAuth (RFC 9200), an authorization and authentication framework for constrained environments.

Usage: dart_wot can be included in Dart and Flutter projects as a dependency. In Flutter apps, all platforms are supported, with macOS and iOS (where CoAPS support is limited) and Web browsers (where CoAP is not supported at all) as partial exceptions.

Public Repository: https://github.com/namib-project/dart_wot

pub.dev Entry: https://pub.dev/packages/dart_wot

Contributing Member Organizations: Invited Experts

Eclipse Ditto WoT Model: Tool

Eclipse Ditto offers a Java Module to use TDs and TMs inside Java environments with concepts native to Java, e.g. providing a builder API for creating new TM/TD instances and rendering those to JSON strings and vice versa.

Usage: Library

Public Repository: https://github.com/eclipse/ditto/tree/master/wot/model

Contributing Member Organizations: Bosch.IO

Eclipse Ditto: TD Exposer

A service that provides APIs for managing digital twins and interacting with the abstracted devices. Fetches linked Thing Models of digital twins and provides instance specific Thing Descriptions for them.

Usage: Service

Public Repository: https://github.com/eclipse/ditto

Website: https://www.eclipse.org/ditto/basic-wot-integration.html

Contributing Member Organizations: Bosch.IO

echonet-wot-proxy: Intermediary

This is an intermediary that connects ECHONET Lite devices into the W3C WoT and allows WoT clients to interact with them via provided TDs.

This intermediary extends the node-wot library.

Eclipse EdiTDor: Tool and Producer

The Eclipse EdiTDor implementation is a web application for simply designing W3C Thing Descriptions and Thing Models.

Usage: Web Application

Public Repository: https://github.com/eclipse/editdor Website: https://eclipse.github.io/editdor/

Contributing Member Organizations: Siemens AG, Bosch.IO

Fischertechnik Factory Simulator: Thing

This TM focused implementation is built upon the Fischertechnik Factory Simulator. The TMs are written by hand, together with the relationships. The TMs are then consumed by Eclipse Thingweb node-wot and is the reason why only TMs are submitted instead of TMs and the corresponding TDs.

Usage: To be consumed by tools like Eclipse Thingweb node-wot

Contributing Member Organizations:Siemens AG and TU Munich (not member)

fujitsu-ledbulb: TD Exposer

The Fujitsu ledbulb is a Wi-Fi controllable LED bulb that can be changed brightness and color. In addition, the light can be gradually turned off or turned on at a specified time.

fujitsu-proxy: Intermediary

Fujitsu's proxy creates a shadow of the device in the proxy, allowing consumers to control the actual device by accessing the shadow. Even if the actual device does not have an authentication mechanism, the proxy provides an authentication mechanism instead to enable secure access. Another advantage is that even if multiple devices have different protocol bindings, they can be accessed using one protocol. It also has a directory for discovering networked devices, creating their shadows, and registering them.

The proxy is implemented in Java.

This proxy is provided as a product in Japan. The product page is below (Japanese only). https://www.fujitsu.com/jp/products/network/carrier-router/wideareanetwork/virtuora-mx/

fujitsu-sensor: TD Exposer

The Fujitsu sensor is a sensor with temperature, humidity, and air pressure, and can be communicated through Wi-Fi to get data. This sensor was used to collect environmental data in agriculture and factories.

hitachi-esp-idf: Air quality sensor and acclerometer: TD Exposer

This is an example of a Thing implemented on a microcontroller. It can exporting the Thing's sensor reading via HTTP REST API, and advertise its own Thing Description using DNS-SD/mDNS.

hitachi-nodegen: Node generator for Node-RED: TD Consumer

Node generator is command line tool to generate Node-RED node modules from several various sources including Thing Description of Web of Things. Using this tool, node developers can dramatically reduce their time to implement Node-RED node modules.

hitachi-nodered: LED lamp: TD Exposer

This is an example of a Thing implemented in Node-RED. It can turn on and off a LED connected to Raspberry Pi's GPIOs and notify changes in LED status. It can also advertise its own Thing Description using DNS-SD/mDNS.

hitachi-nrwotdisc: WoT-Discovery Plugin for Node-RED: Discoverer

This plugin uses wot-discovery functionality and make it easy to import Things into Node-RED flow editor. The plugin discovers Things connected on the local area network or registered in the Thing Description Directory, and converts them into functional blocks that can be used in Node-RED.

intel-nodejs: TD Exposer

Two services based on a shared NodeJS codebase (not using node-wot):

Usage: Exposer

Contributing Member Organizations: Intel

intel-proxy: Intermediary

intel-proxy: Intermediary

This is a reverse proxy service that provides authentication (via various mechanisms indicated by the schemes indicated in the Thing Description) and encrypted transport (TLS) termination. The reverse proxy service was made accessible over a secure tunnel, and depending on the circumstances, can be run in the cloud, on a gateway computer, or locally on a device.

The secure endpoints provided by this service are not given in TDs for the service itself, but added to the TDs for the Things it services.

Usage: Intermediary

Contributing Member Organizations: Intel

intel-wot-ha: TD Directory and TD Exposer

A simple integration of WoT into Home Assistant. A service interrogates the metadata made available from Home Assistant on its external RESTful API. It then generates TDs for Home Assistant entities that can be accessed via this API and makes then available via a TD Directory service that follows the WoT Discovery specification. WoT Consumers can then access the TD Directory to find TDs for entities supported by Home Assistant and access these services using WoT affordance abstractions.

Usage: Directory and Exposer

Contributing Member Organizations: Intel

NHK: Emulated WoT Devices

WoT device emulator (Android App) Hybrid TV Emulator AndroidTV App

Eclipse node-wot: Consumer and Exposer

The Eclipse node-wot implementation is a Node.js-based framework for WoT Servients. It features an implementation of the WoT Scripting API to both consume TDs to instantiate Consumed Things and produce Exposed Things that provide a TD. The Eclipse node-wot implementation supports several Protocol Bindings including HTTP, CoAP, WebSockets, MQTT, Firestore, OPC-UA, Modbus, M-Bus and NETCONF with corresponding security mechanisms such as DTLS (CoAP); TLS (HTTP, MQTT), Basic, Digest, and Bearer Token authentication (HTTP), PSK (CoAP), and username/password authentication (MQTT).

Usage: It can be included in bigger projects as a dependency, used as a Command Line Interface or as a browser library.

Public Repository: https://github.com/eclipse/thingweb.node-wot

Contributing Member Organizations: Siemens AG, Invited Experts

philips-hue: Philips Hue Integration

This implementation leverages the already developed Philips Hue devices. The TDs for them are written by hand and show the use of WoT for brownfield devices. Philips Hue uses API Key in the URI, which is one of the features of the TD 1.1.

Usage: The TDs of the devices can be consumed and interacted with.

Public Repository: https://github.com/tum-esi/wot-sys/tree/master/Devices/PhilipsHUE

Contributing Member Organizations:Siemens AG and TU Munich (non-member)

Thing Description Playground: Tool

The Thing Description Playground implementation is a set of tools that allows one to validate TDs, as well to transform them into different representations such as OpenAPI and AsyncAPI or to manipulate TDs to add or remove default terms and values. It also allows to detect implemented assertions of the TD spec by looking at a TD, which is how the implementation report for the TD is generated.

Usage: It can be included in bigger projects as a dependency, used as a Command Line Interface or as a web application library.

Public Repository: https://github.com/thingweb/thingweb-playground Website: http://plugfest.thingweb.io/playground/

Contributing Member Organizations:Siemens AG

flask-tum: Custom Python Flask Things: Thing

Custom implementation pattern using the Flask library for creating an HTTP server that exposes a TD. This pattern is used in many devices that have been developed. It is not a framework like Eclipse Thingweb node-wot, more like a copy-paste driven implementation pattern.

Usage: Command line

Public Repository: All that start with "flask" at https://github.com/tum-esi/wot-sys/tree/master/Devices

Contributing Member Organizations:Siemens AG and TU Munich (non-member)

Siemens sayWoT!: Exposer and Consumer

sayWoT! is an industrial-grade implementation that allows integration of devices into Siemens software products like Asset Performance Suite, Desigo CC in a semantically-described and standardized way. sayWoT! is implemented in golang for optimal scalability and cross-architecture compatability.

Usage: Service in the cloud or on premise, Command Line Interface

Website: https://www.evosoft.com/en/digitalization-offering/saywot/

Contributing Member Organizations: Siemens AG

SparTDD: Thing Description Directory

SparTDD is an implementation of the W3C Web of Things Thing Description Directory. There are two main components. The API of the TDD is written in Python using Flask. The data is stored in RDF in a Apache Jena Fuseki SPARQL endpoint. A demo can be found here.

Usage:Directory

Contributing Member Organizations:Siemens

TinyIoT Thing Directory

This is an implementation of the W3C Web of Things (WoT) Thing Description Directory (TDD). This directory is designed to be lightweight and portable, enabling deployment on the edge. It uses a layered architecture to allows the addition of different storage backends to server high scalability needs.

The directory advertises itself in local networks using DNS-SD. It comes with the Things and Notification APIs, as well as JSONPath search support (non-normative). The directory performs fine-grained access control with the help of locally defined rules and an OpenID Connect server.

Usage: Directory

Public Repository: https://github.com/TinyIoT/thing-directory

Website: https://github.com/TinyIoT

Contributing Member Organizations: The parent fork has been developed as part of LinkSmart by Fraunhofer-Gesellschaft

WoT Experimental: Thing

The WoT Experimental is a collection of Thing implementations that aims to test different features of the TD specification such as WoT operations, Data Schema variations and API Key usage in Body.

Usage: Command line

Public Repository: https://github.com/egekorkan/wot-implementations

Contributing Member Organizations:Siemens AG

WoT Hive directory

WoT Hive is an implementation of a W3C Web of Things directory. This implementation is compliant with the standard specification but aims at providing enriched features thanks to the usage of other W3C standards related to Semantic Web technologies.

Usage: Directory

Public Repository: https://github.com/oeg-upm/wot-hive

Website: https://github.com/oeg-upm/wot-hive

Contributing Member Organizations: Universidad Politécnica de Madrid

7. Security

The Web of Things (WoT) Thing Description 1.1 specification includes features to support security. Functional aspects of assertions associated with security features are validated in the same fashion as other functional features.

8. Test results

The aim of this section is to summarize the assertions from the Web of Things (WoT) Thing Description 1.1 specification and summarize the results from the implementation reports received in the CR period. The tables in each section below lists all assertions derived from the Web of Things (WoT) Thing Description 1.1 specification. The results are broken into two parts: those for which automated testing has been implemented, and those for which it has not and manual testing and reporting was necessary.

The headers for these tables are described as follows:

In the case of assertions with multiple mutually exclusive options (for example, enumerated values) each of these options may be tested separately and the results combined. In this case the 'pass' and 'total' values reported are the minimum value of any of the more detailed tests, while the 'fail' and 'not implemented' values report the maximum value of any of these tests. Since minimum and maximum value may be drawn from different detailed tests, the sum of the 'pass', 'fail', and 'not implemented' cases may not equal the 'total'. Instead the total represents the number of implementations for which all options were tested. For such cases the "child" assertions have underscores in their names prior to each value tested and the table row is also rendered in a different color. Note that child assertions do not appear in the exact form shown in this report in the specification itself, so please refer to the parent assertion for context.

8.1 Automated Validation Results

The following assertions have been validated by automated testing using the ThingWeb Playground AssertionTester.

ID Category Req Context Assertion Parent Results
P F N T
1: td-processor Syntax Y (TD Processor)
A TD Processor MUST satisfy the Class instantiation constraints on all Classes defined in 5.3.1 Core Vocabulary Definitions, 5.3.2 Data Schema Vocabulary Definitions, 5.3.3 Security Vocabulary Definitions, and 5.3.4 Hypermedia Controls Vocabulary Definitions. 33 0 0 33
2: td-vocab-at-context--Thing Vocabulary Y Thing
@context: JSON-LD keyword to define short-hand names called terms that are used throughout a TD document. MUST be included. Type: anyURI or Array . td-vocabulary
24 0 9 33
3: td-vocab-at-type--Thing Vocabulary N Thing
@type: JSON-LD keyword to label the object with semantic tags (or types). MAY be included. Type: string or Array of string . td-vocabulary
26 0 7 33
4: td-vocab-id--Thing Vocabulary N Thing
id: Identifier of the Thing in form of a URI [RFC3986] (e.g., stable URI, temporary and mutable URI, URI with local IP address, URN, etc.). MAY be included. Type: anyURI . td-vocabulary
33 0 0 33
5: td-vocab-title--Thing Vocabulary Y Thing
title: Provides a human-readable title (e.g., display a text for UI representation) based on a default language. MUST be included. Type: string . td-vocabulary
33 0 0 33
6: td-vocab-titles--Thing Vocabulary N Thing
titles: Provides multi-language human-readable titles (e.g., display a text for UI representation in different languages). Also see MultiLanguage. MAY be included. Type: Map of MultiLanguage . td-vocabulary
7 0 26 33
7: td-vocab-description--Thing Vocabulary N Thing
description: Provides additional (human-readable) information based on a default language. MAY be included. Type: string . td-vocabulary
27 0 6 33
8: td-vocab-descriptions--Thing Vocabulary N Thing
descriptions: Can be used to support (human-readable) information in different languages. Also see MultiLanguage. MAY be included. Type: Map of MultiLanguage . td-vocabulary
6 0 27 33
9: td-vocab-version--Thing Vocabulary N Thing
version: Provides version information. MAY be included. Type: VersionInfo . td-vocabulary
12 0 21 33
10: td-vocab-created--Thing Vocabulary N Thing
created: Provides information when the TD instance was created. MAY be included. Type: dateTime . td-vocabulary
10 0 23 33
11: td-vocab-modified--Thing Vocabulary N Thing
modified: Provides information when the TD instance was last modified. MAY be included. Type: dateTime . td-vocabulary
6 0 27 33
12: td-vocab-support--Thing Vocabulary N Thing
support: Provides information about the TD maintainer as URI scheme (e.g., mailto [RFC6068], tel [RFC3966], https [RFC9112]). MAY be included. Type: anyURI . td-vocabulary
10 0 23 33
13: td-vocab-base--Thing Vocabulary N Thing
base: Define the base URI that is used for all relative URI references throughout a TD document. In TD instances, all relative URIs are resolved relative to the base URI using the algorithm defined in [RFC3986]. base does not affect the URIs used in @context and the IRIs used within Linked Data [LINKED-DATA] graphs that are relevant when semantic processing is applied to TD instances. MAY be included. Type: anyURI . td-vocabulary
24 0 9 33
14: td-vocab-properties--Thing Vocabulary N Thing
properties: All Property-based Interaction Affordances of the Thing. MAY be included. Type: Map of PropertyAffordance . td-vocabulary
33 0 0 33
15: td-vocab-actions--Thing Vocabulary N Thing
actions: All Action-based Interaction Affordances of the Thing. MAY be included. Type: Map of ActionAffordance . td-vocabulary
23 0 10 33
16: td-vocab-events--Thing Vocabulary N Thing
events: All Event-based Interaction Affordances of the Thing. MAY be included. Type: Map of EventAffordance . td-vocabulary
19 0 14 33
18: td-vocab-forms--Thing Vocabulary N Thing
forms: Set of form hypermedia controls that describe how an operation can be performed. Forms are serializations of Protocol Bindings. Thing level forms are used to describe endpoints for a group of interaction affordances. MAY be included. Type: Array of Form . td-vocabulary
14 0 19 33
19: td-vocab-security--Thing Vocabulary Y Thing
security: Set of security definition names, chosen from those defined in securityDefinitions. These must all be satisfied for access to resources. MUST be included. Type: string or Array of string . td-vocabulary
33 0 0 33
20: td-vocab-securityDefinitions--Thing Vocabulary Y Thing
securityDefinitions: Set of named security configurations (definitions only). Not actually applied unless names are used in a security name-value pair. MUST be included. Type: Map of SecurityScheme . td-vocabulary
33 0 0 33
21: td-vocab-profile--Thing Vocabulary N Thing
profile: Indicates the WoT Profile mechanisms followed by this Thing Description and the corresponding Thing implementation. MAY be included. Type: anyURI or Array of anyURI . td-vocabulary
6 0 27 33
22: td-vocab-schemaDefinitions--Thing Vocabulary N Thing
schemaDefinitions: Set of named data schemas. To be used in a schema name-value pair inside an AdditionalExpectedResponse object. MAY be included. Type: Map of DataSchema . td-vocabulary
3 0 30 33
23: td-vocab-uriVariables--Thing Vocabulary N Thing
uriVariables: Define URI template variables according to [RFC6570] as collection based on DataSchema declarations. The Thing level uriVariables can be used in Thing level forms or in Interaction Affordances. The individual variables DataSchema cannot be an ObjectSchema or an ArraySchema since each variable needs to be serialized to a string inside the href upon the execution of the operation. If the same variable is both declared in Thing level uriVariables and in Interaction Affordance level, the Interaction Affordance level variable takes precedence. MAY be included. Type: Map of DataSchema . td-vocabulary
5 0 30 35
24: td-context-ns-thing-mandatory Context Y (Context)
The @context name-value pair MUST contain the anyURI https://www.w3.org/2022/wot/td/v1.1 in order to identify the document as a TD 1.1 which would allow Consumers to use the newly introduced terms. 33 0 0 33
25: td-context-ns-td10-namespace Context Y (Context)
When there are possibly TD 1.0 consumers the anyURI https://www.w3.org/2019/wot/td/v1 MUST be the first entry and the https://www.w3.org/2022/wot/td/v1.1 MUST be the second entry. 23 0 12 35
27: td-context-ns-thing-optional Context N (Context)
When @context is an Array, the anyURI https://www.w3.org/2022/wot/td/v1.1 MAY be followed by elements of type anyURI or type Map in any order, while it is RECOMMENDED to include only one Map with all the name-value pairs in the @context Array. 24 0 9 33
28: td-context-ns-thing-map-of-namespaces Context N (Context)
Maps contained in an @context Array MAY contain name-value pairs, where the value is a namespace identifier of type anyURI and the name a Term or prefix denoting that namespace. 23 0 10 33
29: td-context-default-language Syntax N Thing
One Map contained in an @context Array SHOULD contain a name-value pair that defines the default language for the Thing Description, where the name is the Term @language and the value is a well-formed language tag as defined by [BCP47] (e.g., en, de-AT, gsw-CH, zh-Hans, zh-Hant-HK, sl-nedis). 13 0 20 33
32: td-op-for-thing Syntax Y Thing
When the forms Array of a Thing instance contains Form instances, it MUST contain op member with the string values assigned to the name op, either directly or within an Array, MUST be one of the following operation types: readallproperties, writeallproperties, readmultipleproperties, writemultipleproperties, observeallproperties, unobserveallproperties, queryallactions, subscribeallevents, or unsubscribeallevents. td-forms
14 0 19 33
33: td-vocab-at-type--InteractionAffordance Vocabulary N InteractionAffordance
@type: JSON-LD keyword to label the object with semantic tags (or types). MAY be included. Type: string or Array of string . td-vocabulary
15 0 18 33
34: td-vocab-title--InteractionAffordance Vocabulary N InteractionAffordance
title: Provides a human-readable title (e.g., display a text for UI representation) based on a default language. MAY be included. Type: string . td-vocabulary
21 0 12 33
35: td-vocab-titles--InteractionAffordance Vocabulary N InteractionAffordance
titles: Provides multi-language human-readable titles (e.g., display a text for UI representation in different languages). Also see MultiLanguage. MAY be included. Type: Map of MultiLanguage . td-vocabulary
4 0 29 33
36: td-vocab-description--InteractionAffordance Vocabulary N InteractionAffordance
description: Provides additional (human-readable) information based on a default language. MAY be included. Type: string . td-vocabulary
29 0 4 33
37: td-vocab-descriptions--InteractionAffordance Vocabulary N InteractionAffordance
descriptions: Can be used to support (human-readable) information in different languages. Also see MultiLanguage. MAY be included. Type: Map of MultiLanguage . td-vocabulary
6 0 27 33
38: td-vocab-forms--InteractionAffordance Vocabulary Y InteractionAffordance
forms: Set of form hypermedia controls that describe how an operation can be performed. Forms are serializations of Protocol Bindings. The array cannot be empty. MUST be included. Type: Array of Form . td-vocabulary
31 0 2 33
39: td-vocab-uriVariables--InteractionAffordance Vocabulary N InteractionAffordance
uriVariables: Define URI template variables according to [RFC6570] as collection based on DataSchema declarations. The individual variables DataSchema cannot be an ObjectSchema or an ArraySchema since each variable needs to be serialized to a string inside the href upon the execution of the operation. If the same variable is both declared in Thing level uriVariablesand in Interaction Affordance level, the Interaction Affordance level variable takes precedence. MAY be included. Type: Map of DataSchema . td-vocabulary
11 0 22 33
40: td-vocab-observable--PropertyAffordance Vocabulary N PropertyAffordance
observable: A hint that indicates whether Servients hosting the Thing and Intermediaries should provide a Protocol Binding that supports the observeproperty and unobserveproperty operations for this Property. MAY be included. Type: boolean . td-vocabulary
16 0 17 33
41: td-op-for-property Syntax Y PropertyAffordance
When a Form instance is within a PropertyAffordance instance, the value assigned to op MUST be one of readproperty, writeproperty, observeproperty, unobserveproperty or an Array containing a combination of these terms. td-forms
29 0 4 33
42: td-vocab-input--ActionAffordance Vocabulary N ActionAffordance
input: Used to define the input data schema of the Action. MAY be included. Type: DataSchema . td-vocabulary
19 0 14 33
43: td-vocab-output--ActionAffordance Vocabulary N ActionAffordance
output: Used to define the output data schema of the Action. MAY be included. Type: DataSchema . td-vocabulary
10 0 23 33
44: td-vocab-safe--ActionAffordance Vocabulary N ActionAffordance
safe: Signals 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. MAY be included. Type: boolean . td-vocabulary
15 0 18 33
45: td-vocab-idempotent--ActionAffordance Vocabulary N ActionAffordance
idempotent: Indicates whether the Action is idempotent (=true) or not. Informs whether the Action can be called repeatedly with the same result, if present, based on the same input. MAY be included. Type: boolean . td-vocabulary
17 0 16 33
46: td-vocab-synchronous--ActionAffordance Vocabulary N ActionAffordance
synchronous: Indicates whether the action is synchronous (=true) or not. A synchronous action means that the response of action contains all the information about the result of the action and no further querying about the status of the action is needed. Lack of this keyword means that no claim on the synchronicity of the action can be made. MAY be included. Type: boolean . td-vocabulary
6 0 28 34
47: td-op-for-action Syntax Y ActionAffordance
When a Form instance is within an ActionAffordance instance, the value assigned to op MUST either be invokeaction, queryaction, cancelaction or an Array containing a combination of these terms. td-forms
14 0 19 33
48: td-vocab-subscription--EventAffordance Vocabulary N EventAffordance
subscription: Defines data that needs to be passed upon subscription, e.g., filters or message format for setting up Webhooks. MAY be included. Type: DataSchema . td-vocabulary
2 0 31 33
49: td-vocab-data--EventAffordance Vocabulary N EventAffordance
data: Defines the data schema of the Event instance messages pushed by the Thing. MAY be included. Type: DataSchema . td-vocabulary
16 0 17 33
50: td-vocab-dataResponse--EventAffordance Vocabulary N EventAffordance
dataResponse: Defines the data schema of the Event response messages sent by the consumer in a response to a data message. MAY be included. Type: DataSchema . td-vocabulary
16 0 17 33
51: td-vocab-cancellation--EventAffordance Vocabulary N EventAffordance
cancellation: Defines any data that needs to be passed to cancel a subscription, e.g., a specific message to remove a Webhook. MAY be included. Type: DataSchema . td-vocabulary
2 0 31 33
52: td-op-for-event Syntax Y EventAffordance
When a Form instance is within an EventAffordance instance, the value assigned to op MUST be either subscribeevent, unsubscribeevent, or both terms within an Array. td-forms
16 0 17 33
53: td-vocab-instance--VersionInfo Vocabulary Y VersionInfo
instance: Provides a version indicator of this TD. MUST be included. Type: string . td-vocabulary
12 0 21 33
54: td-vocab-model--VersionInfo Vocabulary N VersionInfo
model: Provides a version indicator of the underlying TM. MAY be included. Type: string . td-vocabulary
3 0 30 33
55: td-multilanguage-language-tag Syntax Y MultiLanguage
Each name of the MultiLanguage Map MUST be a language tag as defined in [BCP47]. 33 0 0 33
56: td-multilanguage-value Syntax Y MultiLanguage
Each value of the MultiLanguage Map MUST be of type string. 9 0 24 33
57: td-vocab-at-type--DataSchema Vocabulary N DataSchema
@type: JSON-LD keyword to label the object with semantic tags (or types) MAY be included. Type: string or Array of string . td-vocabulary
14 0 19 33
58: td-vocab-title--DataSchema Vocabulary N DataSchema
title: Provides a human-readable title (e.g., display a text for UI representation) based on a default language. MAY be included. Type: string . td-vocabulary
24 0 9 33
59: td-vocab-titles--DataSchema Vocabulary N DataSchema
titles: Provides multi-language human-readable titles (e.g., display a text for UI representation in different languages). Also see MultiLanguage. MAY be included. Type: Map of MultiLanguage . td-vocabulary
6 0 27 33
60: td-vocab-description--DataSchema Vocabulary N DataSchema
description: Provides additional (human-readable) information based on a default language. MAY be included. Type: string . td-vocabulary
29 0 4 33
61: td-vocab-descriptions--DataSchema Vocabulary N DataSchema
descriptions: Can be used to support (human-readable) information in different languages. Also see MultiLanguage. MAY be included. Type: Map of MultiLanguage . td-vocabulary
7 0 26 33
62: td-vocab-const--DataSchema Vocabulary N DataSchema
const: Provides a constant value. MAY be included. Type: any type. td-vocabulary
7 0 26 33
63: td-vocab-default--DataSchema Vocabulary N DataSchema
default: Supply a default value. The value SHOULD validate against the data schema in which it resides. MAY be included. Type: any type. td-vocabulary
4 0 29 33
64: td-vocab-unit--DataSchema Vocabulary N DataSchema
unit: Provides unit information that is used, e.g., in international science, engineering, and business. To preserve uniqueness, it is recommended that the value of the unit points to a semantic definition (also see Section Semantic Annotations). MAY be included. Type: string . td-vocabulary
14 0 19 33
65: td-vocab-oneOf--DataSchema Vocabulary N DataSchema
oneOf: Used to ensure that the data is valid against one of the specified schemas in the array. This can be used to describe multiple input or output schemas. MAY be included. Type: Array of DataSchema . td-vocabulary
5 0 28 33
66: td-vocab-enum--DataSchema Vocabulary N DataSchema
enum: Restricted set of values provided as an array. MAY be included. Type: Array of any type . td-vocabulary
13 0 20 33
67: td-vocab-readOnly--DataSchema Vocabulary N DataSchema
readOnly: Boolean value that is a hint to indicate whether a property interaction / value is read only (=true) or not (=false). MAY be included. Type: boolean . td-vocabulary
24 0 9 33
68: td-vocab-writeOnly--DataSchema Vocabulary N DataSchema
writeOnly: Boolean value that is a hint to indicate whether a property interaction / value is write only (=true) or not (=false). MAY be included. Type: boolean . td-vocabulary
14 0 19 33
69: td-vocab-format--DataSchema Vocabulary N DataSchema
format: Allows validation based on a format pattern such as "date-time", "email", "uri", etc. (Also see below.) MAY be included. Type: string . td-vocabulary
8 0 25 33
70: td-vocab-type--DataSchema Vocabulary N DataSchema
type: Assignment of JSON-based data types compatible with JSON Schema (one of boolean, integer, number, string, object, array, or null). MAY be included. Type: string (one of object, array, string, number, integer, boolean, or null) . td-vocabulary
4 1 29 34
70.01: td-vocab-type--DataSchema_array Vocabulary Y DataSchema
type: Assignment of JSON-based data types MUST be compatible with JSON Schema (array). td-vocabulary
10 0 23 33
70.02: td-vocab-type--DataSchema_boolean Vocabulary Y DataSchema
type: Assignment of JSON-based data types MUST be compatible with JSON Schema (boolean). td-vocabulary
18 0 15 33
70.03: td-vocab-type--DataSchema_integer Vocabulary Y DataSchema
type: Assignment of JSON-based data types MUST be compatible with JSON Schema (integer). td-vocabulary
16 1 16 33
70.04: td-vocab-type--DataSchema_null Vocabulary Y DataSchema
type: Assignment of JSON-based data types MUST be compatible with JSON Schema (null). td-vocabulary
4 0 29 33
70.05: td-vocab-type--DataSchema_number Vocabulary Y DataSchema
type: Assignment of JSON-based data types MUST be compatible with JSON Schema (number). td-vocabulary
27 0 6 33
70.06: td-vocab-type--DataSchema_object Vocabulary Y DataSchema
type: Assignment of JSON-based data types MUST be compatible with JSON Schema (object). td-vocabulary
26 0 7 33
70.07: td-vocab-type--DataSchema_string Vocabulary Y DataSchema
type: Assignment of JSON-based data types MUST be compatible with JSON Schema (string). td-vocabulary
24 0 9 33
71: td-format-validation-known-values Syntax N DataSchema
Servients MAY use the format value to perform additional validation accordingly. td-data-schema
8 0 25 33
73: td-vocab-items--ArraySchema Vocabulary N ArraySchema
items: Used to define the characteristics of an array. MAY be included. Type: DataSchema or Array of DataSchema . td-vocabulary
9 0 24 33
74: td-vocab-minItems--ArraySchema Vocabulary N ArraySchema
minItems: Defines the minimum number of items that have to be in the array. MAY be included. Type: unsignedInt . td-vocabulary
5 0 28 33
75: td-vocab-maxItems--ArraySchema Vocabulary N ArraySchema
maxItems: Defines the maximum number of items that have to be in the array. MAY be included. Type: unsignedInt . td-vocabulary
5 0 28 33
76: td-vocab-minimum--NumberSchema Vocabulary N NumberSchema
minimum: Specifies a minimum numeric value, representing an inclusive lower limit. Only applicable for associated number or integer types. MAY be included. Type: double . td-vocabulary
18 0 15 33
77: td-vocab-exclusiveMinimum--NumberSchema Vocabulary N NumberSchema
exclusiveMinimum: Specifies a minimum numeric value, representing an exclusive lower limit. Only applicable for associated number or integer types. MAY be included. Type: double . td-vocabulary
2 0 31 33
78: td-vocab-maximum--NumberSchema Vocabulary N NumberSchema
maximum: Specifies a maximum numeric value, representing an inclusive upper limit. Only applicable for associated number or integer types. MAY be included. Type: double . td-vocabulary
18 0 15 33
79: td-vocab-exclusiveMaximum--NumberSchema Vocabulary N NumberSchema
exclusiveMaximum: Specifies a maximum numeric value, representing an exclusive upper limit. Only applicable for associated number or integer types. MAY be included. Type: double . td-vocabulary
2 0 31 33
80: td-vocab-multipleOf--NumberSchema Vocabulary N NumberSchema
multipleOf: Specifies the multipleOf value number. The value must strictly greater than 0. Only applicable for associated number or integer types. MAY be included. Type: double . td-vocabulary
4 0 29 33
81: td-vocab-minimum--IntegerSchema Vocabulary N IntegerSchema
minimum: Specifies a minimum numeric value, representing an inclusive lower limit. Only applicable for associated number or integer types. MAY be included. Type: integer . td-vocabulary
13 1 19 33
82: td-vocab-exclusiveMinimum--IntegerSchema Vocabulary N IntegerSchema
exclusiveMinimum: Specifies a minimum numeric value, representing an exclusive lower limit. Only applicable for associated number or integer types. MAY be included. Type: integer . td-vocabulary
2 0 31 33
83: td-vocab-maximum--IntegerSchema Vocabulary N IntegerSchema
maximum: Specifies a maximum numeric value, representing an inclusive upper limit. Only applicable for associated number or integer types. MAY be included. Type: integer . td-vocabulary
12 1 20 33
84: td-vocab-exclusiveMaximum--IntegerSchema Vocabulary N IntegerSchema
exclusiveMaximum: Specifies a maximum numeric value, representing an exclusive upper limit. Only applicable for associated number or integer types. MAY be included. Type: integer . td-vocabulary
2 0 31 33
85: td-vocab-multipleOf--IntegerSchema Vocabulary N IntegerSchema
multipleOf: Specifies the multipleOf value number. The value must strictly greater than 0. Only applicable for associated number or integer types. MAY be included. Type: integer . td-vocabulary
2 0 31 33
86: td-vocab-properties--ObjectSchema Vocabulary N ObjectSchema
properties: Data schema nested definitions. MAY be included. Type: Map of DataSchema . td-vocabulary
23 0 10 33
87: td-vocab-required--ObjectSchema Vocabulary N ObjectSchema
required: Defines which members of the object type are mandatory, i.e. which members are mandatory in the payload that is to be sent (e.g. input of invokeaction, writeproperty) and what members will be definitely delivered in the payload that is being received (e.g. output of invokeaction, readproperty) MAY be included. Type: Array of string . td-vocabulary
9 0 24 33
88: td-vocab-minLength--StringSchema Vocabulary N StringSchema
minLength: Specifies the minimum length of a string. Only applicable for associated string types. MAY be included. Type: unsignedInt . td-vocabulary
2 0 31 33
89: td-vocab-maxLength--StringSchema Vocabulary N StringSchema
maxLength: Specifies the maximum length of a string. Only applicable for associated string types. MAY be included. Type: unsignedInt . td-vocabulary
2 0 31 33
90: td-vocab-pattern--StringSchema Vocabulary N StringSchema
pattern: Provides a regular expression to express constraints of the string value. The regular expression must follow the [ECMA-262] dialect. MAY be included. Type: string . td-vocabulary
2 0 31 33
91: td-vocab-contentEncoding--StringSchema Vocabulary N StringSchema
contentEncoding: Specifies the encoding used to store the contents, as specified in [RFC2045] (Section 6.1) and [RFC4648]. MAY be included. Type: string (e.g., 7bit, 8bit, binary, quoted-printable, base16, base32, or base64) . td-vocabulary
2 0 31 33
92: td-vocab-contentMediaType--StringSchema Vocabulary N StringSchema
contentMediaType: Specifies the MIME type of the contents of a string value, as described in [RFC2046]. MAY be included. Type: string (e.g., image/png, or audio/mpeg) . td-vocabulary
2 0 31 33
93: td-security-scheme-name Syntax Y SecurityScheme
The value assigned to the name scheme MUST be defined within a Vocabulary included in the Thing Description, either in the standard Vocabulary defined in § 5. TD Information Model or in a TD Context Extension. td-security
33 0 0 33
95: sec-body-name-json-pointer Security Y When used in the context of a body security information location, the value of name MUST be in the form of a JSON pointer [RFC6901] relative to the root of the input DataSchema for each interaction it is used with. 2 0 31 33
97: sec-body-name-json-pointer-array Security N The JSON pointer used in the body locator MAY use the "-" character to indicate a non-existent array element when it is necessary to insert an element after the last element of an existing array. 2 0 31 33
100: td-security-in-uri-variable Security Y SecurityScheme
The URIs provided in interactions where a security scheme using uri as the value for in MUST be a URI template including the defined variable. td-security
2 0 31 33
101: sec-security-vocab-auto-in-no-name Security N If a value of auto is set for the in field of a SecurityScheme, then the name field SHOULD NOT be set. 2 0 31 33
102: td-security-uri-variables-distinct Security Y SecurityScheme
The names of URI variables declared in a SecurityScheme MUST be distinct from all other URI variables declared in the TD. td-security
2 0 31 33
103: td-vocab-at-type--SecurityScheme Vocabulary N DataSchema
@type: JSON-LD keyword to label the object with semantic tags (or types). MAY be included. Type: string or Array of string . td-vocabulary
2 0 31 33
104: td-vocab-description--SecurityScheme Vocabulary N SecurityScheme
description: Provides additional (human-readable) information based on a default language. MAY be included. Type: string . td-vocabulary
2 0 31 33
105: td-vocab-descriptions--SecurityScheme Vocabulary N SecurityScheme
descriptions: Can be used to support (human-readable) information in different languages. Also see MultiLanguage. MAY be included. Type: Map of MultiLanguage . td-vocabulary
2 0 31 33
106: td-vocab-proxy--SecurityScheme Vocabulary N SecurityScheme
proxy: URI of the proxy server this security configuration provides access to. If not given, the corresponding security configuration is for the endpoint. MAY be included. Type: anyURI . td-vocabulary
2 0 31 33
107: td-vocab-scheme--SecurityScheme Vocabulary Y SecurityScheme
scheme: Identification of the security mechanism being configured. MUST be included. Type: string (e.g., nosec, combo, basic, digest, bearer, psk, oauth2, apikey, or auto) . td-vocabulary
2 0 31 33
107.01: td-vocab-scheme--SecurityScheme_apikey Vocabulary N APIKeySecurityScheme
scheme: Identification of security mechanism being configured MAY be set to "apikey". td-vocab-scheme--SecurityScheme
5 0 28 33
107.02: td-vocab-scheme--SecurityScheme_auto Vocabulary N APIKeySecurityScheme
scheme: Identification of security mechanism being configured MAY be set to "auto". td-vocab-scheme--SecurityScheme
2 0 31 33
107.03: td-vocab-scheme--SecurityScheme_basic Vocabulary N BasicSecurityScheme
scheme: Identification of security mechanism being configured MAY be set to "basic". td-vocab-scheme--SecurityScheme
10 0 23 33
107.04: td-vocab-scheme--SecurityScheme_bearer Vocabulary N BearerSecurityScheme
scheme: Identification of security mechanism being configured MAY be set to "bearer". td-vocab-scheme--SecurityScheme
7 0 26 33
107.05: td-vocab-scheme--SecurityScheme_digest Vocabulary N DigestSecurityScheme
scheme: Identification of security mechanism being configured MAY be set to "digest". td-vocab-scheme--SecurityScheme
4 0 29 33
107.06: td-vocab-scheme--SecurityScheme_nosec Vocabulary N NoSecurityScheme
scheme: Identification of security mechanism being configured MAY be set to "nosec". td-vocab-scheme--SecurityScheme
23 0 10 33
107.07: td-vocab-scheme--SecurityScheme_oauth2 Vocabulary N OAuth2SecurityScheme
scheme: Identification of security mechanism being configured MAY be set to "oauth2". td-vocab-scheme--SecurityScheme
7 0 26 33
107.08: td-vocab-scheme--SecurityScheme_psk Vocabulary N PSKSecurityScheme
scheme: Identification of security mechanism being configured MAY be set to "psk". td-vocab-scheme--SecurityScheme
2 0 31 33
108: td-security-combo-exclusive-oneof-or-allof Security Y ComboSecurityScheme
Exactly one of either oneOf or allOf vocabulary terms MUST be included. td-security
4 0 29 33
109: td-vocab-oneOf--ComboSecurityScheme Vocabulary Y ComboSecurityScheme
oneOf: Array of two or more strings identifying other named security scheme definitions, any one of which, when satisfied, will allow access. Only one may be chosen for use. MUST be included. Type: Array of string . td-vocabulary
2 0 31 33
110: td-vocab-allOf--ComboSecurityScheme Vocabulary Y ComboSecurityScheme
allOf: Array of two or more strings identifying other named security scheme definitions, all of which must be satisfied for access. MUST be included. Type: Array of string . td-vocabulary
2 0 31 33
111: td-vocab-name--BasicSecurityScheme Vocabulary N BasicSecurityScheme
name: Name for query, header, cookie, or uri parameters. MAY be included. Type: string . td-vocabulary
2 0 31 33
112: td-vocab-in--BasicSecurityScheme Vocabulary N BasicSecurityScheme
in: Specifies the location of security authentication information. MAY be included. Type: string (one of header, query, body, cookie, or auto) . td-vocabulary
9 0 24 33
113: td-vocab-name--DigestSecurityScheme Vocabulary N DigestSecurityScheme
name: Name for query, header, cookie, or uri parameters. MAY be included. Type: string . td-vocabulary
2 0 31 33
114: td-vocab-in--DigestSecurityScheme Vocabulary N DigestSecurityScheme
in: Specifies the location of security authentication information. MAY be included. Type: string (one of header, query, body, cookie, or auto) . td-vocabulary
2 0 31 33
115: td-vocab-qop--DigestSecurityScheme Vocabulary N DigestSecurityScheme
qop: Quality of protection. MAY be included. Type: string (one of auth, or auth-int) . td-vocabulary
2 0 31 33
116: td-vocab-name--APIKeySecurityScheme Vocabulary N APIKeySecurityScheme
name: Name for query, header, cookie, or uri parameters. MAY be included. Type: string . td-vocabulary
4 0 29 33
117: td-vocab-in--APIKeySecurityScheme Vocabulary N APIKeySecurityScheme
in: Specifies the location of security authentication information. MAY be included. Type: string (one of header, query, body, cookie, uri, or auto) . td-vocabulary
5 0 28 33
118: td-security-bearer-format-extensions Security N BearerSecurityScheme
Other formats and algorithms for bearer tokens MAY be specified in vocabulary extensions td-security
3 0 30 33
118.01: td-security-bearer-format-extensions_alg Security N BearerSecurityScheme
Other algorithms for bearer tokens MAY be specified in vocabulary extensions. td-security
3 0 30 33
118.02: td-security-bearer-format-extensions_format Security N BearerSecurityScheme
Other formats for bearer tokens MAY be specified in vocabulary extensions. td-security
3 0 30 33
119: td-vocab-authorization--BearerSecurityScheme Vocabulary N BearerSecurityScheme
authorization: URI of the authorization server. MAY be included. Type: anyURI . td-vocabulary
3 0 30 33
120: td-vocab-name--BearerSecurityScheme Vocabulary N BearerSecurityScheme
name: Name for query, header, cookie, or uri parameters. MAY be included. Type: string . td-vocabulary
3 0 30 33
121: td-vocab-alg--BearerSecurityScheme Vocabulary N BearerSecurityScheme
alg: Encoding, encryption, or digest algorithm. MAY be included. Type: string (e.g., ES256, or ES512-256) . td-vocabulary
7 0 26 33
122: td-vocab-format--BearerSecurityScheme Vocabulary N BearerSecurityScheme
format: Specifies format of security authentication information. MAY be included. Type: string (e.g., jwt, cwt, jwe, or jws) . td-vocabulary
7 0 26 33
123: td-vocab-in--BearerSecurityScheme Vocabulary N BearerSecurityScheme
in: Specifies the location of security authentication information. MAY be included. Type: string (one of header, query, body, cookie, or auto) . td-vocabulary
5 0 28 33
124: td-vocab-identity--PSKSecurityScheme Vocabulary N PSKSecurityScheme
identity: Identifier providing information which can be used for selection or confirmation. MAY be included. Type: string . td-vocabulary
2 0 31 33
125: td-vocab-authorization--OAuth2SecurityScheme Vocabulary N OAuth2SecurityScheme
authorization: URI of the authorization server. MAY be included. Type: anyURI . td-vocabulary
5 0 28 33
126: td-vocab-token--OAuth2SecurityScheme Vocabulary N OAuth2SecurityScheme
token: URI of the token server. MAY be included. Type: anyURI . td-vocabulary
5 0 28 33
127: td-vocab-refresh--OAuth2SecurityScheme Vocabulary N OAuth2SecurityScheme
refresh: URI of the refresh server. MAY be included. Type: anyURI . td-vocabulary
2 0 31 33
128: td-vocab-scopes--OAuth2SecurityScheme Vocabulary N OAuth2SecurityScheme
scopes: Set 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. The values associated with a form SHOULD be chosen from those defined in an OAuth2SecurityScheme active on that form. MAY be included. Type: string or Array of string . td-vocabulary
5 0 28 33
129: td-vocab-flow--OAuth2SecurityScheme Vocabulary Y OAuth2SecurityScheme
flow: Authorization flow. MUST be included. Type: string (e.g., code, or client) . td-vocabulary
5 0 28 33
130: td-security-oauth2-code-flow Security Y OAuth2SecurityScheme
For the code flow both authorization and token vocabulary terms MUST be included. td-security
5 0 28 33
131: td-security-oauth2-client-flow Security Y OAuth2SecurityScheme
For the client flow token vocabulary term MUST be included. td-security
2 0 31 33
132: td-security-oauth2-client-flow-no-auth Security Y OAuth2SecurityScheme
For the client flow authorization vocabulary term MUST NOT be included. td-security
2 0 31 33
139: td-vocab-href--Form Vocabulary Y Form
href: Target IRI of a link or submission target of a form. MUST be included. Type: anyURI . td-vocabulary
31 0 2 33
140: td-vocab-contentType--Form Vocabulary N Form
contentType: Assign a content type based on a media type (e.g., text/plain) and potential parameters (e.g., charset=utf-8) for the media type [RFC2046]. MAY be included. Type: string . td-vocabulary
30 0 3 33
141: td-vocab-contentCoding--Form Vocabulary N Form
contentCoding: Content coding values indicate an encoding transformation that has been or can be applied to a representation. Content codings are primarily used to allow a representation to be compressed or otherwise usefully transformed without losing the identity of its underlying media type and without loss of information. Examples of content coding include "gzip", "deflate", etc. . MAY be included. Type: string . td-vocabulary
2 0 31 33
142: td-vocab-security--Form Vocabulary N Form
security: Set of security definition names, chosen from those defined in securityDefinitions. These must all be satisfied for access to resources. MAY be included. Type: string or Array of string . td-vocabulary
6 0 27 33
143: td-vocab-scopes--Form Vocabulary N Form
scopes: Set 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. The values associated with a form SHOULD be chosen from those defined in an OAuth2SecurityScheme active on that form. MAY be included. Type: string or Array of string . td-vocabulary
4 0 29 33
144: td-vocab-response--Form Vocabulary N Form
response: This optional term can be used if, e.g., the output communication metadata differ from input metadata (e.g., output contentType differ from the input contentType). The response name contains metadata that is only valid for the primary response messages. MAY be included. Type: ExpectedResponse . td-vocabulary
5 0 28 33
145: td-vocab-additionalResponses--Form Vocabulary N Form
additionalResponses: This optional term can be used if additional expected responses are possible, e.g. for error reporting. Each additional response needs to be distinguished from others in some way (for example, by specifying a protocol-specific error code), and may also have its own data schema. MAY be included. Type: Array of AdditionalExpectedResponse . td-vocabulary
7 0 26 33
146: td-vocab-subprotocol--Form Vocabulary N Form
subprotocol: Indicates 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 such as long polling (longpoll), WebSub [websub] (websub), Server-Sent Events (sse) [html] (also known as EventSource). Please note that there is no restriction on the subprotocol selection and other mechanisms can also be announced by this subprotocol term. MAY be included. Type: string (e.g., longpoll, websub, or sse) . td-vocabulary
17 0 16 33
147: td-vocab-op--Form Vocabulary N Form
op: Indicates the semantic intention of performing the operation(s) 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 for which and allows the client to select the correct form for the operation required. op can be assigned one or more interaction verb(s) each representing a semantic intention of an operation. MAY be included. Type: string or Array of string (one of readproperty, writeproperty, observeproperty, unobserveproperty, invokeaction, queryaction, cancelaction, subscribeevent, unsubscribeevent, readallproperties, writeallproperties, readmultipleproperties, writemultipleproperties, observeallproperties, unobserveallproperties, subscribeallevents, unsubscribeallevents, or queryallactions) . td-vocabulary
3 0 30 33
147.01: td-vocab-op--Form_invokeaction Vocabulary Y Form
Type: MUST be string or Array of string (invokeaction). td-vocabulary
14 0 19 33
147.02: td-vocab-op--Form_cancelaction Vocabulary Y Form
Type: MUST be string or Array of string (cancelaction). td-vocabulary
3 0 30 33
147.03: td-vocab-op--Form_queryaction Vocabulary Y Form
Type: MUST be string or Array of string (queryaction). td-vocabulary
3 0 30 33
147.04: td-vocab-op--Form_observeproperty Vocabulary Y Form
Type: MUST be string or Array of string (observeproperty). td-vocabulary
13 0 20 33
147.05: td-vocab-op--Form_readproperty Vocabulary Y Form
Type: MUST be string or Array of string (readproperty). td-vocabulary
26 0 7 33
147.06: td-vocab-op--Form_subscribeevent Vocabulary Y Form
Type: MUST be string or Array of string (subscribeevent). td-vocabulary
16 0 17 33
147.07: td-vocab-op--Form_unobserveproperty Vocabulary Y Form
Type: MUST be string or Array of string (unobserveproperty). td-vocabulary
7 0 26 33
147.08: td-vocab-op--Form_unsubscribeevent Vocabulary Y Form
Type: MUST be string or Array of string (unsubscribeevent). td-vocabulary
8 0 25 33
147.09: td-vocab-op--Form_writeproperty Vocabulary Y Form
Type: MUST be string or Array of string (writeproperty). td-vocabulary
15 0 18 33
147.10: td-vocab-op--Form_readallproperties Vocabulary Y Form
Type: MUST be string or Array of string (readallproperties). td-vocabulary
13 0 20 33
147.11: td-vocab-op--Form_writeallproperties Vocabulary Y Form
Type: MUST be string or Array of string (writeallproperties). td-vocabulary
8 0 25 33
147.12: td-vocab-op--Form_readmultipleproperties Vocabulary Y Form
Type: MUST be string or Array of string (readmultipleproperties). td-vocabulary
8 0 25 33
147.13: td-vocab-op--Form_writemultipleproperties Vocabulary Y Form
Type: MUST be string or Array of string (writemultipleproperties). td-vocabulary
8 0 25 33
147.14: td-vocab-op--Form_observeallproperties Vocabulary Y Form
Type: MUST be string or Array of string (observeallproperties). td-vocabulary
4 0 29 33
147.15: td-vocab-op--Form_unobserveallproperties Vocabulary Y Form
Type: MUST be string or Array of string (unobserveallproperties). td-vocabulary
4 0 29 33
147.16: td-vocab-op--Form_queryallactions Vocabulary Y Form
Type: MUST be string or Array of string (queryallactions). td-vocabulary
3 0 30 33
147.17: td-vocab-op--Form_subscribeallevents Vocabulary Y Form
Type: MUST be string or Array of string (subscribeallevents). td-vocabulary
3 0 30 33
147.18: td-vocab-op--Form_unsubscribeallevents Vocabulary Y Form
Type: MUST be string or Array of string (unsubscribeallevents). td-vocabulary
3 0 30 33
148: well-known-operation-types-only Syntax Y Form
operations types MUST be restricted to the values in the table below. 39 0 1 40
150: td-expectedResponse-contentType Syntax Y ActionAffordance
Form
If the content type of the expected response differs from the content type of the form, the Form instance MUST include a name-value pair with the name response. td-actions
9 0 27 36
151: td-additionalExpectedResponse-contentType Syntax Y Forms
If the content type of an additional expected response differs from the content type of the form, the Form instance MUST include an entry in the array associated with the name additionalResponses that includes a value for the name contentType. 7 0 26 33
152: td-additionalExpectedResponse-schema Syntax Y Forms
If the data schema of an additional expected response differs from the output data schema of the interaction, the Form instance MUST include an entry in the array associated with the name additionalResponses that includes a value for the name schema. 7 0 26 33
153: td-vocab-contentType--ExpectedResponse Vocabulary Y ExpectedResponse
contentType: Assign a content type based on a media type (e.g., text/plain) and potential parameters (e.g., charset=utf-8) for the media type [RFC2046]. MUST be included. Type: string . td-vocabulary
5 0 28 33
154: td-vocab-success--AdditionalExpectedResponse Vocabulary N success: Signals if an additional response should not be considered an error. MAY be included. Type: boolean . 7 0 26 33
155: td-vocab-contentType--AdditionalExpectedResponse Vocabulary N AdditionalExpectedResponse
contentType: Assign a content type based on a media type (e.g., text/plain) and potential parameters (e.g., charset=utf-8) for the media type [RFC2046]. MAY be included. Type: string . td-vocabulary
7 0 26 33
156: td-vocab-schema--AdditionalExpectedResponse Vocabulary N AdditionalExpectedResponse
schema: Used to define the output data schema for an additional response if it differs from the default output data schema. Rather than a DataSchema object, the name of a previous definition given in a schemaDefinitions map must be used. MAY be included. Type: string . td-vocabulary
7 0 26 33
177.01: td-json-open_utf-8 Syntax Y Thing
TDs MUST be encoded using UTF-8 [RFC3629]. td-json-open
33 0 0 33
178: td-string-type Syntax Y Thing
Values that are of type string or anyURI MUST be serialized as JSON strings. 33 0 0 33
179: td-datetime-type Syntax Y Thing
Values that are of type dateTime MUST be serialized as JSON strings following the "date-time" format specified by [RFC3339]. 10 0 23 33
181: td-integer-type Syntax Y Thing
Values that are of type integer or unsignedInt MUST be serialized as JSON numbers without a fraction or exponent part. 16 1 16 33
182: td-number-type Syntax Y Thing
Values that are of type double MUST be serialized as JSON number. 27 0 6 33
183: td-boolean-type Type Y Thing
Values that are of type boolean MUST be serialized as JSON boolean. 30 0 3 33
184: td-array-type Type Y Thing
A value of type Array MUST be serialized as JSON array, with each value of the name-value pairs as element of the JSON array ordered by the numeric name of the pair. 33 0 0 33
185: td-map-type Type Y Thing
A value of type Map MUST be serialized as a JSON object, with each name-value pair as member of the JSON object. 33 0 0 33
186: td-class-type Type Y Thing
A Class instance MUST be serialized as a JSON object, following the detailed rules given individually in 6.3 Information Model Serialization. 33 0 0 33
187: td-context Syntax Y Thing
The root element of a TD Serialization MUST be a JSON object that includes a member with the name @context and a value of type string or array that equals or respectively contains https://www.w3.org/2022/wot/td/v1.1. 24 0 9 33
188: td-context-toplevel Syntax Y Thing
All name-value pairs of an instance of Thing, where the name is a Vocabulary Term in the Signature of Thing, MUST be serialized as JSON members of the root object. 33 0 0 33
189: td-objects Syntax Y PropertyAffordance
ActionAffordance
EventAffordance
SecurityScheme
MultiLanguage
All values assigned to version, securityDefinitions, descriptions, schemaDefinitions, uriVariables, properties, actions, and events in an instance of the Class Thing MUST be serialized as JSON objects. 3 0 30 33
189.01: td-objects_actions Syntax Y Thing
The type of the members actions MUST be serialized as a JSON object. td-objects
23 0 10 33
189.02: td-objects_events Syntax Y Thing
The type of the members events MUST be serialized as a JSON object. td-objects
19 0 14 33
189.03: td-objects_properties Syntax Y Thing
The type of the members properties MUST be serialized as a JSON object. td-objects
33 0 0 33
189.04: td-objects_securityDefinitions Syntax Y Thing
The type of the members securityDefinitions MUST be serialized as a JSON object. td-objects
33 0 0 33
189.05: td-objects_version Syntax Y Thing
The type of the members version MUST be serialized as a JSON object. td-objects
12 0 21 33
189.06: td-objects_descriptions Syntax Y Thing
The type of the members descriptions MUST be serialized as a JSON object. td-objects
9 0 24 33
189.07: td-objects_schemaDefinitions Syntax Y Thing
The type of the members schemaDefinitions MUST be serialized as a JSON object. td-objects
3 0 30 33
189.08: td-objects_uriVariables Syntax Y Thing
The type of the members uriVariables MUST be serialized as a JSON object. td-objects
12 0 21 33
190: td-arrays Syntax Y Forms
Links
Security
Scopes
All values assigned to links, and forms in an instance of the Class Thing MUST be serialized as JSON arrays containing JSON objects as defined in 6.3.8 links and 6.3.9 forms, respectively. 11 0 22 33
190.02: td-arrays_forms Syntax Y Thing
InteractionAffordance
The type of the member forms MUST be a JSON array. td-arrays
31 0 2 33
191: td-security-activation Syntax Y Thing
Form
The value assigned to security in an instance of Class Thing MUST be serialized as JSON string or as JSON array whose elements are JSON strings. td-security
33 0 0 33
193: td-text-at-direction Language N (Context)
Given that the Thing Description format is based on JSON-LD 1.1 [json-ld11], @direction with the string values "ltr", "rtl" and null value null MAY be used inside the @context to indicate the default text direction for the human readable strings in the entire TD document. 2 0 31 33
196: td-multi-languages Syntax Y Thing
InteractionAffordance
DataSchema
All name-value pairs of a MultiLanguage Map MUST be serialized as members of a JSON object, where the name is a valid language tag as defined by [BCP47] (also see W3C I18N Glossary) and the value is a human-readable string in the language indicated by the tag. 7 0 26 33
196.01: td-multi-languages_descriptions Syntax Y Thing
InteractionAffordance
DataSchema
Whenever the vocabulary terms descriptions can be used it MUST be serialized as JSON object. The member names of the JSON Object MUST be the language tags as defined in [[BCP47]] (e.g., "en", "de", "ja", "zh-Hans", "zh-Hant"). The value of each member MUST be serialized as JSON string. td-multi-languages
8 0 25 33
196.02: td-multi-languages_titles Syntax Y Thing
InteractionAffordance
DataSchema
Whenever the vocabulary terms titles can be used it MUST be serialized as JSON object. The member names of the JSON Object MUST be the language tags as defined in [[BCP47]] (e.g., "en", "de", "ja", "zh-Hans", "zh-Hant"). The value of each member MUST be serialized as JSON string. td-multi-languages
7 0 26 33
197: td-multi-languages-consistent Syntax N Thing
InteractionAffordance
DataSchema
All MultiLanguage object within a TD document SHOULD contain the same set of language members. 33 0 0 33
198: td-title-description Syntax N Thing
InteractionAffordance
DataSchema
When title and titles or description and descriptions are present within the same JSON object, the values of title and description MAY be seen as the default text. 7 0 26 33
198.01: td-title-description_descriptions Syntax N Thing
InteractionAffordance
DataSchema
If description and descriptions are defined at the same time at the JSON level, description MAY be seen as default text. td-title-description
7 0 26 33
198.02: td-title-description_titles Syntax N Thing
InteractionAffordance
DataSchema
If title and titles are defined at the same time at the JSON level, title MAY be seen as default text. td-title-description
7 0 26 33
199: td-titles-descriptions Syntax N Thing
InteractionAffordance
DataSchema
When title and titles or description and descriptions are present in a TD document, each title and description member SHOULD have a corresponding titles and descriptions member, respectively. 7 0 26 33
203: td-version Syntax Y Thing
All name-value pairs of an instance of VersionInfo, where the name is a Vocabulary Term included in the Signature of VersionInfo, MUST be serialized as JSON members with the Vocabulary Term as name. 12 0 21 33
204: td-security Security Y Thing
Form
All name-value pairs of a Map of SecurityScheme instances MUST be serialized as members of the JSON object that results from serializing the Map; the name of a pair MUST be serialized as a JSON string and the value of the pair, an instance of SecurityScheme, MUST be serialized as a JSON object. td-security
33 0 0 33
205: td-security-schemes Syntax Y SecurityScheme
All name-value pairs of an instance of one of the Subclasses of SecurityScheme, where the name is a Vocabulary Term included in the Signature of that Subclass or in the Signature of SecurityScheme, MUST be serialized as members of the JSON object that results from serializing the SecurityScheme Subclass's instance, with the Vocabulary Term as name. td-security
33 0 0 33
206: td-security-mandatory Security Y Thing
At least one security definition MUST be activated through the security member at the Thing level (i.e., in the TD root object). td-security
33 0 0 33
207: td-security-overrides Security N Thing
Form
Security definitions MAY also be activated at the level of the form elements by including a security member in form objects, which overrides (i.e., completely replace) all definitions activated at the Thing level. td-security
6 0 27 33
208: td-security-combo-deprecation Security N ComboSecurityScheme
However, the use of an array with multiple elements to combine security schemes in a security element is now deprecated, instead a ComboSecurityScheme SHOULD be used. td-security
5 0 28 33
209: td-properties Syntax Y Thing
All name-value pairs of a Map of PropertyAffordance instances MUST be serialized as members of the JSON object that results from serializing the Map; the name of a pair MUST be serialized as a JSON string and the value of the pair, an instance of PropertyAffordance, MUST be serialized as a JSON object. 33 0 0 33
209.01: td-properties_existence Syntax Y Thing
Properties offered by a Thing MUST be collected in the JSON-object based properties member. td-properties
33 0 0 33
209.02: td-properties_uniqueness Syntax Y Thing
Properties collected in the JSON-object based properties member MUST have unique JSON names. td-properties
33 0 0 33
210: td-property-names Syntax Y PropertyAffordance
All name-value pairs of an instance of PropertyAffordance, where the name is a Vocabulary Term included in (one of) the Signatures of PropertyAffordance, InteractionAffordance, or DataSchema, MUST be serialized as members of the JSON object that results from serializing the PropertyAffordance instance, with the Vocabulary Term as name. td-properties
2 0 31 33
210.01: td-property-names_at-type Syntax Y PropertyAffordance
The vocabulary term @type MUST be serialized as a JSON name within a Property object. td-property-names
14 0 19 33
210.02: td-property-names_const Syntax Y PropertyAffordance
The vocabulary term const MUST be serialized as a JSON name within a Property object. td-property-names
2 0 31 33
210.03: td-property-names_contentEncoding Syntax Y PropertyAffordance
The vocabulary term contentEncoding MUST be serialized as a JSON name within a Property object. td-property-names
2 0 31 33
210.04: td-property-names_contentMediaType Syntax Y PropertyAffordance
The vocabulary term contentMediaType MUST be serialized as a JSON name within a Property object. td-property-names
2 0 31 33
210.05: td-property-names_description Syntax Y PropertyAffordance
The vocabulary term description MUST be serialized as a JSON name within a Property object. td-property-names
25 0 8 33
210.06: td-property-names_descriptions Syntax Y PropertyAffordance
The vocabulary term descriptions MUST be serialized as a JSON name within a Property object. td-property-names
4 0 29 33
210.07: td-property-names_enum Syntax Y PropertyAffordance
The vocabulary term enum MUST be serialized as a JSON name within a Property object. td-property-names
8 0 25 33
210.08: td-property-names_exclusiveMaximum Syntax Y PropertyAffordance
The vocabulary term exclusiveMaximum MUST be serialized as a JSON name within a Property object. td-property-names
2 0 31 33
210.09: td-property-names_exclusiveMinimum Syntax Y PropertyAffordance
The vocabulary term exclusiveMinimum MUST be serialized as a JSON name within a Property object. td-property-names
2 0 31 33
210.10: td-property-names_forms Syntax Y PropertyAffordance
The vocabulary term forms MUST be serialized as a JSON name within a Property object. td-property-names
31 0 2 33
210.11: td-property-names_format Syntax Y PropertyAffordance
The vocabulary term format MUST be serialized as a JSON name within a Property object. td-property-names
8 0 25 33
210.12: td-property-names_items Syntax Y PropertyAffordance
The vocabulary term items MUST be serialized as a JSON name within a Property object. td-property-names
5 0 28 33
210.13: td-property-names_maxItems Syntax Y PropertyAffordance
The vocabulary term maxItems MUST be serialized as a JSON name within a Property object. td-property-names
2 0 31 33
210.14: td-property-names_maximum Syntax Y PropertyAffordance
The vocabulary term maximum MUST be serialized as a JSON name within a Property object. td-property-names
15 0 18 33
210.15: td-property-names_minItems Syntax Y PropertyAffordance
The vocabulary term minItems MUST be serialized as a JSON name within a Property object. td-property-names
2 0 31 33
210.16: td-property-names_minimum Syntax Y PropertyAffordance
The vocabulary term minimum MUST be serialized as a JSON name within a Property object. td-property-names
15 0 18 33
210.17: td-property-names_maxLength Syntax Y PropertyAffordance
The vocabulary term maxLength MUST be serialized as a JSON name within a Property object. td-property-names
2 0 31 33
210.18: td-property-names_minLength Syntax Y PropertyAffordance
The vocabulary term minLength MUST be serialized as a JSON name within a Property object. td-property-names
2 0 31 33
210.19: td-property-names_multipleOf Syntax Y PropertyAffordance
The vocabulary term multipleOf MUST be serialized as a JSON name within a Property object. td-property-names
5 0 28 33
210.20: td-property-names_observable Syntax Y PropertyAffordance
The vocabulary term observable MUST be serialized as a JSON name within a Property object. td-property-names
16 0 17 33
210.21: td-property-names_oneOf Syntax Y PropertyAffordance
The vocabulary term oneOf MUST be serialized as a JSON name within a Property object. td-property-names
3 0 30 33
210.22: td-property-names_properties Syntax Y PropertyAffordance
The vocabulary term properties MUST be serialized as a JSON name within a Property object. td-property-names
17 0 16 33
210.23: td-property-names_readOnly Syntax Y PropertyAffordance
The vocabulary term readOnly MUST be serialized as a JSON name within a Property object. td-property-names
24 0 9 33
210.24: td-property-names_required Syntax Y PropertyAffordance
The vocabulary term required MUST be serialized as a JSON name within a Property object. td-property-names
4 0 29 33
210.25: td-property-names_title Syntax Y PropertyAffordance
The vocabulary term title MUST be serialized as a JSON name within a Property object. td-property-names
20 0 13 33
210.26: td-property-names_titles Syntax Y PropertyAffordance
The vocabulary term titles MUST be serialized as a JSON name within a Property object. td-property-names
4 0 29 33
210.27: td-property-names_type Syntax Y PropertyAffordance
The vocabulary term type MUST be serialized as a JSON name within a Property object. td-property-names
30 0 3 33
210.28: td-property-names_unit Syntax Y PropertyAffordance
The vocabulary term unit MUST be serialized as a JSON name within a Property object. td-property-names
11 0 22 33
210.29: td-property-names_uriVariables Syntax Y PropertyAffordance
The vocabulary term uriVariables MUST be serialized as a JSON name within a Property object. td-property-names
7 0 26 33
210.30: td-property-names_writeOnly Syntax Y PropertyAffordance
The vocabulary term writeOnly MUST be serialized as a JSON name within a Property object. td-property-names
12 0 21 33
211: td-property-arrays Syntax Y PropertyAffordance
The value assigned to forms in an instance of PropertyAffordance MUST be serialized as a JSON array containing one or more JSON object serializations as defined in 6.3.9 forms. td-properties
31 0 2 33
212: td-actions Syntax Y Thing
All name-value pairs of a Map of ActionAffordance instances MUST be serialized as members of the JSON object that results from serializing the Map; the name of a pair MUST be serialized as a JSON string and the value of the pair, an instance of ActionAffordance, MUST be serialized as a JSON object. 23 0 10 33
212.01: td-actions_uniqueness Syntax Y ActionAffordance
Actions collected in the JSON-object based actions member MUST have unique JSON names. td-actions
23 0 10 33
212.02: td-actions_existence Syntax Y ActionAffordance
Actions offered by a Thing MUST be collected in the JSON-object based actions member. td-actions
23 0 10 33
213: td-action-names Syntax Y ActionAffordance
All name-value pairs of an instance of ActionAffordance, where the name is a Vocabulary Term included in (one of) the Signatures of ActionAffordance or InteractionAffordance, MUST be serialized as members of the JSON object that results from serializing the ActionAffordance instance, with the Vocabulary Term as name. td-actions
2 0 31 33
213.01: td-action-names_idempotent Syntax Y ActionAffordance
The vocabulary term idempotent MUST be serialized as a JSON name within an Action object. td-action-names
17 0 16 33
213.02: td-action-names_forms Syntax Y ActionAffordance
The vocabulary term forms MUST be serialized as a JSON name within an Action object. td-action-names
21 0 12 33
213.03: td-action-names_descriptions Syntax Y ActionAffordance
The vocabulary term descriptions MUST be serialized as a JSON name within an Action object. td-action-names
4 0 29 33
213.04: td-action-names_description Syntax Y ActionAffordance
The vocabulary term description MUST be serialized as a JSON name within an Action object. td-action-names
21 0 12 33
213.05: td-action-names_uriVariables Syntax Y ActionAffordance
The vocabulary term uriVariables MUST be serialized as a JSON name within an Action object. td-action-names
9 0 24 33
213.06: td-action-names_at-type Syntax Y ActionAffordance
The vocabulary term @type MUST be serialized as a JSON name within an Action object. td-action-names
6 0 27 33
213.07: td-action-names_input Syntax Y ActionAffordance
The vocabulary term input MUST be serialized as a JSON name within an Action object. td-action-names
19 0 14 33
213.08: td-action-names_titles Syntax Y ActionAffordance
The vocabulary term titles MUST be serialized as a JSON name within an Action object. td-action-names
2 0 31 33
213.09: td-action-names_title Syntax Y ActionAffordance
The vocabulary term title MUST be serialized as a JSON name within an Action object. td-action-names
16 0 17 33
213.10: td-action-names_safe Syntax Y ActionAffordance
The vocabulary term safe MUST be serialized as a JSON name within an Action object. td-action-names
15 0 18 33
213.11: td-action-names_output Syntax Y ActionAffordance
The vocabulary term output MUST be serialized as a JSON name within an Action object. td-action-names
10 0 23 33
214: td-action-objects Syntax Y ActionAffordance
The values assigned to input and output in an instance of ActionAffordance MUST be serialized as JSON objects. td-actions
10 0 23 33
214.01: td-action-objects_output Syntax Y ActionAffordance
The type of the members output MUST be serialized as a JSON object. td-action-objects
10 0 23 33
214.02: td-action-objects_input Syntax Y ActionAffordance
The type of the members input MUST be serialized as a JSON object. td-action-objects
19 0 14 33
215: td-action-arrays Syntax Y ActionAffordance
The value assigned to forms in an instance of ActionAffordance MUST be serialized as a JSON array containing one or more JSON object serializations as defined in 6.3.9 forms. td-actions
21 0 12 33
216: td-events Syntax Y Thing
All name-value pairs of a Map of EventAffordance instances MUST be serialized as members of the JSON object that results from serializing the Map; the name of a pair MUST be serialized as a JSON string and the value of the pair, an instance of EventAffordance, MUST be serialized as a JSON object. 19 0 14 33
216.01: td-events_existence Syntax Y EventAffordance
Events offered by a Thing MUST be collected in the JSON-object based events member. td-events
19 0 14 33
216.02: td-events_uniqueness Syntax Y EventAffordance
Events collected in the JSON-object based events member MUST have unique JSON names. td-events
19 0 14 33
217: td-event-names Syntax Y EventAffordance
All name-value pairs of an instance of EventAffordance, where the name is a Vocabulary Term included in (one of) the Signatures of EventAffordance or InteractionAffordance, MUST be serialized as members of the JSON object that results from serializing the EventAffordance instance, with the Vocabulary Term as name. td-events
2 0 31 33
217.01: td-event-names_at-type Syntax Y The vocabulary term @type MUST be serialized as a JSON name within an Event object. 4 0 29 33
217.02: td-event-names_cancellation Syntax Y EventAffordance
The vocabulary term cancellation MUST be serialized as a JSON name within an Event object. td-event-names
2 0 31 33
217.03: td-event-names_data Syntax Y EventAffordance
The vocabulary term data MUST be serialized as a JSON name within an Event object. td-event-names
16 0 17 33
217.04: td-event-names_dataResponse Syntax Y EventAffordance
The vocabulary term dataResponse MUST be serialized as a JSON name within an Event object. td-event-names
16 0 17 33
217.05: td-event-names_description Syntax Y EventAffordance
The vocabulary term description MUST be serialized as a JSON name within an Event object. td-event-names
14 0 19 33
217.06: td-event-names_descriptions Syntax Y EventAffordance
The vocabulary term descriptions MUST be serialized as a JSON name within an Event object. td-event-names
3 0 30 33
217.07: td-event-names_forms Syntax Y EventAffordance
The vocabulary term forms MUST be serialized as a JSON name within an Event object. td-event-names
15 0 18 33
217.08: td-event-names_subscription Syntax Y EventAffordance
The vocabulary term subscription MUST be serialized as a JSON name within an Event object. td-event-names
2 0 31 33
217.09: td-event-names_title Syntax Y EventAffordance
The vocabulary term title MUST be serialized as a JSON name within an Event object. td-event-names
10 0 23 33
217.10: td-event-names_titles Syntax Y EventAffordance
The vocabulary term titles MUST be serialized as a JSON name within an Event object. td-event-names
4 0 29 33
217.11: td-event-names_uriVariables Syntax Y EventAffordance
The vocabulary term uriVariables MUST be serialized as a JSON name within an Event object. td-event-names
3 0 30 33
218: td-event-objects Syntax Y EventAffordance
The values assigned to subscription, data, and cancellation in an instance of EventAffordance MUST be serialized as JSON objects. td-events
2 0 31 33
218.01: td-event-objects_cancellation Syntax Y EventAffordance
The type of the members cancellation MUST be serialized as a JSON object. td-event-objects
2 0 31 33
218.02: td-event-objects_data Syntax Y EventAffordance
The type of the members data MUST be serialized as a JSON object. td-event-objects
16 0 17 33
218.03: td-event-objects_dataResponse Syntax Y EventAffordance
The type of the members dataResponse MUST be serialized as a JSON object. td-event-objects
16 0 17 33
218.04: td-event-objects_subscription Syntax Y EventAffordance
The type of the members subscription MUST be serialized as a JSON object. td-event-objects
2 0 31 33
219: td-event-arrays Syntax Y EventAffordance
The value assigned to forms in an instance of EventAffordance MUST be serialized as a JSON array containing one or more JSON object serializations as defined in 6.3.9 forms. td-events
15 0 18 33
221: td-forms Syntax Y Thing
InteractionAffordance
All name-value pairs of an instance of Form, where the name is a Vocabulary Term included in the Signature of Form, MUST be serialized as members of the JSON object that results from serializing the Form instance, with the Vocabulary Term as name. 31 0 2 33
223: td-uriVariables-names Syntax Y InteractionAffordance
In such a case, the URI Template variables MUST be collected in the JSON-object based uriVariables member either in the Thing level or in Interaction Affordance level with the associated (unique) variable names as JSON names. 11 0 22 33
224: td-uriVariables-dataschema Syntax Y InteractionAffordance
The serialization of each value in the map assigned to uriVariables in an instance of Form MUST rely on the Class DataSchema, whose serialization is defined in 6.3.10 Data Schemas. 11 0 22 33
225: td-form-response-object Syntax Y Form
If present, the value assigned to response in an instance of Form MUST be a JSON object. td-forms
5 0 28 33
226: td-forms-response Syntax Y Form
If present, the response object MUST contain a contentType member as defined in the Class definition of ExpectedResponse. 5 0 28 33
227: td-data-schema Syntax Y DataSchema
All name-value pairs of an instance of one of the Subclasses of DataSchema, where the name is a Vocabulary Term included in the Signature of that Subclass or in the Signature of DataSchema, MUST be serialized as members of the JSON object that results from serializing the DataSchema Subclass's instance, with the Vocabulary Term as name. 2 1 31 34
227.01: td-data-schema_at-type Syntax Y DataSchema
The @type vocabulary term as defined in the class DataSchema MUST be serialized as a JSON name. td-data-schema
14 0 19 33
227.02: td-data-schema_const Syntax Y DataSchema
The const vocabulary term as defined in the class DataSchema MUST be serialized as a JSON name. td-data-schema
7 0 26 33
227.03: td-data-schema_contentEncoding Syntax Y StringSchema
The contentEncoding vocabulary term as defined in the class DataSchema MUST be serialized as a JSON name. td-data-schema
2 0 31 33
227.04: td-data-schema_contentMediaType Syntax Y StringSchema
The contentMediaType vocabulary term as defined in the class DataSchema MUST be serialized as a JSON name. td-data-schema
2 0 31 33
227.05: td-data-schema_maxLength Syntax Y StringSchema
The maxLength vocabulary term as defined in the class DataSchema MUST be serialized as a JSON name. td-data-schema
2 0 31 33
227.06: td-data-schema_minLength Syntax Y StringSchema
The minLength vocabulary term as defined in the class DataSchema MUST be serialized as a JSON name. td-data-schema
2 0 31 33
227.07: td-data-schema_multipleOf-IntegerSchema Syntax Y IntegerSchema
The multipleOf vocabulary term as defined in the class DataSchema MUST be serialized as a JSON name. td-data-schema
2 0 31 33
227.08: td-data-schema_multipleOf-NumberSchema Syntax Y NumberSchema
The multipleOf vocabulary term as defined in the class DataSchema MUST be serialized as a JSON name. td-data-schema
4 0 29 33
227.09: td-data-schema_description Syntax Y DataSchema
The description vocabulary term as defined in the class DataSchema MUST be serialized as a JSON name. td-data-schema
29 0 4 33
227.10: td-data-schema_descriptions Syntax Y DataSchema
The descriptions vocabulary term as defined in the class DataSchema MUST be serialized as a JSON name. td-data-schema
7 0 26 33
227.11: td-data-schema_enum Syntax Y DataSchema
The enum vocabulary term as defined in the class DataSchema MUST be serialized as a JSON name. td-data-schema
13 0 20 33
227.12: td-data-schema_exclusiveMaximum-IntegerSchema Syntax Y IntegerSchema
The exclusiveMaximum vocabulary term as defined in the class DataSchema MUST be serialized as a JSON name. td-data-schema
2 0 31 33
227.13: td-data-schema_exclusiveMaximum-NumberSchema Syntax Y NumberSchema
The exclusiveMaximum vocabulary term as defined in the class DataSchema MUST be serialized as a JSON name. td-data-schema
2 0 31 33
227.14: td-data-schema_exclusiveMinimum-IntegerSchema Syntax Y IntegerSchema
The exclusiveMinimum vocabulary term as defined in the class DataSchema MUST be serialized as a JSON name. td-data-schema
2 0 31 33
227.15: td-data-schema_exclusiveMinimum-NumberSchema Syntax Y NumberSchema
The exclusiveMinimum vocabulary term as defined in the class DataSchema MUST be serialized as a JSON name. td-data-schema
2 0 31 33
227.16: td-data-schema_format Syntax Y DataSchema
The format vocabulary term as defined in the class DataSchema MUST be serialized as a JSON name. td-data-schema
8 0 25 33
227.17: td-data-schema_items Syntax Y ArraySchema
The items vocabulary term as defined in the class DataSchema MUST be serialized as a JSON name. td-data-schema
9 0 24 33
227.18: td-data-schema_maxItems Syntax Y ArraySchema
The maxItems vocabulary term as defined in the class DataSchema MUST be serialized as a JSON name. td-data-schema
5 0 28 33
227.19: td-data-schema_maximum-NumberSchema Syntax Y NumberSchema
The maximum vocabulary term as defined in the class DataSchema for numbers MUST be serialized as a JSON name. td-data-schema
18 0 15 33
227.20: td-data-schema_maximum-IntegerSchema Syntax Y IntegerSchema
The maximum vocabulary term as defined in the class DataSchema for integers MUST be serialized as a JSON name. td-data-schema
12 1 20 33
227.21: td-data-schema_minItems Syntax Y ArraySchema
The minItems vocabulary term as defined in the class DataSchema MUST be serialized as a JSON name. td-data-schema
5 0 28 33
227.22: td-data-schema_minimum-NumberSchema Syntax Y NumberSchema
The minimum vocabulary term as defined in the class DataSchema for numbers MUST be serialized as a JSON name. td-data-schema
18 0 15 33
227.23: td-data-schema_minimum-IntegerSchema Syntax Y IntegerSchema
The minimum vocabulary term as defined in the class DataSchema for integers MUST be serialized as a JSON name. td-data-schema
13 1 19 33
227.24: td-data-schema_oneOf Syntax Y DataSchema
The oneOf vocabulary term as defined in the class DataSchema for integers MUST be serialized as a JSON name. td-data-schema
5 0 28 33
227.25: td-data-schema_pattern Syntax Y StringSchema
The pattern vocabulary term as defined in the class DataSchema for integers MUST be serialized as a JSON name. td-data-schema
2 0 31 33
227.26: td-data-schema_properties Syntax Y ObjectSchema
The properties vocabulary term as defined in the class DataSchema for integers MUST be serialized as a JSON name. td-data-schema
23 0 10 33
227.27: td-data-schema_readOnly Syntax Y DataSchema
The readOnly vocabulary term as defined in the class DataSchema for integers MUST be serialized as a JSON name. td-data-schema
24 0 9 33
227.28: td-data-schema_required Syntax Y DataSchema
The required vocabulary term as defined in the class DataSchema for integers MUST be serialized as a JSON name. td-data-schema
9 0 24 33
227.29: td-data-schema_title Syntax Y DataSchema
The title vocabulary term as defined in the class DataSchema for integers MUST be serialized as a JSON name. td-data-schema
24 0 9 33
227.30: td-data-schema_titles Syntax Y DataSchema
The titles vocabulary term as defined in the class DataSchema for integers MUST be serialized as a JSON name. td-data-schema
6 0 27 33
227.31: td-data-schema_type Syntax Y DataSchema
The type vocabulary term as defined in the class DataSchema for integers MUST be serialized as a JSON name. td-data-schema
32 1 0 33
227.32: td-data-schema_unit Syntax Y DataSchema
The unit vocabulary term as defined in the class DataSchema for integers MUST be serialized as a JSON name. td-data-schema
14 0 19 33
227.33: td-data-schema_writeOnly Syntax Y DataSchema
The writeOnly vocabulary term as defined in the class DataSchema for integers MUST be serialized as a JSON name. td-data-schema
14 0 19 33
228: td-data-schema-objects Syntax Y DataSchema
The value assigned to properties in an instance of ObjectSchema MUST be serialized as a JSON object. td-data-schema
23 0 10 33
229: td-data-schema-arrays Syntax Y DataSchema
The values assigned to enum, required, and oneOf in an instance of DataSchema MUST be serialized as a JSON array. td-data-schema
5 0 28 33
229.01: td-data-schema-arrays_enum Syntax Y DataSchema
The value of the member enum MUST be serialized as a JSON array with a DataSchema object. td-data-schema-arrays
13 0 20 33
229.02: td-data-schema-arrays_oneOf Syntax Y DataSchema
The value of the member oneOf MUST be serialized as a JSON array with a DataSchema object. td-data-schema-arrays
5 0 28 33
229.03: td-data-schema-arrays_required Syntax Y DataSchema
The value of the member required MUST be serialized as a JSON array with a DataSchema object. td-data-schema-arrays
9 0 24 33
230: td-data-schema-objects-arrays Syntax Y DataSchema
The value assigned to items in an instance of ArraySchema MUST be serialized as a JSON object or a JSON array containing JSON objects. td-data-schema
9 0 24 33
245: tm-identification Model Y (Model)
Thing Model definitions MUST use the keyword @type at top level and a value of type string or array that equals or respectively contains tm:ThingModel. thing-model
6 0 0 6
246: tm-context-requirement Model Y (Model)
(Context)
Additionally, in order to identify it as a JSON-LD document, Thing Model definitions MUST use the keyword @context at top level with same rules as a Thing Description. thing-model
7 0 0 7
247: tm-protocol-security-restriction Model N (Model)
A Thing Model MAY NOT contain instance specific Protocol Binding and security information such as endpoint addresses. thing-model
7 0 0 7
249: tm-versioning-2 Y Due to the definition of Thing Model the term instance MUST be omitted within the version container. 5 0 1 6
250: tm-extend Model Y (Model)
When a Thing Model extends another Thing Model, at least one links entry with "rel": "tm:extends" that targets a Thing Model that is be extended MUST be used. thing-model
2 0 4 6
253: tm-tmRef-usecase Model N (Model)
For importing pieces of definitions of one or more existing Thing Models, the tm:ref term is introduced that provides the location of an existing (sub-)definition that SHOULD be reused. thing-model
3 0 4 7
254: tm-tmRef1 Model Y (Model)
The tm:ref value MUST follow the pattern that starts with the file location as URI [RFC3986](Section 4.1)), followed by # character, and followed by JSON Pointer [RFC6901] definition. thing-model
2 0 4 6
260: tm-compose-submodel Model Y (Model)
If it is desired to provide information that a Thing Model consists of one or more (sub-)Thing Models, the links entries MUST use the "rel": "tm:submodel" that targets to the (sub-) Thing Models. thing-model
3 0 4 7
261: tm-compose-instanceName Model N (Model)
Optionally an instanceName MAY be provided to associate an individual name to the composed (sub-) Thing Model. thing-model
3 0 4 7
262: tm-compose-name-collision Model Y (Model)
Thereby the generation process MUST avoid possible name collisions. thing-model
5 0 29 34
263: tm-tmOptional Y If interaction models are not mandatory to be implemented in a Thing Description instance, Thing Model definitions MUST use the JSON member name tm:optional. 2 0 4 6
264: tm-tmOptional-array Y tm:optional MUST be a JSON array at the top level. 2 0 4 6
265: tm-tmOptional-JSONPointer Y The value of tm:optional MUST provide JSON Pointer [RFC6901] references to the required interaction model definitions. 2 0 4 6
266: tm-tmOptional-resolver Y The JSON Pointers of tm:optional MUST resolve to an entire interaction affordance Map definition. 2 0 4 6
267: tm-placeholder-usecase Model N (Model)
In a case where TD instance terms, but not their values, are known in advance, the placeholder labeling MAY be used in a Thing Model. thing-model
4 0 3 7
269: tm-placeholder Model Y (Model)
The string-based pattern of the placeholder MUST follow a valid pattern based on the regular expression {{2}[ -~]+}{2} (e.g., {{PLACEHOLDER_IDENTIFIER}}). The characters between {{ and }} are used as identifier name of the placeholder. The identifier name can be used to identify the placeholder for the substitution process. thing-model
2 0 4 6
270: tm-placeholder-value Model Y (Model)
A placeholder MUST be applied within the value of the JSON name-value pair. thing-model
6 0 0 6
271: tm-placeholder-retyping Model Y (Model)
If a non string-based value of a JSON name-value pair has a placeholder, the value MUST be (temporarily) typed as string. thing-model
5 0 3 8
272: tm-td-generation-inconsistencies Model Y (Model)
A Thing Model MUST be defined in such a way that there are no inconsistencies that would result in a Thing Description not being able to meet the requirements as described in Section 5. TD Information Model and 6. TD Representation Format. thing-model
6 0 0 6
273: thing-model-td-generation-processor-imports Y Copy all definitions from the input Thing Model to the resulting Partial TD instance. If used, the extension and imports feature MUST be resolved and represented in the Partial TD instance according to 9.3.2 Extension and Import. 3 1 28 32
275: thing-model-td-generation-processor-type Y The tm:ThingModel value of the top-level @type MUST be removed in the Partial TD instance. 3 1 28 32
277: thing-model-td-generation-processor-optional N All optional interactions (listed in tm:optional) MAY be taken over to the Partial TD instance. 2 0 29 31
280: tm-rel-type-maximum Model Y (Model)
The links array MUST use the entry with "rel": "type" a maximum of once. thing-model
3 0 30 33
284: sec-vuln-auto Security N The auto security scheme MAY be used if vulnerability scanning is a concern. 2 0 31 33
293: privacy-id-metadata Privacy N The value of the id of a TD SHOULD NOT contain metadata describing the Thing or from the TD itself. 9 1 25 35
295: privacy-distributed-ids Privacy N TD identifiers SHOULD be generated using a distributed mechanism such as UUIDs that provides a high probability of uniqueness. 9 0 24 33

8.2 Manual validation results

The following assertions have been manually validated by the implementers.

ID Category Req Context Assertion Parent Results
P F N T
26: td-context-ns-td10-namespacev10 Context Y TD 1.1 consumers MUST accept TDs satisfying the W3C WoT Thing Description 1.0 [wot-thing-description10] specification. 2 0 1 3
30: td-processor-bidi-isolation N TD Processors SHOULD take care to use bidi isolation when presenting strings to users, particularly when embedding in surrounding text (e.g., for Web user interface) 2 0 0 2
31: td-producer-mixed-direction N TD producers SHOULD attempt to provide mixed direction strings in a way that can be displayed successfully by a naive user agent. 2 0 0 2
72: td-format-validation-other-values Syntax N DataSchema
When a value that is not found in the known set of values is assigned to format, such a validation SHOULD succeed. td-data-schema
5 0 7 12
94: td-security-no-secrets Security Y For all security schemes, any keys, passwords, or other sensitive information directly providing access MUST NOT be stored in the TD and should instead be shared and stored out-of-band via other mechanisms. 9 0 0 9
96: sec-body-name-json-pointer-creatable Security Y When an element of a data schema indicated by a JSON pointer indicated in a body locator does not already exist in the indicated schema, it MUST be possible to insert the indicated element at the location indicated by the pointer. 2 0 2 4
98: sec-body-name-json-pointer-type Security Y The element referenced (or created) by a body security information location MUST be required and of type "string". 2 0 1 3
99: td-security-in-query-over-uri Security N The value uri SHOULD be specified for the name in in a security scheme only if query is not applicable. 2 0 31 33
149: td-expectedResponse-default-contentType Default Y ActionAffordance
Form
If no response name-value pair is provided, it MUST be assumed that the content type of the response is equal to the content type assigned to the Form instance. td-serialization-default-values
8 0 4 12
157: td-vocabulary-defaults Vocabulary Y Thing
When assignments in a TD are missing, a TD Processor MUST follow the Default Value assignments expressed in the table of Default Value Definitions. td-vocabulary
18 0 0 18
158: td-default-readOnly Default Y PropertyAffordance
DataSchema
The value associated with member "readOnly" if not given MUST be assumed to have the default value "false". td-serialization-default-values
17 0 2 19
159: td-default-writeOnly Default Y PropertyAffordance
DataSchema
The value associated with member "writeOnly" if not given MUST be assumed to have the default value "false". td-serialization-default-values
16 0 3 19
160: td-default-observable Default Y PropertyAffordance
The value associated with member "observable" if not given MUST be assumed to have the default value "false". td-serialization-default-values
11 0 0 11
161: td-default-safe Default Y ActionAffordance
The value associated with member "safe" if not given MUST be assumed to have the default value "false". td-serialization-default-values
8 0 8 16
162: td-default-idempotent Default Y ActionAffordance
The value associated with member "idempotent" if not given MUST be assumed to have the default value "false". td-serialization-default-values
10 0 8 18
163: td-default-success Default Y AdditionalExpectedResponse
The value associated with member "success" if not given MUST be assumed to have the default value "false". td-serialization-default-values
4 0 4 8
164: td-default-AdditionalResponseContentType Default Y AdditionalExpectedResponse
The value associated with member "contentType" if not given MUST be assumed to have the default value "value of the contentType of the Form element it belongs to.". td-serialization-default-values
3 0 5 8
165: td-default-contentType Default Y Form
The value associated with member "contentType" if not given MUST be assumed to have the default value "application/json". td-serialization-default-values
15 0 3 18
166: td-default-op-properties Default Y Form
The value associated with member "op" if not given MUST be assumed to have the default value " Array of string with the elements readproperty and writeproperty when readOnly and writeOnly are set to false or Array of string with the element readproperty when readOnly is set to true or Array of string with the element writeproperty when writeOnly is set to true. ". td-serialization-default-values
13 0 5 18
167: td-default-op-actions Default Y Form
The value associated with member "op" if not given MUST be assumed to have the default value "invokeaction". td-serialization-default-values
10 0 7 17
168: td-default-op-events Default Y Form
The value associated with member "op" if not given MUST be assumed to have the default value " Array of string with the elements subscribeevent and unsubscribeevent ". td-serialization-default-values
7 0 8 15
169: td-default-in-basic Default Y BasicSecurityScheme
The value associated with member "in" if not given MUST be assumed to have the default value "header". td-serialization-default-values
7 0 6 13
170: td-default-in-digest Default Y DigestSecurityScheme
The value associated with member "in" if not given MUST be assumed to have the default value "header". td-serialization-default-values
6 0 6 12
171: td-default-qop Default Y DigestSecurityScheme
The value associated with member "qop" if not given MUST be assumed to have the default value "auth". td-serialization-default-values
6 0 6 12
172: td-default-in-apikey Default Y APIKeySecurityScheme
The value associated with member "in" if not given MUST be assumed to have the default value "query". td-serialization-default-values
5 0 7 12
173: td-default-in-bearer Default Y BearerSecurityScheme
The value associated with member "in" if not given MUST be assumed to have the default value "header". td-serialization-default-values
8 0 5 13
174: td-default-alg Default Y BearerSecurityScheme
The value associated with member "alg" if not given MUST be assumed to have the default value "ES256". td-serialization-default-values
9 0 4 13
175: td-default-format Default Y BearerSecurityScheme
The value associated with member "format" if not given MUST be assumed to have the default value "jwt". td-serialization-default-values
7 0 6 13
176: td-processor-serialization Syntax Y (TD Processor)
A TD Processor MUST be able to serialize Thing Descriptions into the JSON format [RFC8259] and/or deserialize Thing Descriptions from that format, according to the rules noted in 6.1 Mapping to JSON Types and 6.3 Information Model Serialization. 13 0 0 13
177: td-json-open Syntax Y Thing
TDs MUST be serialized according to the requirements defined in Section 8.1 of RFC8259 [RFC8259] for open ecosystems. 9 0 5 14
177.02: td-json-open_no-byte-order Syntax Y Thing
Implementations MUST NOT add a byte order mark (U+FEFF) to the beginning of a TD document. td-json-open
15 0 0 15
177.03: td-json-open_accept-byte-order Syntax N Thing
TD Processors MAY ignore the presence of a byte order mark rather than treating it as an error. td-json-open
9 0 5 14
192: td-context-default-language-direction-independence Language Y (TD Consumer)
However, when interpreting human-readable text, each human-readable string value MUST be processed independently. 5 0 6 11
194: td-text-direction-first-strong Language N When metadata such as @direction is not present, TD Consumers SHOULD use first-strong detection as a fallback. 2 0 1 3
195: td-text-direction-language-tag Language N For the MultiLanguage Map, TD Consumers MAY infer the base direction from the language tag of the individual strings. 2 0 1 3
200: td-ns-multilanguage-content-negotiation Behavior Y (TD Producer)
In cases where the default language has been negotiated, an @language member MUST be present to indicate the result of the negotiation and the corresponding default language of the returned content. 3 0 8 11
201: td-ns-multilanguage-content-negotiation-no-multi Behavior N (TD Producer)
When the default language has been negotiated successfully, TD documents SHOULD include the appropriate matching values for the members title and description in preference to MultiLanguage objects in titles and descriptions members. 2 0 8 10
202: td-ns-multilanguage-content-negotiation-optional Behavior N (TD Producer)
Note however that Things MAY choose to not support such dynamically-generated TDs nor to support language negotiation (e.g., because of resource constraints). 3 0 6 9
222: td-form-protocolbindings Syntax N Form
If required, form objects MAY be supplemented with protocol-specific Vocabulary Terms identified with a prefix. td-forms
11 0 2 13
231: td-security-extension Security Y Additional security schemes MUST be Subclasses of the Class SecurityScheme. 3 0 0 3
232: td-security-binding Behavior Y Thing
If a Thing requires a specific access mechanism for an interaction, that mechanism MUST be specified in the security configuration of the Thing Description. td-security
27 0 10 37
233: td-security-no-extras Behavior Y Thing
If a Thing does not require a specific access mechanism for an interaction, that mechanism MUST NOT be specified in the security configuration of the Thing Description. td-security
10 0 1 11
234: client-data-schema Behavior Y (TD Consumer)
A Consumer when interacting with another target Thing described in a WoT Thing Description MUST generate data organized according to the data schemas given in the corresponding interactions. 5 0 4 9
235: server-data-schema Behavior Y (TD Producer)
A WoT Thing Description MUST accurately describe the data returned and accepted by each interaction. 18 0 0 18
236: server-data-schema-extras Behavior N (TD Producer)
A Thing MAY return additional data from an interaction even when such data is not described in the data schemas given in its WoT Thing Description. 5 1 7 13
237: client-data-schema-accept-extras Behavior Y (TD Consumer)
A Consumer when interacting with another Thing MUST accept without error any additional data not described in the data schemas given in the Thing Description of the target Thing. 3 2 4 9
238: client-data-schema-no-extras Behavior Y (TD Consumer)
A Consumer when interacting with another Thing MUST NOT generate data not described in the data schemas given in the Thing Description of that Thing. 3 1 5 9
239: client-uri-template Behavior Y (TD Consumer)
A Consumer when interacting with another Thing MUST generate URIs according to the URI Templates, base URIs, and form href parameters given in the Thing Description of the target Thing. 4 0 5 9
240: server-uri-template Behavior Y (TD Producer)
URI Templates, base URIs, and href members in a WoT Thing Description MUST accurately describe the WoT Interface of the Thing. 13 0 5 18
241: bindings-requirements-scheme Behavior Y Form
Every form in a WoT Thing Description MUST follow the requirements of the Protocol Binding indicated by the URI scheme [RFC3986] of its href member. 18 0 1 19
242: bindings-server-accept Behavior Y (TD Producer)
Every form in a WoT Thing Description MUST accurately describe requests (including request headers, if present) accepted by the Thing in an interaction. 16 0 1 17
243: td-default-http-method Default Y Form
When no method is indicated in a form representing an Protocol Binding based on HTTP, a Default Value MUST be assumed as shown in the following table. td-serialization-default-values
11 0 5 16
243.01: td-default-http-method_get Default Y htv:methodName
The value associated with member "GET" if not given MUST be assumed to have the default value "Form with operation type readproperty, readallproperties, readmultipleproperties". td-serialization-default-values
12 0 4 16
243.02: td-default-http-method_put Default Y htv:methodName
The value associated with member "PUT" if not given MUST be assumed to have the default value "Form with operation type writeproperty, writeallproperties, writemultipleproperties". td-serialization-default-values
11 0 4 15
243.03: td-default-http-method_post Default Y htv:methodName
The value associated with member "POST" if not given MUST be assumed to have the default value "Form with operation type invokeaction". td-serialization-default-values
11 0 5 16
244: tm-derivation-validity N When a Thing Descriptions is instantiated by relying on a Thing Model, it SHOULD be valid according to that Thing Model. 2 0 0 2
248: tm-versioning-1 N When the Thing Model definitions change over time, this SHOULD be reflected in the version container. 2 0 2 4
251: tm-overwrite-interaction Model N (Model)
A Thing Model SHOULD NOT overwrite the JSON names defined within the properties, actions, and/or events Map of the extended Thing Model. thing-model
3 0 1 4
252: tm-overwrite-types Model N (Model)
Definitions SHOULD NOT be overwritten in such a way that possible instance values are no longer valid compared to the origin extended definitions. thing-model
3 0 2 5
255: tm-tmRef2 Model Y (Model)
Every time tm:ref is used, the referenced pre-definition and its dependencies (e.g., by context extension) MUST be assumed at the new defined definition. thing-model
2 0 2 4
256: tm-tmRef-overwrite-possibility Model Y (Model)
If the intention is to override an existing JSON name-value pair definition from tm:ref, the same JSON name MUST be used at the same level of the tm:ref declaration that provides a new value. thing-model
3 0 0 3
257: tm-tmRef-overwrite-process Model Y (Model)
The process to overwrite MUST follow the JSON Merge Patch algorithm as defined in [RFC7396] where the content of the referenced definition is patched with the new provided JSON name-value pairs. thing-model
3 0 0 3
258: tm-tmRef-overwrite-semantic-meaning Model N (Model)
Similar to tm:extends and to keep the semantic meaning, definitions SHOULD NOT be overwritten in such a way that possible instance values are no longer valid compared to the origin referenced definition. thing-model
2 0 2 4
259: tm-ref-recursive-extensions Model Y (Model)
Recursive extensions leading to an infinite loop MUST NOT be defined. thing-model
5 0 0 5
268: tm-placeholder-replacement Model Y (Model)
The placeholder labeling MUST be substituted with a concrete value (e.g., as JSON number, JSON string, JSON object, etc) when TD instance is created from the Thing Model. thing-model
5 0 0 5
274: thing-model-td-generation-processor-extends Y If used, links element entry with "rel":"tm:extends" MUST be removed from the current Partial TD 3 1 0 4
276: thing-model-td-generation-processor-required Y All required interactions (not listed in tm:optional) MUST be taken over to the Partial TD instance. 3 1 0 4
278: thing-model-td-generation-processor-placeholder Y If used, all placeholders (see Section 9.3.5 Placeholder) in the Thing Model MUST be replaced with a valid corresponding value in the Partial TD. 4 0 0 4
279: thing-model-td-generation-processor-forms Y Missing communication and/or security metadata details MUST be completed in the Thing Description instance based on Section 6.3.4 securityDefinitions and security and/or 6.3.9 forms. 3 0 1 4
281: security-mutual-auth-td Security N Thing Descriptions SHOULD be obtained only through mutually authenticated secure channels. 2 0 5 7
282: security-server-auth-td Security N In cases where the Consumer is associated with a person, e.g. browsers, TDs MAY be obtained through a channel where only the TD provider is authenticated. 3 0 1 4
283: security-oauth-limits Security N To limit the scope and duration of access to Things, tokens SHOULD be used to manage access. 2 0 1 3
285: sec-inj-no-intl-markup Security N HTML markup SHOULD NOT be used for internationalization purposes in TD strings. 2 0 1 3
286: security-no-execution Security Y A WoT Thing Description JSON-LD serialization MUST NOT be passed through a code execution mechanism such as JavaScript's eval() function to be parsed. 5 0 0 5
287: security-jsonld-expansion Security N Consumers SHOULD set and enforce limits on memory usage to prevent buffer overflow and resource exhaustion during JSON-LD processing. 2 0 3 5
288: security-static-context Security N Constrained implementations SHOULD use vetted versions of their supported context extensions managed statically or as part of a secure update process. 2 0 1 3
289: security-remote-context Security N Constrained implementations SHOULD NOT follow links to remote contexts. 2 0 1 3
290: privacy-mutable-identifiers Privacy N All identifiers used in a TD SHOULD be mutable, and in particular there SHOULD be a mechanism to update the id of a Thing when necessary. 3 0 1 4
291: privacy-auth-users-only Privacy N Only authorized users SHOULD be provided access to the Thing Description for a Thing. 3 0 2 5
292: privacy-essential-metadata-only Privacy N Only the amount of information needed for the level of authorization and the use case SHOULD be provided in a TD. 3 0 1 4
294: privacy-temp-id-metadata Privacy N Any temporary ID generated to manage TDs, for example an ID for a database or directory service, SHOULD NOT contain metadata describing the Thing or from the TD itself. 2 0 1 3
296: privacy-centralized-ids Privacy N TD identifiers SHOULD NOT be generated using a centralized authority. 6 0 0 6

Appendix

Acknowledgements

The Web of Things Working Group would like to acknowledge the contributions to the making of this document from the following individuals in various capacities, including contributions to past testing inputs which were used for compatibility testing: