From 4cea12f14e27e37179dd40be5a1cd680ba6f6840 Mon Sep 17 00:00:00 2001 From: Michael Lagally Date: Fri, 2 Sep 2022 14:30:29 +0200 Subject: [PATCH 01/33] 1st draft --- index.html | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/index.html b/index.html index 3d5a639..62c5950 100644 --- a/index.html +++ b/index.html @@ -1854,6 +1854,53 @@

Default Language

(e.g., en, de-AT, gsw-CH, zh-Hans, zh-Hant-HK, sl-nedis). +
+

Identifiers

+

+ Web resources are identified by uniform resource identifiers (URIs). + The Thing Description defines the field id for that purpose, which is in the format "anyURI". + In deployments of multiple devices in the same application context, things must be distinguished by the consumer. + In these cases, these identifiers must be unique. + Use cases with worldwide deployments typically require globally unique identifiers. +

+
+

Format

+

+ A common and well defined format for these identifiers enables easy implementation + and simplifies handling across manufacturers through the use of libraries. + It also ensures that there are no name clashes of devices from different manufacturers. + The [[UUID]] format has been developed to satisfy these requirements. +

+

+ + It is RECOMMENDED to use Universally Unique IDentifier (UUID) [[RFC4122]] as common format for identifers. + +

+ + It is RECOMMENDED to use [[UUIDv4]] as common format for unique identifers, where random identifiers are required. + +

+
+
+

Unique Identifiers

+

+ Many use cases require that identifiers do not change during the lifecycle of the thing in the application context. + However there are cases, where the IDs must change due to legal or privacy obligations. + IDs should be changed when a device is offboarded and onboarded on a new system (e.g. for change + of ownership). + In these cases, or when a device is moved to a new usage context, identifiers usually must change. +

+ +

+ In certain use cases where privacy is a factor or legal obligations mandate changing identifiers, + the use of a mutable UUID is RECOMMENDED. +

+ +

+ If possible and allowed by law, required immutable IDs SHOULD be made available through a + property rather than used as the id for the TD itself. +

+
From 3da07f2d96afa750c51031ae6199fc4d830e1d5b Mon Sep 17 00:00:00 2001 From: Luca Barbato Date: Mon, 13 Feb 2023 16:38:50 +0100 Subject: [PATCH 02/33] Fix the Errors heading level --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 048f243..9864332 100644 --- a/index.html +++ b/index.html @@ -901,7 +901,7 @@

Media Types for Link Targets

-

Errors

+

Errors

If any of the operations defined in the protocol bindings of HTTP From 63566cdacefbf8cd568d2ed60fb1331aca539185 Mon Sep 17 00:00:00 2001 From: Michael Lagally <31951801+mlagally@users.noreply.github.com> Date: Thu, 16 Feb 2023 18:19:53 +0100 Subject: [PATCH 03/33] Update Explainer.md --- explainer/Explainer.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/explainer/Explainer.md b/explainer/Explainer.md index 4e4fba1..55e876b 100644 --- a/explainer/Explainer.md +++ b/explainer/Explainer.md @@ -67,11 +67,10 @@ A Consumer of a Web Thing conforming to the HTTP Basic Profile must implement t | cancelaction | cancel an ongoing asynchronous action request | | queryallactions | query the status of all ongoing action requests | -On synchronous actions, the action output result is contained in the response. -For asynchronous actions the operation returns an ActionStatus object in the response. -This ActionStatus object contains a status member and a URL that can be used to query the action status using the queryaction operation. - -On synchronous actions, the action output result is contained in the response. For asynchronous actions the operation returns an Action Status object in the response. This Action Status object contains a status member and a URL that can be used to query the status of the action using the queryaction operation. +On synchronous actions, the action output result is contained in the response. +For asynchronous actions the operation returns an Action Status object in the response. +This Action Status object contains a status member and a URL that can be used +to query the status of the action using the queryaction operation. ### Common Error Responses If any of the operations on properties, actions and events defined above are unsuccessful, the Web Thing must send an HTTP response with an HTTP error code which describes the reason for the failure. The profile restricts the permitted error codes to enable uniform and common error handling across devices from multiple manufacturers. From a96e5b7a639ac25e02226a916c4432315d56f6e2 Mon Sep 17 00:00:00 2001 From: Michael Lagally <31951801+mlagally@users.noreply.github.com> Date: Thu, 16 Feb 2023 18:59:58 +0100 Subject: [PATCH 04/33] Update index.html --- index.html | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/index.html b/index.html index 62c5950..1f61090 100644 --- a/index.html +++ b/index.html @@ -1858,7 +1858,10 @@

Default Language

Identifiers

Web resources are identified by uniform resource identifiers (URIs). - The Thing Description defines the field id for that purpose, which is in the format "anyURI". + The Thing Description defines the field +

In deployments of multiple devices in the same application context, things must be distinguished by the consumer. In these cases, these identifiers must be unique. Use cases with worldwide deployments typically require globally unique identifiers. @@ -1882,7 +1885,7 @@

Format

-

Unique Identifiers

+

Mutable and Immutable Identifiers

Many use cases require that identifiers do not change during the lifecycle of the thing in the application context. However there are cases, where the IDs must change due to legal or privacy obligations. @@ -4217,4 +4220,4 @@

Open Issues

- \ No newline at end of file + From 5bbd01401180b23fe3f135e21ccbd074d09357c4 Mon Sep 17 00:00:00 2001 From: Luca Barbato Date: Mon, 13 Feb 2023 19:27:00 +0100 Subject: [PATCH 05/33] Clarify the security constraints for HTTP --- index.html | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index 9864332..7dc1f4b 100644 --- a/index.html +++ b/index.html @@ -643,12 +643,15 @@

Security

- Conformant Consumers MUST support all of these security schemes. + Conformant Consumers MUST support at least all of these security schemes.

A Thing MAY implement multiple security schemes.

+

+ A Thing MUST support at least one of the above security schemes. +

Conformant Consumers MUST support security bootstrapping for all From 01775c45828956ca4ee5aa79a621df99bd1abe8c Mon Sep 17 00:00:00 2001 From: Luca Barbato Date: Thu, 2 Mar 2023 13:35:01 +0100 Subject: [PATCH 06/33] Add 503 as suggested error code --- index.html | 1 + 1 file changed, 1 insertion(+) diff --git a/index.html b/index.html index 7dc1f4b..d34dabf 100644 --- a/index.html +++ b/index.html @@ -923,6 +923,7 @@

Errors

  • 403 Forbidden
  • 404 Not Found
  • 500 Internal Server Error
  • +
  • 503 Service Unavailable
  • From 6d78636bbe5968028f5553b609f32c8ad4a633c5 Mon Sep 17 00:00:00 2001 From: Luca Barbato Date: Thu, 2 Mar 2023 13:36:16 +0100 Subject: [PATCH 07/33] Clarify the default behaviour for async actions See #369 --- index.html | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index d34dabf..4efbaa1 100644 --- a/index.html +++ b/index.html @@ -1671,7 +1671,19 @@

    Asynchronous Action Response
    "timeRequested": "2021-11-10T11:43:19.135Z" } -
    +
    +

    + In resource constrained environments, if the buffer becomes full then a Web Thing SHOULD + remove the oldest Action result ActionStatus from its buffer to make room for a newer one. +

    +
    +
    +

    + A Web Thing MUST return a 503 error response if the invocation cannot be enqueued, + e.g. the internal pending queue is full. +

    +
    +
    queryaction
    From 2b3f6eb7a782902fd303109feb1bcf19a3887436 Mon Sep 17 00:00:00 2001 From: Luca Barbato Date: Thu, 2 Mar 2023 14:46:46 +0100 Subject: [PATCH 08/33] Further clarifications Co-authored-by: Ben Francis --- index.html | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index 4efbaa1..87939b1 100644 --- a/index.html +++ b/index.html @@ -1673,14 +1673,13 @@
    Asynchronous Action Response

    - In resource constrained environments, if the buffer becomes full then a Web Thing SHOULD - remove the oldest Action result ActionStatus from its buffer to make room for a newer one. + In resource constrained environments, the ActionStatus objects of older completed/failed actions MAY be deleted to make room for newly invoked actions.

    - A Web Thing MUST return a 503 error response if the invocation cannot be enqueued, - e.g. the internal pending queue is full. + A Web Thing SHOULD return a 503 error response if the invocation cannot be accepted because the action is unavailable, + e.g. because the Thing is overloaded.

    From 468504f2df76a34b09f2adcb9eb94219a8d9a5af Mon Sep 17 00:00:00 2001 From: Michael Lagally Date: Fri, 2 Sep 2022 14:30:29 +0200 Subject: [PATCH 09/33] 1st draft --- index.html | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/index.html b/index.html index 87939b1..b4613a3 100644 --- a/index.html +++ b/index.html @@ -960,6 +960,53 @@

    Default Language

    (e.g., en, de-AT, gsw-CH, zh-Hans, zh-Hant-HK, sl-nedis). +
    +

    Identifiers

    +

    + Web resources are identified by uniform resource identifiers (URIs). + The Thing Description defines the field id for that purpose, which is in the format "anyURI". + In deployments of multiple devices in the same application context, things must be distinguished by the consumer. + In these cases, these identifiers must be unique. + Use cases with worldwide deployments typically require globally unique identifiers. +

    +
    +

    Format

    +

    + A common and well defined format for these identifiers enables easy implementation + and simplifies handling across manufacturers through the use of libraries. + It also ensures that there are no name clashes of devices from different manufacturers. + The [[UUID]] format has been developed to satisfy these requirements. +

    +

    + + It is RECOMMENDED to use Universally Unique IDentifier (UUID) [[RFC4122]] as common format for identifers. + +

    + + It is RECOMMENDED to use [[UUIDv4]] as common format for unique identifers, where random identifiers are required. + +

    +
    +
    +

    Unique Identifiers

    +

    + Many use cases require that identifiers do not change during the lifecycle of the thing in the application context. + However there are cases, where the IDs must change due to legal or privacy obligations. + IDs should be changed when a device is offboarded and onboarded on a new system (e.g. for change + of ownership). + In these cases, or when a device is moved to a new usage context, identifiers usually must change. +

    + +

    + In certain use cases where privacy is a factor or legal obligations mandate changing identifiers, + the use of a mutable UUID is RECOMMENDED. +

    + +

    + If possible and allowed by law, required immutable IDs SHOULD be made available through a + property rather than used as the id for the TD itself. +

    +
    From dff873cf2a508aaf0aadfd80bcd10efdf650d24e Mon Sep 17 00:00:00 2001 From: Michael Lagally <31951801+mlagally@users.noreply.github.com> Date: Thu, 16 Feb 2023 18:59:58 +0100 Subject: [PATCH 10/33] Update index.html --- index.html | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index b4613a3..fcd8d24 100644 --- a/index.html +++ b/index.html @@ -964,7 +964,10 @@

    Default Language

    Identifiers

    Web resources are identified by uniform resource identifiers (URIs). - The Thing Description defines the field id for that purpose, which is in the format "anyURI". + The Thing Description defines the field +

    In deployments of multiple devices in the same application context, things must be distinguished by the consumer. In these cases, these identifiers must be unique. Use cases with worldwide deployments typically require globally unique identifiers. @@ -988,7 +991,7 @@

    Format

    -

    Unique Identifiers

    +

    Mutable and Immutable Identifiers

    Many use cases require that identifiers do not change during the lifecycle of the thing in the application context. However there are cases, where the IDs must change due to legal or privacy obligations. @@ -3388,4 +3391,8 @@

    Changes from the FPWD published 24 November 2020

    +<<<<<<< HEAD +======= + +>>>>>>> Update index.html From f9a8466dba6577a3fd4fe7ac823ec443d1e76866 Mon Sep 17 00:00:00 2001 From: Michael McCool Date: Tue, 13 Dec 2022 08:52:42 -0400 Subject: [PATCH 11/33] update after Day 1 of testfest --- index.html | 4 - testing/atrisk.css | 12 + testing/atrisk.csv | 87 +++++++ testing/inputs/atrisk.csv | 87 +++++++ testing/report.html | 468 +++++++++++++------------------------- 5 files changed, 350 insertions(+), 308 deletions(-) diff --git a/index.html b/index.html index fcd8d24..e88a8c1 100644 --- a/index.html +++ b/index.html @@ -3391,8 +3391,4 @@

    Changes from the FPWD published 24 November 2020

    -<<<<<<< HEAD -======= - ->>>>>>> Update index.html diff --git a/testing/atrisk.css b/testing/atrisk.css index 317201e..a8d05fc 100644 --- a/testing/atrisk.css +++ b/testing/atrisk.css @@ -34,6 +34,9 @@ #common-constraints-links-media-types-4 { background-color: yellow; } +#common-constraints-links-media-types-4 { + background-color: yellow; +} #common-constraints-links-media-types-5 { background-color: yellow; } @@ -46,6 +49,15 @@ #common-constraints-links-media-types-8 { background-color: yellow; } +#common-constraints-links-media-types-6 { + background-color: yellow; +} +#common-constraints-links-media-types-7 { + background-color: yellow; +} +#common-constraints-links-media-types-8 { + background-color: yellow; +} #common-constraints-errors-3 { background-color: yellow; } diff --git a/testing/atrisk.csv b/testing/atrisk.csv index c65ef0f..7b2cae3 100644 --- a/testing/atrisk.csv +++ b/testing/atrisk.csv @@ -10,6 +10,10 @@ 18,"common-constraints-links-1","HELP, pass undefined" 20,"common-constraints-links-3","HELP, pass=1" 21,"common-constraints-links-media-types-1","HELP, pass undefined" +<<<<<<< HEAD +======= +22,"common-constraints-links-media-types-2","HELP, pass=1" +>>>>>>> update after Day 1 of testfest 23,"common-constraints-links-media-types-4","HELP, no results" 24,"common-constraints-links-media-types-5","HELP, no results" 25,"common-constraints-links-media-types-6","HELP, no results" @@ -17,6 +21,7 @@ 27,"common-constraints-links-media-types-8","HELP, no results" 30,"common-constraints-errors-3","HELP, pass=1" 33,"common-constraints-errors-6","HELP, pass undefined" +<<<<<<< HEAD 36,"http-basic-profile-1","HELP, pass undefined" 38,"profile-5-2-thing-protocol-binding-1","HELP, pass undefined" 48,"http-basic-profile-protocol-binding-readallproperties-3","HELP, pass=1" @@ -36,6 +41,53 @@ 73,"http-basic-profile-protocol-binding-invokeaction-21","HELP, pass=1" 76,"http-basic-profile-protocol-binding-queryaction-2","HELP, pass=1" 77,"http-basic-profile-protocol-binding-queryaction-3","HELP, pass undefined" +======= +34,"common-constraints-errors-7","HELP, pass=1" +35,"common-constraints-default-language","HELP, pass undefined" +36,"http-basic-profile-1","HELP, pass undefined" +37,"http-basic-profile-identifier-1","HELP, pass=1" +38,"profile-5-2-thing-protocol-binding-1","HELP, pass undefined" +39,"http-basic-profile-protocol-binding-readproperty-1","HELP, pass undefined" +40,"http-basic-profile-protocol-binding-readproperty-3","HELP, pass undefined" +41,"http-basic-profile-protocol-binding-readproperty-4","HELP, pass undefined" +43,"http-basic-profile-protocol-binding-writeproperty-1","HELP, pass undefined" +44,"http-basic-profile-protocol-binding-writeproperty-3","HELP, pass undefined" +45,"http-basic-profile-protocol-binding-writeproperty-4","HELP, pass undefined" +47,"http-basic-profile-protocol-binding-readallproperties-1","HELP, pass undefined" +48,"http-basic-profile-protocol-binding-readallproperties-3","HELP, pass undefined" +49,"http-basic-profile-protocol-binding-readallproperties-4","HELP, pass undefined" +51,"http-basic-profile-protocol-binding-writemultipleproperties-1","HELP, pass undefined" +52,"http-basic-profile-protocol-bindings-writemultipleproperties-3","HELP, pass undefined" +53,"http-basic-profile-protocol-binding-writemultipleproperties-4","HELP, pass undefined" +54,"http-basic-profile-protocol-binding-writemultipleproperties-6","HELP, pass=1" +55,"http-basic-profile-protocol-binding-invokeaction-1","HELP, pass undefined" +56,"http-basic-profile-protocol-binding-invokeaction-3","HELP, pass undefined" +57,"http-basic-profile-protocol-binding-invokeaction-4","HELP, pass undefined" +58,"http-basic-profile-protocol-binding-invokeaction-6","HELP, pass=1" +59,"http-basic-profile-protocol-binding-invokeaction-7","HELP, no results" +60,"http-basic-profile-protocol-binding-invokeaction-8","HELP, pass=1" +61,"http-basic-profile-protocol-binding-invokeaction-9","HELP, pass=1" +63,"http-basic-profile-protocol-binding-invokeaction-11","HELP, no results" +64,"http-basic-profile-protocol-binding-invokeaction-12","HELP, pass undefined" +65,"http-basic-profile-protocol-binding-invokeaction-13","HELP, pass undefined" +66,"http-basic-profile-protocol-binding-invokeaction-14","HELP, no results" +67,"http-basic-profile-protocol-binding-invokeaction-15","HELP, pass undefined" +68,"http-basic-profile-protocol-binding-invokeaction-16","HELP, no results" +69,"http-basic-profile-protocol-binding-invokeaction-17","HELP, no results" +70,"http-basic-profile-protocol-binding-invokeaction-18","HELP, no results" +71,"http-basic-profile-protocol-binding-invokeaction-19","HELP, no results" +72,"http-basic-profile-protocol-binding-invokeaction-20","HELP, no results" +73,"http-basic-profile-protocol-binding-invokeaction-21","HELP, no results" +74,"http-basic-profile-protocol-binding-queryaction-1a","HELP, pass=1" +75,"http-basic-profile-protocol-binding-queryaction-1b","HELP, pass=1" +76,"http-basic-profile-protocol-binding-queryaction-2","HELP, pass undefined" +77,"http-basic-profile-protocol-binding-queryaction-3","HELP, pass undefined" +78,"http-basic-profile-protocol-binding-queryaction-5","HELP, pass=1" +79,"http-basic-profile-protocol-binding-queryaction-7a","HELP, pass=1" +80,"http-basic-profile-protocol-binding-queryaction-7b","HELP, pass=1" +81,"http-basic-profile-protocol-binding-cancelaction-1a","HELP, pass=1" +82,"http-basic-profile-protocol-binding-cancelaction-1b","HELP, pass=1" +>>>>>>> update after Day 1 of testfest 83,"http-basic-profile-protocol-binding-cancelaction-2","HELP, pass undefined" 84,"http-basic-profile-protocol-binding-cancelaction-3","HELP, pass undefined" 86,"http-basic-profile-protocol-binding-queryallactions-1","HELP, pass undefined" @@ -43,6 +95,7 @@ 88,"http-basic-profile-protocol-binding-queryallactions-4","HELP, pass undefined" 89,"http-basic-profile-protocol-binding-queryallactions-6a","HELP, pass undefined" 90,"http-basic-profile-protocol-binding-queryallactions-6b","HELP, pass undefined" +<<<<<<< HEAD 91,"http-sse-profile-1","HELP, pass=1" 92,"http-sse-profile-identifier-1","HELP, pass=1" 93,"http-sse-profile-protocol-binding-1","HELP, pass=1" @@ -57,6 +110,22 @@ 102,"http-sse-profile-protocol-binding-observeproperty-6a","HELP, pass undefined" 103,"http-sse-profile-protocol-binding-observeproperty-6b","HELP, pass undefined" 104,"http-sse-profile-protocol-binding-unobserveproperty-1","HELP, pass=1" +======= +91,"http-sse-profile-1","HELP, pass undefined" +92,"http-sse-profile-identifier-1","HELP, pass undefined" +93,"http-sse-profile-protocol-binding-1","HELP, pass undefined" +94,"http-sse-profile-protocol-binding-observeproperty-1","HELP, pass undefined" +95,"http-sse-profile-protocol-binding-observeproperty-2","HELP, pass undefined" +96,"http-sse-profile-protocol-binding-observeproperty-3","HELP, pass undefined" +97,"http-sse-profile-protocol-binding-observeproperty-4","HELP, pass undefined" +98,"http-sse-profile-protocol-binding-observeproperty-5a","HELP, pass undefined" +99,"http-sse-profile-protocol-binding-observeproperty-5b","HELP, pass undefined" +100,"http-sse-profile-protocol-binding-observeproperty-5c","HELP, pass undefined" +101,"http-sse-profile-protocol-binding-observeproperty-5d","HELP, pass undefined" +102,"http-sse-profile-protocol-binding-observeproperty-6a","HELP, pass undefined" +103,"http-sse-profile-protocol-binding-observeproperty-6b","HELP, pass undefined" +104,"http-sse-profile-protocol-binding-unobserveproperty-1","HELP, pass undefined" +>>>>>>> update after Day 1 of testfest 105,"http-sse-profile-protocol-binding-observeallproperties-1","HELP, pass undefined" 106,"http-sse-profile-protocol-binding-observeallproperties-2","HELP, pass undefined" 107,"http-sse-profile-protocol-binding-observeallproperties-3","HELP, pass undefined" @@ -69,14 +138,28 @@ 114,"http-sse-profile-protocol-binding-observeallproperties-6a","HELP, pass undefined" 115,"http-sse-profile-protocol-binding-observeallproperties-6b","HELP, pass undefined" 116,"http-sse-profile-protocol-binding-unobserveallproperties-1","HELP, pass undefined" +<<<<<<< HEAD 117,"http-sse-profile-protocol-binding-subscribeevent-1","HELP, pass=1" 118,"http-sse-profile-protocol-binding-subscribeevent-3","HELP, pass=1" 119,"http-sse-profile-protocol-binding-subscribeevent-4","HELP, pass undefined" +======= +117,"http-sse-profile-protocol-binding-subscribeevent-1","HELP, pass undefined" +118,"http-sse-profile-protocol-binding-subscribeevent-3","HELP, pass undefined" +119,"http-sse-profile-protocol-binding-subscribeevent-4","HELP, pass undefined" +120,"http-sse-profile-protocol-binding-subscribeevent-5","HELP, pass=1" +121,"http-sse-profile-protocol-binding-subscribeevent-6a","HELP, pass=1" +122,"http-sse-profile-protocol-binding-subscribeevent-6b","HELP, pass=1" +123,"http-sse-profile-protocol-binding-subscribeevent-6c","HELP, pass=1" +>>>>>>> update after Day 1 of testfest 124,"http-sse-profile-protocol-binding-subscribeevent-6d","HELP, pass=1" 125,"http-sse-profile-protocol-binding-subscribeevent-6e","HELP, pass undefined" 126,"http-sse-profile-protocol-binding-subscribeevent-7a","HELP, pass undefined" 127,"http-sse-profile-protocol-binding-subscribeevent-7b","HELP, pass undefined" +<<<<<<< HEAD 128,"http-sse-profile-protocol-binding-unsubscribeevent-1","HELP, pass=1" +======= +128,"http-sse-profile-protocol-binding-unsubscribeevent-1","HELP, pass undefined" +>>>>>>> update after Day 1 of testfest 129,"http-sse-profile-protocol-binding-subscribeallevents-1","HELP, pass undefined" 130,"http-sse-profile-protocol-binding-subscribeallevents-3b","HELP, pass undefined" 131,"http-sse-profile-protocol-binding-subscribeallevents-4","HELP, pass undefined" @@ -92,7 +175,11 @@ 141,"http-webhook-profile-protocol-binding-general-1","HELP, pass=1" 142,"http-webhook-profile-protocol-binding-general-3","HELP, pass=1" 143,"http-webhook-profile-protocol-binding-events-1","HELP, pass=1" +<<<<<<< HEAD 144,"http-webhook-profile-protocol-binding-events-2","HELP, pass undefined" +======= +144,"http-webhook-profile-protocol-binding-events-2","HELP, no results" +>>>>>>> update after Day 1 of testfest 145,"http-webhook-profile-1","HELP, pass=1" 146,"http-webhook-profile-message-format-1","HELP, pass undefined" 147,"http-webhook-profile-protocol-binding-1","HELP, pass undefined" diff --git a/testing/inputs/atrisk.csv b/testing/inputs/atrisk.csv index c65ef0f..7b2cae3 100644 --- a/testing/inputs/atrisk.csv +++ b/testing/inputs/atrisk.csv @@ -10,6 +10,10 @@ 18,"common-constraints-links-1","HELP, pass undefined" 20,"common-constraints-links-3","HELP, pass=1" 21,"common-constraints-links-media-types-1","HELP, pass undefined" +<<<<<<< HEAD +======= +22,"common-constraints-links-media-types-2","HELP, pass=1" +>>>>>>> update after Day 1 of testfest 23,"common-constraints-links-media-types-4","HELP, no results" 24,"common-constraints-links-media-types-5","HELP, no results" 25,"common-constraints-links-media-types-6","HELP, no results" @@ -17,6 +21,7 @@ 27,"common-constraints-links-media-types-8","HELP, no results" 30,"common-constraints-errors-3","HELP, pass=1" 33,"common-constraints-errors-6","HELP, pass undefined" +<<<<<<< HEAD 36,"http-basic-profile-1","HELP, pass undefined" 38,"profile-5-2-thing-protocol-binding-1","HELP, pass undefined" 48,"http-basic-profile-protocol-binding-readallproperties-3","HELP, pass=1" @@ -36,6 +41,53 @@ 73,"http-basic-profile-protocol-binding-invokeaction-21","HELP, pass=1" 76,"http-basic-profile-protocol-binding-queryaction-2","HELP, pass=1" 77,"http-basic-profile-protocol-binding-queryaction-3","HELP, pass undefined" +======= +34,"common-constraints-errors-7","HELP, pass=1" +35,"common-constraints-default-language","HELP, pass undefined" +36,"http-basic-profile-1","HELP, pass undefined" +37,"http-basic-profile-identifier-1","HELP, pass=1" +38,"profile-5-2-thing-protocol-binding-1","HELP, pass undefined" +39,"http-basic-profile-protocol-binding-readproperty-1","HELP, pass undefined" +40,"http-basic-profile-protocol-binding-readproperty-3","HELP, pass undefined" +41,"http-basic-profile-protocol-binding-readproperty-4","HELP, pass undefined" +43,"http-basic-profile-protocol-binding-writeproperty-1","HELP, pass undefined" +44,"http-basic-profile-protocol-binding-writeproperty-3","HELP, pass undefined" +45,"http-basic-profile-protocol-binding-writeproperty-4","HELP, pass undefined" +47,"http-basic-profile-protocol-binding-readallproperties-1","HELP, pass undefined" +48,"http-basic-profile-protocol-binding-readallproperties-3","HELP, pass undefined" +49,"http-basic-profile-protocol-binding-readallproperties-4","HELP, pass undefined" +51,"http-basic-profile-protocol-binding-writemultipleproperties-1","HELP, pass undefined" +52,"http-basic-profile-protocol-bindings-writemultipleproperties-3","HELP, pass undefined" +53,"http-basic-profile-protocol-binding-writemultipleproperties-4","HELP, pass undefined" +54,"http-basic-profile-protocol-binding-writemultipleproperties-6","HELP, pass=1" +55,"http-basic-profile-protocol-binding-invokeaction-1","HELP, pass undefined" +56,"http-basic-profile-protocol-binding-invokeaction-3","HELP, pass undefined" +57,"http-basic-profile-protocol-binding-invokeaction-4","HELP, pass undefined" +58,"http-basic-profile-protocol-binding-invokeaction-6","HELP, pass=1" +59,"http-basic-profile-protocol-binding-invokeaction-7","HELP, no results" +60,"http-basic-profile-protocol-binding-invokeaction-8","HELP, pass=1" +61,"http-basic-profile-protocol-binding-invokeaction-9","HELP, pass=1" +63,"http-basic-profile-protocol-binding-invokeaction-11","HELP, no results" +64,"http-basic-profile-protocol-binding-invokeaction-12","HELP, pass undefined" +65,"http-basic-profile-protocol-binding-invokeaction-13","HELP, pass undefined" +66,"http-basic-profile-protocol-binding-invokeaction-14","HELP, no results" +67,"http-basic-profile-protocol-binding-invokeaction-15","HELP, pass undefined" +68,"http-basic-profile-protocol-binding-invokeaction-16","HELP, no results" +69,"http-basic-profile-protocol-binding-invokeaction-17","HELP, no results" +70,"http-basic-profile-protocol-binding-invokeaction-18","HELP, no results" +71,"http-basic-profile-protocol-binding-invokeaction-19","HELP, no results" +72,"http-basic-profile-protocol-binding-invokeaction-20","HELP, no results" +73,"http-basic-profile-protocol-binding-invokeaction-21","HELP, no results" +74,"http-basic-profile-protocol-binding-queryaction-1a","HELP, pass=1" +75,"http-basic-profile-protocol-binding-queryaction-1b","HELP, pass=1" +76,"http-basic-profile-protocol-binding-queryaction-2","HELP, pass undefined" +77,"http-basic-profile-protocol-binding-queryaction-3","HELP, pass undefined" +78,"http-basic-profile-protocol-binding-queryaction-5","HELP, pass=1" +79,"http-basic-profile-protocol-binding-queryaction-7a","HELP, pass=1" +80,"http-basic-profile-protocol-binding-queryaction-7b","HELP, pass=1" +81,"http-basic-profile-protocol-binding-cancelaction-1a","HELP, pass=1" +82,"http-basic-profile-protocol-binding-cancelaction-1b","HELP, pass=1" +>>>>>>> update after Day 1 of testfest 83,"http-basic-profile-protocol-binding-cancelaction-2","HELP, pass undefined" 84,"http-basic-profile-protocol-binding-cancelaction-3","HELP, pass undefined" 86,"http-basic-profile-protocol-binding-queryallactions-1","HELP, pass undefined" @@ -43,6 +95,7 @@ 88,"http-basic-profile-protocol-binding-queryallactions-4","HELP, pass undefined" 89,"http-basic-profile-protocol-binding-queryallactions-6a","HELP, pass undefined" 90,"http-basic-profile-protocol-binding-queryallactions-6b","HELP, pass undefined" +<<<<<<< HEAD 91,"http-sse-profile-1","HELP, pass=1" 92,"http-sse-profile-identifier-1","HELP, pass=1" 93,"http-sse-profile-protocol-binding-1","HELP, pass=1" @@ -57,6 +110,22 @@ 102,"http-sse-profile-protocol-binding-observeproperty-6a","HELP, pass undefined" 103,"http-sse-profile-protocol-binding-observeproperty-6b","HELP, pass undefined" 104,"http-sse-profile-protocol-binding-unobserveproperty-1","HELP, pass=1" +======= +91,"http-sse-profile-1","HELP, pass undefined" +92,"http-sse-profile-identifier-1","HELP, pass undefined" +93,"http-sse-profile-protocol-binding-1","HELP, pass undefined" +94,"http-sse-profile-protocol-binding-observeproperty-1","HELP, pass undefined" +95,"http-sse-profile-protocol-binding-observeproperty-2","HELP, pass undefined" +96,"http-sse-profile-protocol-binding-observeproperty-3","HELP, pass undefined" +97,"http-sse-profile-protocol-binding-observeproperty-4","HELP, pass undefined" +98,"http-sse-profile-protocol-binding-observeproperty-5a","HELP, pass undefined" +99,"http-sse-profile-protocol-binding-observeproperty-5b","HELP, pass undefined" +100,"http-sse-profile-protocol-binding-observeproperty-5c","HELP, pass undefined" +101,"http-sse-profile-protocol-binding-observeproperty-5d","HELP, pass undefined" +102,"http-sse-profile-protocol-binding-observeproperty-6a","HELP, pass undefined" +103,"http-sse-profile-protocol-binding-observeproperty-6b","HELP, pass undefined" +104,"http-sse-profile-protocol-binding-unobserveproperty-1","HELP, pass undefined" +>>>>>>> update after Day 1 of testfest 105,"http-sse-profile-protocol-binding-observeallproperties-1","HELP, pass undefined" 106,"http-sse-profile-protocol-binding-observeallproperties-2","HELP, pass undefined" 107,"http-sse-profile-protocol-binding-observeallproperties-3","HELP, pass undefined" @@ -69,14 +138,28 @@ 114,"http-sse-profile-protocol-binding-observeallproperties-6a","HELP, pass undefined" 115,"http-sse-profile-protocol-binding-observeallproperties-6b","HELP, pass undefined" 116,"http-sse-profile-protocol-binding-unobserveallproperties-1","HELP, pass undefined" +<<<<<<< HEAD 117,"http-sse-profile-protocol-binding-subscribeevent-1","HELP, pass=1" 118,"http-sse-profile-protocol-binding-subscribeevent-3","HELP, pass=1" 119,"http-sse-profile-protocol-binding-subscribeevent-4","HELP, pass undefined" +======= +117,"http-sse-profile-protocol-binding-subscribeevent-1","HELP, pass undefined" +118,"http-sse-profile-protocol-binding-subscribeevent-3","HELP, pass undefined" +119,"http-sse-profile-protocol-binding-subscribeevent-4","HELP, pass undefined" +120,"http-sse-profile-protocol-binding-subscribeevent-5","HELP, pass=1" +121,"http-sse-profile-protocol-binding-subscribeevent-6a","HELP, pass=1" +122,"http-sse-profile-protocol-binding-subscribeevent-6b","HELP, pass=1" +123,"http-sse-profile-protocol-binding-subscribeevent-6c","HELP, pass=1" +>>>>>>> update after Day 1 of testfest 124,"http-sse-profile-protocol-binding-subscribeevent-6d","HELP, pass=1" 125,"http-sse-profile-protocol-binding-subscribeevent-6e","HELP, pass undefined" 126,"http-sse-profile-protocol-binding-subscribeevent-7a","HELP, pass undefined" 127,"http-sse-profile-protocol-binding-subscribeevent-7b","HELP, pass undefined" +<<<<<<< HEAD 128,"http-sse-profile-protocol-binding-unsubscribeevent-1","HELP, pass=1" +======= +128,"http-sse-profile-protocol-binding-unsubscribeevent-1","HELP, pass undefined" +>>>>>>> update after Day 1 of testfest 129,"http-sse-profile-protocol-binding-subscribeallevents-1","HELP, pass undefined" 130,"http-sse-profile-protocol-binding-subscribeallevents-3b","HELP, pass undefined" 131,"http-sse-profile-protocol-binding-subscribeallevents-4","HELP, pass undefined" @@ -92,7 +175,11 @@ 141,"http-webhook-profile-protocol-binding-general-1","HELP, pass=1" 142,"http-webhook-profile-protocol-binding-general-3","HELP, pass=1" 143,"http-webhook-profile-protocol-binding-events-1","HELP, pass=1" +<<<<<<< HEAD 144,"http-webhook-profile-protocol-binding-events-2","HELP, pass undefined" +======= +144,"http-webhook-profile-protocol-binding-events-2","HELP, no results" +>>>>>>> update after Day 1 of testfest 145,"http-webhook-profile-1","HELP, pass=1" 146,"http-webhook-profile-message-format-1","HELP, pass undefined" 147,"http-webhook-profile-protocol-binding-1","HELP, pass undefined" diff --git a/testing/report.html b/testing/report.html index 14e8a2f..2d0d027 100644 --- a/testing/report.html +++ b/testing/report.html @@ -119,7 +119,7 @@

    Implementation Report

    - Version: 14 Dec 2022 + Version: 13 Dec 2022

    Editors:
    @@ -503,8 +503,7 @@

    23: common-constraints-links-media-types-4 - Consumer - + N If a Consumer encounters a link with "rel": "icon" and "type": "image/*" and it is capable of rendering images in the provided format, then it SHOULD interpret the link as an icon for the Thing and display it to the user. @@ -515,8 +514,7 @@

    0 24: common-constraints-links-media-types-5 - Consumer - + N If a Consumer encounters a link with "rel": "alternate" and "type": "text/html" and it is capable of rendering an HTML page and accepting user input, then it SHOULD interpret the link as a user interface for the Thing and provide a means for the user to follow that link and view and interact with the HTML page. @@ -527,8 +525,7 @@

    0 25: common-constraints-links-media-types-6 - Consumer - + N If a Consumer encounters a link with "rel": "service-doc" and "type": "text/plain", "type": "text/html" or "type": "text/pdf", and is capable of rendering documents in the provided format, then it SHOULD interpret the link as a user manual for the Thing and provide a means for the user to follow that link and read the user manual. @@ -539,8 +536,7 @@

    0 26: common-constraints-links-media-types-7 - Consumer - + N If a Consumer encounters a link with "rel": "item" and "type": "application/td+json" and is capable of rendering a hierarchical tree of Things, then it should interpret the link as an indication that the target is a sub-Thing of the current Thing and render this in a meaningful way to the user. @@ -551,8 +547,7 @@

    0 27: common-constraints-links-media-types-8 - Consumer - + N If a Consumer encounters a link with "rel": "collection" and "type": "application/td+json" and is capable of rendering a hierarchical tree of Things, then it should interpret the link as an indication that the target describes a Thing (e.g. a group, system of Things or Thing Directory) which contains the current Thing and render this in a meaningful way to the user. @@ -732,6 +727,7 @@

    N Below is a list of security schemes [[wot-thing-description]] which conformant Web Things MAY use: NoSecurityScheme BasicSecurityScheme OAuth2SecurityScheme with the code or client flow. + Below is a list of security schemes [[wot-thing-description]] which conformant Web Things MAY use: NoSecurityScheme BasicSecurityScheme OAuth2SecurityScheme with the code or client flow. 4 0 @@ -801,6 +797,8 @@

    18: common-constraints-links-1 TD + N + N The following keywords are defined for links in the HTTP profiles and MAY be present in profile-compliant TDs with the constraints defined by this section. @@ -828,6 +826,7 @@

    N These other link types MAY be ignored by all profile-compliant consumers. + These other link types MAY be ignored by all profile-compliant consumers. 1 0 @@ -837,6 +836,8 @@

    21: common-constraints-links-media-types-1 TD + N + N The following media types from IANA MAY be used as the link targets of profile compliant TDs with the constraints in this section. @@ -851,16 +852,15 @@

    N - Other media types MAY be present in a TD, however their heir interpretation is undefined in the context of the HTTP profiles and they MAY be ignored by all profile-compliant consumers. + Other media types MAY be present in a TD, however their heir interpretation is undefined in the context of the HTTP profiles and they MAY be ignored by all profile-compliant consumers. 2 0 - 3 - 5 + 1 + 2 28: common-constraints-errors-1 - Thing - + Y If any of the operations defined in the protocol bindings of HTTP profiles are unsuccessful then the Web Thing MUST send an HTTP response with an HTTP error code which describes the reason for the failure. @@ -871,8 +871,7 @@

    5 29: common-constraints-errors-2 - Thing - + N It is RECOMMENDED that error responses use one of the following HTTP error codes: 400 Bad Request 401 Unauthorized 403 Forbidden 404 Not Found 500 Internal Server Error @@ -883,8 +882,7 @@

    5 30: common-constraints-errors-3 - Thing - + N A Web Thing MAY respond with 3xx status codes for the purposes of redirection, caching or authentication. @@ -895,8 +893,7 @@

    5 31: common-constraints-errors-4 - Thing - + Y A Web Thing MUST NOT respond with a 300 Multiple Choices status code. @@ -907,8 +904,7 @@

    5 32: common-constraints-errors-5 - Thing - + N Web Things MAY respond with other valid HTTP error codes (e.g. 418 I'm a teapot). @@ -919,8 +915,7 @@

    4 33: common-constraints-errors-6 - Consumer - + N Consumers MAY interpret other valid HTTP error codes as a generic 4xx or 5xx error with no special defined behaviour. @@ -931,8 +926,7 @@

    2 34: common-constraints-errors-7 - Thing - + Y If an HTTP error response contains a body, the content of that body MUST conform with the Problem Details format [[RFC7807]]. @@ -943,8 +937,7 @@

    5 35: common-constraints-default-language - TD - + Y One Map contained in an @context Array MUST 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). @@ -955,8 +948,7 @@

    4 36: http-basic-profile-1 - Thing Consumer - + Y In order to conform with the HTTP Basic Profile, Web Things and Consumers MUST also conform with all of the assertions in the Common Constraints section. @@ -967,8 +959,7 @@

    2 37: http-basic-profile-identifier-1 - TD - + Y In order to denote that a given Web Thing conforms to the HTTP Basic Profile, its Thing Description MUST have a profile member [[wot-thing-description]] with a value of https://www.w3.org/2022/wot/profile/http-basic/v1. @@ -979,8 +970,7 @@

    5 38: profile-5-2-thing-protocol-binding-1 - Consumer Thing - + Y A Consumer or Web Thing conforming to the HTTP Basic Profile MUST implement this protocol binding. @@ -991,8 +981,7 @@

    4 39: http-basic-profile-protocol-binding-readproperty-1 - TD - + Y The URL of a Property resource to be used when reading the value of a property MUST be obtained from a Thing Description by locating a Form inside the corresponding PropertyAffordance for which: After defaults have been applied, its op member contains the value readproperty. After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https @@ -1003,8 +992,7 @@

    3 40: http-basic-profile-protocol-binding-readproperty-3 - Consumer - + Y The resolved value of the href member MUST then be used as the URL of the Property resource. @@ -1015,8 +1003,7 @@

    3 41: http-basic-profile-protocol-binding-readproperty-4 - Consumer - + Y In order to read the value of a property, a Consumer MUST send an HTTP request to a Web Thing with: Method set to GET URL set to the URL of the Property resource Accept header set to application/json @@ -1027,8 +1014,7 @@

    3 42: http-basic-profile-protocol-binding-readproperty-6 - Thing - + Y If a Web Thing receives an HTTP request following the format above and the Consumer has permission to read the corresponding property, then upon successfully reading the value of the property it MUST send an HTTP response with: Status code set to 200 Content-Type header set to application/json A body with the value of the property serialized in JSON @@ -1039,8 +1025,7 @@

    5 43: http-basic-profile-protocol-binding-writeproperty-1 - Consumer - + Y The URL of a Property resource to be used when writing the value of a property MUST be obtained from a Thing Description by locating a Form inside the corresponding PropertyAffordance for which: After defaults have been applied, its op member contains the value writeproperty After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https @@ -1051,8 +1036,7 @@

    3 44: http-basic-profile-protocol-binding-writeproperty-3 - Consumer - + Y The resolved value of the href member MUST then be used as the URL of the Property resource. @@ -1063,8 +1047,7 @@

    3 45: http-basic-profile-protocol-binding-writeproperty-4 - Consumer - + Y In order to write the value of a property, a Consumer MUST send an HTTP request to a Web Thing with: Method set to PUT URL set to the URL of the Property resource Content-Type header set to application/json A body with a requested new value for the property serialized in JSON @@ -1075,8 +1058,7 @@

    3 46: http-basic-profile-protocol-binding-writeproperty-6 - Thing - + Y If a Web Thing receives an HTTP request following the format above and the Consumer has permission to write the corresponding property, then upon successfully writing the value of the property it MUST send an HTTP response with: Status code set to 204 @@ -1087,8 +1069,7 @@

    3 47: http-basic-profile-protocol-binding-readallproperties-1 - Consumer - + Y The URL of a Properties resource to be used when reading the value of all properties at once MUST be obtained from a Thing Description by locating a Form inside the top level forms member for which: Its op member contains the value readallproperties After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https @@ -1099,8 +1080,7 @@

    3 48: http-basic-profile-protocol-binding-readallproperties-3 - Consumer - + Y The resolved value of the href member MUST then be used as the URL of the Properties resource. @@ -1111,8 +1091,7 @@

    3 49: http-basic-profile-protocol-binding-readallproperties-4 - Consumer - + Y In order to read the value of all properties, a Consumer MUST send an HTTP request to a Web Thing with: Method set to GET URL set to the URL of the Properties resource Accept header set to application/json @@ -1123,8 +1102,7 @@

    3 50: http-basic-profile-protocol-binding-readallproperties-5 - Thing - + Y If a Web Thing receives an HTTP request following the format above, then upon successfully reading the values of all the readable properties to which the Consumer has permission to access, it MUST send an HTTP response with: Status code set to 200 Content-Type header set to application/json A body with the values of all readable properties serialized in JSON, as an object keyed by property name @@ -1135,8 +1113,7 @@

    4 51: http-basic-profile-protocol-binding-writemultipleproperties-1 - Consumer - + Y The URL of a Properties resource to be used when writing the value of multiple properties at once MUST be obtained from a Thing Description by locating a Form inside the top level forms member for which: Its op member contains the value writemultipleproperties After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https @@ -1147,8 +1124,7 @@

    2 52: http-basic-profile-protocol-bindings-writemultipleproperties-3 - Consumer - + Y The resolved value of the href member MUST then be used as the URL of the Properties resource. @@ -1159,8 +1135,7 @@

    2 53: http-basic-profile-protocol-binding-writemultipleproperties-4 - Consumer - + Y In order to write the value of multiple properties at once, a Consumer MUST send an HTTP request to a Web Thing with: Method set to PUT URL set to the URL of the Properties resource Content-Type header set to application/json A body with requested new values for the writable properties serialized in JSON, as an object keyed by property name @@ -1171,8 +1146,7 @@

    2 54: http-basic-profile-protocol-binding-writemultipleproperties-6 - Thing - + Y If a Web Thing receives an HTTP request following the format above, then upon successfully writing the values of the requested writable properties it MUST send an HTTP response with: Status code set to 204 @@ -1183,8 +1157,7 @@

    3 55: http-basic-profile-protocol-binding-invokeaction-1 - Consumer - + Y The URL of an Action resource to be used when invoking an action MUST be obtained from a Thing Description by locating a Form inside the corresponding ActionAffordance for which: After defaults have been applied, the value of its op member is invokeaction After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https @@ -1195,8 +1168,7 @@

    2 56: http-basic-profile-protocol-binding-invokeaction-3 - Consumer - + Y The resolved value of the href member MUST then be used as the URL of the Action resource. @@ -1207,8 +1179,7 @@

    2 57: http-basic-profile-protocol-binding-invokeaction-4 - Consumer - + Y In order to invoke an action on a Web Thing, a Consumer MUST send an HTTP request to the Web Thing with: Method set to POST URL set to the URL of the Action resource Accept header set to application/json Content-Type header set to application/json A body with an input to the action, if any, serialized in JSON @@ -1219,8 +1190,7 @@

    2 58: http-basic-profile-protocol-binding-invokeaction-6 - Thing - + Y If a Web Thing receives an HTTP request following the format above then it MUST respond with one of three response formats: Synchronous Action Response Asynchronous Action Response Error Response @@ -1231,8 +1201,7 @@

    3 59: http-basic-profile-protocol-binding-invokeaction-7 - Thing - + Y If the synchronous member of the ActionAffordance [[wot-thing-description11]] is set to true then the Web Thing MUST respond with a Synchronous Action Response. @@ -1243,8 +1212,7 @@

    1 60: http-basic-profile-protocol-binding-invokeaction-8 - Thing - + Y If the synchronous member of the ActionAffordance [[wot-thing-description11]] is set to false then the Web Thing MUST respond with an Asynchronous Action Response. @@ -1255,8 +1223,7 @@

    4 61: http-basic-profile-protocol-binding-invokeaction-9 - Thing - + N If the synchronous member of the ActionAffordance [[wot-thing-description11]] is undefined then the Web Thing MAY respond with either a Synchronous Action Response or Asynchronous Action Response. @@ -1267,8 +1234,7 @@

    3 62: http-basic-profile-protocol-binding-invokeaction-10 - Thing - + N For long-running actions which are not expected to finish executing within the timeout period of an HTTP request (e.g. 30 to 120 seconds), it is RECOMMENDED that a Web Thing respond with an Asynchronous Action Response so that a Consumer may continue to monitor the status of an action request with a queryaction operation on a dynamically created ActionStatus resource, after the initial invokeaction response. @@ -1279,8 +1245,7 @@

    4 63: http-basic-profile-protocol-binding-invokeaction-11 - Thing - + N For short-lived actions which are expected to finish executing within the timeout period of an HTTP request, a Web Thing MAY wait until the action has completed to send a Synchronous Action Response. @@ -1291,8 +1256,7 @@

    1 64: http-basic-profile-protocol-binding-invokeaction-12 - Thing - + Y If a Web Thing encounters an error in attempting to execute an action before responding to the invokeaction request, then it MUST send an Error Response. @@ -1303,8 +1267,7 @@

    2 65: http-basic-profile-protocol-binding-invokeaction-13 - Consumer - + Y Conforming Consumers MUST support all three types of response to the initial invokeaction request. @@ -1315,8 +1278,7 @@

    4 66: http-basic-profile-protocol-binding-invokeaction-14 - Consumer Thing - + N After the initial request, support for subsequent operations on an ActionStatus resource is OPTIONAL. @@ -1327,8 +1289,7 @@

    1 67: http-basic-profile-protocol-binding-invokeaction-15 - Consumer Thing TD - + Y The status of an asynchronous action invocation request is represented by an ActionStatus object which includes the following members: Member Description Assignment Type status The status of the action request. mandatory string (one of pending, running, completed or failed) output The output data, if any, of a completed action which MUST conform with the output data schema of the corresponding ActionAffordance. optional any type error An error message, if any, associated with a failed action which MUST use the JSON serialization of the Problem Details format [[RFC7807]] (only needed in response to a queryaction operation). optional object href The [[URL]] of an ActionStatus resource which can be used by queryaction and cancelaction operations, the URI scheme [[RFC3986]] of which MUST resolve to http or https (only needed for an Asynchronous Action Response). optional string timeRequested A timestamp indicating the time at which the Thing received the request to execute the action. (See Date Format for date format constraints). optional string timeEnded A timestamp indicating the time at which the Thing successfully completed executing the action, or failed to execute the action. (See Date Format for date format constraints). optional string @@ -1339,8 +1300,7 @@

    4 68: http-basic-profile-protocol-binding-invokeaction-16 - TD - + Y status: The status of the action request. MUST be included. Type: string (one of pending, running, completed or failed) . @@ -1351,8 +1311,7 @@

    1 69: http-basic-profile-protocol-binding-invokeaction-17 - TD - + Y output: The output data, if any, of a completed action which MUST conform with the output data schema of the corresponding ActionAffordance. MAY be included. Type: any type. @@ -1363,8 +1322,7 @@

    1 70: http-basic-profile-protocol-binding-invokeaction-18 - TD Thing - + Y error: An error message, if any, associated with a failed action which MUST use the JSON serialization of the Problem Details format [[RFC7807]] (only needed in response to a queryaction operation). MAY be included. Type: object. @@ -1375,8 +1333,7 @@

    1 71: http-basic-profile-protocol-binding-invokeaction-19 - TD - + Y href: The [[URL]] of an ActionStatus resource which can be used by queryaction and cancelaction operations, the URI scheme [[RFC3986]] of which MUST resolve to http or https (only needed for an Asynchronous Action Response). MAY be included. Type: string. @@ -1387,8 +1344,7 @@

    1 72: http-basic-profile-protocol-binding-invokeaction-20 - Thing - + Y If providing a Synchronous Action Response, a Web Thing MUST send an HTTP response with: Status code set to 200 Content-Type header set to application/json A body containing the output of the action, if any, serialized in JSON @@ -1399,8 +1355,7 @@

    1 73: http-basic-profile-protocol-binding-invokeaction-21 - Thing - + Y If providing an Asynchronous Action Response, a Web Thing MUST send an HTTP response containing the URL of an ActionStatus resource, the URI scheme [[RFC3986]] of which MUST resolve to http or https. The response MUST have: Status code set to 201 Content-Type header set to application/json Location header set to the URL of the ActionStatus resource A body containing an ActionStatus object serialized in JSON, with its href member set to the URL of the ActionStatus resource @@ -1411,8 +1366,7 @@

    1 74: http-basic-profile-protocol-binding-queryaction-1a - Thing TD - + Y A Web Thing which provides Asynchronous Action Responses to an invokeaction operation on an Action MUST also support queryaction operations on that same Action. @@ -1423,8 +1377,7 @@

    4 75: http-basic-profile-protocol-binding-queryaction-1b - Thing TD - + N A Web Thing which only provides Synchronous Action Responses to an invokeaction operation on an Action SHOULD NOT support queryaction operations on that same Action. @@ -1435,8 +1388,7 @@

    3 76: http-basic-profile-protocol-binding-queryaction-2 - Consumer TD - + Y The URL of an ActionStatus resource to be used in a queryaction operation MUST be obtained from the Location header of an Asynchronous Action Response, or the href member of the ActionStatus object in its body. @@ -1447,8 +1399,7 @@

    3 77: http-basic-profile-protocol-binding-queryaction-3 - Consumer - + Y In order to query the status of an action request, a Consumer MUST send an HTTP request to a Web Thing with: Method set to GET URL set to the URL of the ActionStatus resource Accept header set to application/json @@ -1459,8 +1410,7 @@

    2 78: http-basic-profile-protocol-binding-queryaction-5 - Thing - + Y If a Web Thing receives an HTTP request following the format above and the Consumer has permission to query the corresponding ActionStatus resource, then upon successfully reading the status of the action request it MUST send an HTTP response with: Status code set to 200 Content-Type header set to application/json A body containing an ActionStatus object representing the current status of the action request, serialized in JSON @@ -1471,8 +1421,7 @@

    4 79: http-basic-profile-protocol-binding-queryaction-7a - Thing - + Y If the queried action failed to execute, then the status member of the ActionStatus object MUST be set to "failed". @@ -1483,8 +1432,7 @@

    4 80: http-basic-profile-protocol-binding-queryaction-7b - Thing - + N If the queried action failed to execute, then the error member MAY provide additional error information conforming to the Problem Details format [[RFC7807]]. @@ -1495,8 +1443,7 @@

    4 81: http-basic-profile-protocol-binding-cancelaction-1a - Thing - + N A Web Thing which provides Asynchronous Action Responses to an invokeaction operation on an Action MAY also support cancelaction operations on that same Action. @@ -1507,8 +1454,7 @@

    3 82: http-basic-profile-protocol-binding-cancelaction-1b - Thing - + N A Web Thing which only provides Synchronous Action Responses to an invokeaction operation on an Action SHOULD NOT support cancelaction operations on that same Action. @@ -1519,8 +1465,7 @@

    4 83: http-basic-profile-protocol-binding-cancelaction-2 - Consumer - + Y The URL of an ActionStatus resource to be used in a cancelaction operation MUST be obtained from the Location header of an Asynchronous Action Response, or the href member of the ActionStatus object in its body. @@ -1531,8 +1476,7 @@

    2 84: http-basic-profile-protocol-binding-cancelaction-3 - Consumer - + Y In order to cancel an action request, a Consumer MUST send an HTTP request to a Web Thing with: Method set to DELETE URL set to the URL of the ActionStatus resource @@ -1543,8 +1487,7 @@

    2 85: http-basic-profile-protocol-binding-cancelaction-5 - Thing - + Y If a Web Thing receives an HTTP request following the format above and the Consumer has permission to cancel the corresponding Action request, then upon successfully cancelling Action it MUST send an HTTP response with: Status code set to 204 @@ -1555,8 +1498,7 @@

    4 86: http-basic-profile-protocol-binding-queryallactions-1 - Consumer - + Y The URL of an Actions resource to be used when querying the status of all ongoing action requests MUST be obtained from a Thing Description by locating a Form inside the top level forms member for which: Its op member contains the value queryallactions After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https @@ -1567,8 +1509,7 @@

    2 87: http-basic-profile-protocol-binding-queryallactions-3 - Consumer - + Y The resolved value of the href member MUST then be used as the URL of the Actions resource. @@ -1579,8 +1520,7 @@

    2 88: http-basic-profile-protocol-binding-queryallactions-4 - Consumer - + Y In order to query the status of all ongoing action requests, a Consumer MUST send an HTTP request to a Web Thing with: Method set to GET URL set to the URL of the Actions resource Accept header set to application/json @@ -1591,8 +1531,7 @@

    2 89: http-basic-profile-protocol-binding-queryallactions-6a - Thing - + Y If a Web Thing receives an HTTP request following the format above, then upon successfully retreiving the status of all ongoing action requests to which the Consumer has permission to access, it MUST send an HTTP response with: Status code set to 200 Content-Type header set to application/json A body containing an object, keyed by Action name, with the value of each object member being an array of ActionStatus objects representing the action requests, serialized in JSON. @@ -1603,8 +1542,7 @@

    4 90: http-basic-profile-protocol-binding-queryallactions-6b - Thing - + Y Each array in the result object MUST be sorted in reverse chronological order such that the most recent action request appears first. @@ -1615,8 +1553,7 @@

    4 91: http-sse-profile-1 - Thing Consumer TD - + Y In order to conform with the HTTP SSE Profile, Web Things and Consumers MUST also conform with all of the assertions in the Common Constraints section. @@ -1627,8 +1564,7 @@

    4 92: http-sse-profile-identifier-1 - TD - + Y In order to denote that a given Web Thing conforms to the HTTP SSE Profile, its Thing Description MUST have a profile member [[wot-thing-description]] with a value of https://www.w3.org/2022/wot/profile/http-sse/v1. @@ -1639,8 +1575,7 @@

    4 93: http-sse-profile-protocol-binding-1 - Consumer Thing - + Y A Consumer or Web Thing conforming to the HTTP SSE Profile MUST implement this protocol binding. @@ -1651,8 +1586,7 @@

    4 94: http-sse-profile-protocol-binding-observeproperty-1 - Consumer - + Y The URL of a Property resource to be used when observing the value of a property MUST be obtained from a Thing Description by locating a Form inside the corresponding PropertyAffordance for which: Its op member contains the value observeproperty After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https Its subprotocol member has a value of sse @@ -1663,8 +1597,7 @@

    2 95: http-sse-profile-protocol-binding-observeproperty-2 - Consumer - + Y The resolved value of the href member MUST then be used as the URL of the Property resource. @@ -1675,8 +1608,7 @@

    2 96: http-sse-profile-protocol-binding-observeproperty-3 - Consumer - + Y In order to observe a property, a Consumer MUST follow the Server-Sent Events [[EVENTSOURCE]] specification to open a connection with the Web Thing at the URL of the Property resource. @@ -1687,8 +1619,7 @@

    2 97: http-sse-profile-protocol-binding-observeproperty-4 - Thing - + Y If a Web Thing receives an HTTP request following the format above and the Consumer has permission to observe the corresponding property, then it MUST follow the Server-Sent Events [[EVENTSOURCE]] specification to maintain an open connection with the Consumer and push a property value to the Consumer each time the value of the specified property changes. @@ -1699,8 +1630,7 @@

    3 98: http-sse-profile-protocol-binding-observeproperty-5a - Thing - + Y Whenever the value of the specified property changes while the Web Thing has an open connection with a Consumer, the Web Thing MUST send a property value to the Consumer using the event stream format in the Server-Sent Events [[EVENTSOURCE]] specification. @@ -1711,8 +1641,7 @@

    3 99: http-sse-profile-protocol-binding-observeproperty-5b - Thing - + Y For each message sent, the Web Thing MUST set the event field to the name of the PropertyAffordance and populate the data field with the property value, serialized in JSON and following the data schema specified in the PropertyAffordance. @@ -1723,8 +1652,7 @@

    3 100: http-sse-profile-protocol-binding-observeproperty-5c - Thing - + N The id field SHOULD be set to a unique identifier for the property change, for use when re-establishing a dropped connection (see below). @@ -1735,8 +1663,7 @@

    3 101: http-sse-profile-protocol-binding-observeproperty-5d - Thing - + N It is RECOMMENDED that the identifier is a timestamp representing the time at which the property changed @@ -1747,8 +1674,7 @@

    3 102: http-sse-profile-protocol-binding-observeproperty-6a - Consumer - + Y If the connection between the Consumer and Web Thing drops (except as a result of the unobserve operation defined below), the Consumer MUST re-establish the connection following the steps outlined in the Server-Sent Events specification [[EVENTSOURCE]]. @@ -1759,8 +1685,7 @@

    2 103: http-sse-profile-protocol-binding-observeproperty-6b - Thing - + N Once the connection is re-established the Web Thing SHOULD, if possible, send any missed property changes which occurred since the last change specified by the Consumer in a Last-Event-ID header. @@ -1771,8 +1696,7 @@

    3 104: http-sse-profile-protocol-binding-unobserveproperty-1 - Consumer - + Y In order to stop observing a property, a Consumer MUST terminate the corresponding Server-Sent Events connection with the Web Thing as specified in the Server-Sent Events specification [[EVENTSOURCE]]. @@ -1783,8 +1707,7 @@

    2 105: http-sse-profile-protocol-binding-observeallproperties-1 - Consumer TD - + Y The URL of a properties resource to be used when observing changes to all properties of a Web Thing MUST be obtained from a Thing Description by locating a Form inside the top level forms member of a Thing Description for which: Its op member contains the value observeallproperties After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https Its subprotocol member has a value of sse @@ -1795,8 +1718,7 @@

    1 106: http-sse-profile-protocol-binding-observeallproperties-2 - Consumer - + Y The resolved value of the href member MUST then be used as the URL of the properties resource. @@ -1807,8 +1729,7 @@

    1 107: http-sse-profile-protocol-binding-observeallproperties-3 - Consumer - + Y In order to observe changes to all properties of a Web Thing, a Consumer MUST follow the Server-Sent Events [[EVENTSOURCE]] specification to open a connection with the Web Thing at the URL of the properties resource. @@ -1819,8 +1740,7 @@

    1 108: http-sse-profile-protocol-binding-observeallproperties-4 - Thing - + Y If a Web Thing receives an HTTP request following the format above then it MUST follow the Server-Sent Events [[EVENTSOURCE]] specification to maintain an open connection with the Consumer and push new property values to the Consumer for all properties for which it has permission to observe. @@ -1831,8 +1751,7 @@

    2 109: http-sse-profile-protocol-binding-observeallproperties-5a - Thing - + Y Whenever a property changes while the Web Thing has an open connection with a Consumer, the Web Thing MUST send the new property value to the Consumer using the event stream format in the Server-Sent Events [[EVENTSOURCE]] specification. @@ -1843,8 +1762,7 @@

    2 110: http-sse-profile-protocol-binding-observeallproperties-5b - Thing - + Y For each message sent, the Web Thing MUST set the event field to the name of the PropertyAffordance and populate the data field with the new property value. @@ -1855,8 +1773,7 @@

    2 111: http-sse-profile-protocol-binding-observeallproperties-5c - Thing - + Y The property data MUST follow the data schema specified in the PropertyAffordance and MUST be serialized in JSON. @@ -1867,8 +1784,7 @@

    2 112: http-sse-profile-protocol-binding-observeallproperties-5d - Thing - + N The id field SHOULD be set to a unique identifier for the event, for use when re-establishing a dropped connection (see below). @@ -1879,8 +1795,7 @@

    2 113: http-sse-profile-protocol-binding-observeallproperties-5e - Thing - + N It is RECOMMENDED that the identifier is a timestamp representing the time at which the property changed @@ -1891,8 +1806,7 @@

    2 114: http-sse-profile-protocol-binding-observeallproperties-6a - Consumer - + Y If the connection between the Consumer and Web Thing drops (except as a result of the unobserveallproperties operation defined below), the Consumer MUST re-establish the connection following the steps outlined in the Server-Sent Events specification [[EVENTSOURCE]]. @@ -1903,8 +1817,7 @@

    1 115: http-sse-profile-protocol-binding-observeallproperties-6b - Thing - + N Once the connection is re-established the Web Thing SHOULD, if possible, send any missed property changes which occurred since the last change specified by the Consumer in a Last-Event-ID header. @@ -1915,8 +1828,7 @@

    2 116: http-sse-profile-protocol-binding-unobserveallproperties-1 - Consumer - + Y In order to unobserve all properties, a Consumer MUST terminate the corresponding Server-Sent Events connection with the properties endpoint of the Web Thing, following the steps specified in the Server-Sent Events specification [[EVENTSOURCE]]. @@ -1927,8 +1839,7 @@

    1 117: http-sse-profile-protocol-binding-subscribeevent-1 - Consumer - + Y The URL of an Event resource to be used when subscribing to an event MUST be obtained from a Thing Description by locating a Form inside the corresponding EventAffordance for which: After defaults have been applied, its op member contains the value subscribeevent After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https Its subprotocol member has a value of sse @@ -1939,8 +1850,7 @@

    2 118: http-sse-profile-protocol-binding-subscribeevent-3 - Consumer - + Y The resolved value of the href member MUST then be used as the URL of the Event resource. @@ -1951,8 +1861,7 @@

    2 119: http-sse-profile-protocol-binding-subscribeevent-4 - Consumer - + Y In order to subscribe to an event, a Consumer MUST follow the Server-Sent Events [[EVENTSOURCE]] specification to open a connection with the Web Thing at the URL of the Event resource. @@ -1963,8 +1872,7 @@

    2 120: http-sse-profile-protocol-binding-subscribeevent-5 - Thing - + Y If a Web Thing receives an HTTP request following the format above and the Consumer has permission to subscribe to the corresponding event, then it MUST follow the Server-Sent Events [[EVENTSOURCE]] specification to maintain an open connection with the Consumer and push event data to the Consumer as events of the specified type are emitted. @@ -1975,8 +1883,7 @@

    3 121: http-sse-profile-protocol-binding-subscribeevent-6a - Thing - + Y Whenever an event of the specified type occurs while the Web Thing has an open connection with a Consumer, the Web Thing MUST send event data to the Consumer using the event stream format in the Server-Sent Events [[EVENTSOURCE]] specification. @@ -1987,8 +1894,7 @@

    3 122: http-sse-profile-protocol-binding-subscribeevent-6b - Thing - + Y For each message sent, the Web Thing MUST set the event field to the name of the EventAffordance and populate the data field with event data, if any. @@ -1999,8 +1905,7 @@

    3 123: http-sse-profile-protocol-binding-subscribeevent-6c - Thing - + Y The event data MUST follow the data schema specified in the EventAffordance and be serialized in JSON. @@ -2011,8 +1916,7 @@

    3 124: http-sse-profile-protocol-binding-subscribeevent-6d - Thing - + N The id field SHOULD be set to a unique identifier for the event, for use when re-establishing a dropped connection (see below). @@ -2023,8 +1927,7 @@

    3 125: http-sse-profile-protocol-binding-subscribeevent-6e - Thing - + N It is RECOMMENDED that the identifier is a timestamp representing the time at which the event ocurred @@ -2035,8 +1938,7 @@

    3 126: http-sse-profile-protocol-binding-subscribeevent-7a - Consumer - + Y If the connection between the Consumer and Web Thing drops (except as a result of the unsubscribe operation defined below), the Consumer MUST re-establish the connection following the steps outlined in the Server-Sent Events specification [[EVENTSOURCE]]. @@ -2047,8 +1949,7 @@

    2 127: http-sse-profile-protocol-binding-subscribeevent-7b - Thing - + N Once the connection is re-established the Web Thing SHOULD, if possible, send any missed events which occurred since the last event specified by the Consumer in a Last-Event-ID header. @@ -2059,8 +1960,7 @@

    3 128: http-sse-profile-protocol-binding-unsubscribeevent-1 - Consumer - + Y In order to unsubscribe from an event, a Consumer MUST terminate the corresponding Server-Sent Events connection with the Web Thing as specified in the Server-Sent Events specification [[EVENTSOURCE]]. @@ -2071,8 +1971,7 @@

    2 129: http-sse-profile-protocol-binding-subscribeallevents-1 - Consumer - + Y The URL of an events resource to be used when subscribing to all events emitted by a Web Thing MUST be obtained from a Thing Description by locating a Form inside the top level forms member of a Thing Description for which: Its op member contains the value subscribeallevents After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https Its subprotocol member has a value of sse @@ -2083,8 +1982,7 @@

    1 130: http-sse-profile-protocol-binding-subscribeallevents-3b - Consumer - + Y The resolved value of the href member MUST then be used as the URL of the events resource. @@ -2095,8 +1993,7 @@

    1 131: http-sse-profile-protocol-binding-subscribeallevents-4 - Consumer - + Y In order to subscribe to all events emitted by a Web Thing, a Consumer MUST follow the Server-Sent Events [[EVENTSOURCE]] specification to open a connection with the Web Thing at the URL of the events resource. @@ -2107,8 +2004,7 @@

    1 132: http-sse-profile-protocol-binding-subscribeallevents-3 - Thing - + Y If a Web Thing receives an HTTP request following the format above then it MUST follow the Server-Sent Events [[EVENTSOURCE]] specification to maintain an open connection with the Consumer and push event data to the Consumer for all event types for which it has permission to subscribe. @@ -2119,8 +2015,7 @@

    2 133: http-sse-profile-protocol-binding-subscribeallevents-4a - Thing - + Y Whenever an event occurs while the Web Thing has an open connection with a Consumer, the Web Thing MUST send event data to the Consumer using the event stream format in the Server-Sent Events [[EVENTSOURCE]] specification. @@ -2131,8 +2026,7 @@

    2 134: http-sse-profile-protocol-binding-subscribeallevents-4b - Thing - + Y For each message sent, the Web Thing MUST set the event field to the name of the EventAffordance and populate the data field with event data, if any. @@ -2143,8 +2037,7 @@

    2 135: http-sse-profile-protocol-binding-subscribeallevents-4c - Thing - + Y The event data MUST follow the data schema specified in the EventAffordance and be serialized in JSON. @@ -2155,8 +2048,7 @@

    2 136: http-sse-profile-protocol-binding-subscribeallevents-4d - Thing - + N The id field SHOULD be set to a unique identifier for the event, for use when re-establishing a dropped connection (see below). @@ -2167,8 +2059,7 @@

    2 137: http-sse-profile-protocol-binding-subscribeallevents-4e - Thing - + N It is RECOMMENDED that the identifier is a timestamp representing the time at which the event ocurred @@ -2179,8 +2070,7 @@

    2 138: http-sse-profile-protocol-binding-subscribeallevents-5a - Consumer - + Y If the connection between the Consumer and Web Thing drops (except as a result of the unsubscribeallevents operation defined below), the Consumer MUST re-establish the connection following the steps outlined in the Server-Sent Events specification [[EVENTSOURCE]]. @@ -2191,8 +2081,7 @@

    1 139: http-sse-profile-protocol-binding-subscribeallevents-5b - Thing - + N Once the connection is re-established the Web Thing SHOULD, if possible, send any missed events which occurred since the last event specified by the Consumer in a Last-Event-ID header. @@ -2203,8 +2092,7 @@

    2 140: http-sse-profile-protocol-binding-unsubscribeallevents-1 - Consumer - + Y In order to unsubscribe from all events, a Consumer MUST terminate the corresponding Server-Sent Events connection with the events endpoint of the Web Thing, following the steps specified in the Server-Sent Events specification [[EVENTSOURCE]]. @@ -2215,8 +2103,7 @@

    1 141: http-webhook-profile-protocol-binding-general-1 - Consumer Thing - + N The HTTP Webhook profile MAY be used in conjunction with the HTTP Basic Profile in order to provide operations to read and write properties and invoke, query and cancel actions. @@ -2227,8 +2114,7 @@

    2 142: http-webhook-profile-protocol-binding-general-3 - Consumer Thing - + Y In order to conform with the HTTP Webhook Profile, Web Things and Consumers MUST also conform with all of the assertions in the Common Constraints section. @@ -2239,8 +2125,7 @@

    2 143: http-webhook-profile-protocol-binding-events-1 - Consumer Thing - + N Depending on the use case, a single listener for multiple things and multiple event types MAY be used. @@ -2251,8 +2136,7 @@

    2 144: http-webhook-profile-protocol-binding-events-2 - Consumer - + Y To minimize network traffic, the same listerner MUST NOT perform multiple subscriptions to the same listener. @@ -2263,8 +2147,7 @@

    0 145: http-webhook-profile-1 - TD - + Y In order to denote that a given Web Thing conforms to the HTTP Webhook Profile, its Thing Description MUST have a profile member [[wot-thing-description]] with a value of https://www.w3.org/2022/wot/profile/http-webhook/v1. @@ -2275,8 +2158,7 @@

    2 146: http-webhook-profile-message-format-1 - Thing TD - + Y Event notification messages MUST comply with the following data schema. @@ -2287,8 +2169,7 @@

    1 147: http-webhook-profile-protocol-binding-1 - Consumer Thing TD - + Y A Consumer or Web Thing conforming to the HTTP Webhook Profile MUST implement this protocol binding. @@ -2299,11 +2180,11 @@

    1 148: http-basic-profile-protocol-binding-subscribeevent-1 - Consumer - + Y The URL of an Event resource to be used when subscribing to an event MUST be obtained from a Thing Description by locating a Form inside the corresponding EventAffordance for which: After defaults have been applied, its op member contains the value subscribeevent After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https Its subprotocol member has a value of webhook + The URL of an Event resource to be used when subscribing to an event MUST be obtained from a Thing Description by locating a Form inside the corresponding EventAffordance for which: After defaults have been applied, its op member contains the value subscribeevent After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https Its subprotocol member has a value of webhook 0 0 @@ -2311,8 +2192,7 @@

    1 149: http-webhook-profile-protocol-binding-subscribeevent-3 - Consumer - + Y The resolved value of the href member MUST then be used as the URL of the Event resource. @@ -2323,11 +2203,11 @@

    1 150: http-webhook-profile-protocol-binding-subscribeevent-4 - Consumer - + Y In order to subscribe to an event, a Consumer MUST provide the listener URL in the request payload of the subscribe operation of the Event resource. + In order to subscribe to an event, a Consumer MUST provide the listener URL in the request payload of the subscribe operation of the Event resource. 0 0 @@ -2335,8 +2215,7 @@

    1 151: http-webhook-profile-protocol-binding-subscribeevent-5 - Thing - + Y If a Web Thing receives an HTTP request following the format above and the Consumer has permission to subscribe to the corresponding event, then it MUST send event messages to the Consumer as events of the specified type are emitted. @@ -2347,8 +2226,7 @@

    2 152: http-webhook-profile-protocol-binding-subscribeevent-6 - Thing - + Y Whenever an event of the specified type occurs, the Web Thing MUST send event data to the Consumer using the event payload format defined in section ["#sec-http-webhook-profile-protocol-binding-events-notification"]. @@ -2359,8 +2237,7 @@

    2 153: http-webhook-profile-protocol-binding-subscribeevent-4b - Consumer - + Y In order to unsubscribe to an event, a Consumer MUST provide the subscriptionID in the data payload of the unsubscribe operation of the Event resource. @@ -2371,11 +2248,11 @@

    1 154: http-webhook-profile-protocol-binding-subscribeallevents-1 - Consumer - + Y The URL of an Events resource to be used when subscribing to all events emitted by a Web Thing MUST be obtained from a Thing Description by locating a Form inside the top level forms member of a Thing Description for which: Its op member contains the value subscribeallevents After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https Its subprotocol member has a value of webhook + The URL of an Events resource to be used when subscribing to all events emitted by a Web Thing MUST be obtained from a Thing Description by locating a Form inside the top level forms member of a Thing Description for which: Its op member contains the value subscribeallevents After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https Its subprotocol member has a value of webhook 0 0 @@ -2383,8 +2260,7 @@

    1 155: http-webhook-profile-protocol-binding-subscribeallevents-3 - Consumer - + Y The resolved value of the href member MUST then be used as the URL of the events resource. @@ -2395,11 +2271,11 @@

    1 156: http-webhook-profile-protocol-binding-subscribeallevents-4 - Consumer - + Y In order to subscribe to all events emitted by a Web Thing, a Consumer MUST send an HTTP request to the Web Thing with: Method set to POST URL set to the URL of the events resource Accept header set to application/json Request Payload contains a JSON object with a subscription request payload. + In order to subscribe to all events emitted by a Web Thing, a Consumer MUST send an HTTP request to the Web Thing with: Method set to POST URL set to the URL of the events resource Accept header set to application/json Request Payload contains a JSON object with a subscription request payload. 0 0 @@ -2407,8 +2283,7 @@

    1 157: http-webhook-profile-protocol-binding-subscribeallevents-5 - Thing - + Y If a Web Thing receives an HTTP request following the format above, then it MUST send event messages to the Consumer for all event types for which it has permission to subscribe. @@ -2419,8 +2294,7 @@

    2 158: http-webhook-profile-protocol-binding-subscribeallevents-6 - Thing TD - + Y Whenever an event occurs, the Web Thing MUST send event data to the Consumer using the event payload format defined in section Message Format. @@ -2431,8 +2305,7 @@

    1 159: http-webhook-profile-protocol-binding-subscribeallevents-7 - Thing - + Y If the connection between the Web Thing and the Consumer drops, the Web Thing MUST re-establish the connection. @@ -2443,8 +2316,7 @@

    2 160: http-webhook-profile-protocol-binding-subscribeallevents-8 - Thing - + N Once the connection is re-established the Web Thing SHOULD, if possible, send any missed events which occurred since the last successful event notification. @@ -2455,8 +2327,7 @@

    2 161: http-webhook-profile-protocol-binding-unsubscribeallevents-1 - Consumer - + Y In order to unsubscribe from all events, a Consumer MUST invoke the unsubscribe operation of the Event resource. @@ -2467,8 +2338,7 @@

    1 162: http-webhook-profile-protocol-binding-event-connections-1 - Thing - + Y A HTTP(s) connection to the event listener of a Consumer MUST be initiated and managed by the Web Thing. @@ -2479,8 +2349,7 @@

    2 163: http-webhook-profile-protocol-binding-event-connections-2 - Consumer - + Y A Consumer MUST terminate the subscription with the events endpoint of the Web Thing. @@ -2491,8 +2360,7 @@

    1 164: http-webhook-profile-protocol-binding-event-connections-3 - Thing - + N If a Consumer becomes unavailable and the Web Thing cannot successfully transmit event messages to the consumer, it SHOULD attempt several retries at increasing intervals. @@ -2503,8 +2371,7 @@

    2 165: http-webhook-profile-protocol-binding-event-connections-4 - Thing - + N After the maximum number of retries was reached, the Web Thing MAY terminate the subscription without having received an unsubscribe or unsubscribeall operation. @@ -2515,8 +2382,7 @@

    2 166: http-webhook-profile-protocol-binding--event-connections-5 - Thing - + Y If the connection between the Web Thing and the Consumer drops, the Web Thing MUST attempt to re-establish the connection. @@ -2527,8 +2393,7 @@

    2 167: http-webhook-profile-protocol-binding-event-connections-6 - Thing - + N Once the connection is re-established, the Web Thing SHOULD, if possible, send any missed events which occurred since the last successful event notification. @@ -2539,8 +2404,7 @@

    2 168: http-webhook-profile-protocol-binding-event-connections-7 - Thing - + N The Web Thing MAY reuse an existing connection to a listener for subsequent message traffic, or it MAY establish a new connection for each message. @@ -2551,8 +2415,7 @@

    2 169: http-webhook-profile-protocol-binding--event-connections-8 - Consumer - + Y When an event message has been received, the Consumer MUST respond with a "HTTP 200 OK" message. @@ -2563,8 +2426,7 @@

    1 170: http-webhook-profile-protocol-binding-event-connections-9 - Consumer TD - + N An (optional) JSON payload MAY be provided to return a response back to the Web Thing via the same communication channel. @@ -2575,8 +2437,7 @@

    1 171: privacy-considerations-1 - Consumer Thing TD - + Y The privacy considerations of the WoT Architecture and WoT Thing Description MUST be adopted by compliant implementations. @@ -2587,8 +2448,7 @@

    0 172: security-considerations-1 - Consumer Thing TD - + Y The security considerations of the WoT Architecture and WoT Thing Description MUST be adopted by compliant implementations. From 4722758bf05644efb68bb7ada384d47bea881f7e Mon Sep 17 00:00:00 2001 From: Michael McCool Date: Tue, 13 Dec 2022 14:20:03 -0400 Subject: [PATCH 12/33] add categories --- testing/report.html | 454 +++++++++++++++++++++++++++++--------------- 1 file changed, 300 insertions(+), 154 deletions(-) diff --git a/testing/report.html b/testing/report.html index 2d0d027..e46502f 100644 --- a/testing/report.html +++ b/testing/report.html @@ -503,7 +503,8 @@

    23: common-constraints-links-media-types-4 - + Consumer + N If a Consumer encounters a link with "rel": "icon" and "type": "image/*" and it is capable of rendering images in the provided format, then it SHOULD interpret the link as an icon for the Thing and display it to the user. @@ -514,7 +515,8 @@

    0 24: common-constraints-links-media-types-5 - + Consumer + N If a Consumer encounters a link with "rel": "alternate" and "type": "text/html" and it is capable of rendering an HTML page and accepting user input, then it SHOULD interpret the link as a user interface for the Thing and provide a means for the user to follow that link and view and interact with the HTML page. @@ -525,7 +527,8 @@

    0 25: common-constraints-links-media-types-6 - + Consumer + N If a Consumer encounters a link with "rel": "service-doc" and "type": "text/plain", "type": "text/html" or "type": "text/pdf", and is capable of rendering documents in the provided format, then it SHOULD interpret the link as a user manual for the Thing and provide a means for the user to follow that link and read the user manual. @@ -536,7 +539,8 @@

    0 26: common-constraints-links-media-types-7 - + Consumer + N If a Consumer encounters a link with "rel": "item" and "type": "application/td+json" and is capable of rendering a hierarchical tree of Things, then it should interpret the link as an indication that the target is a sub-Thing of the current Thing and render this in a meaningful way to the user. @@ -547,7 +551,8 @@

    0 27: common-constraints-links-media-types-8 - + Consumer + N If a Consumer encounters a link with "rel": "collection" and "type": "application/td+json" and is capable of rendering a hierarchical tree of Things, then it should interpret the link as an indication that the target describes a Thing (e.g. a group, system of Things or Thing Directory) which contains the current Thing and render this in a meaningful way to the user. @@ -797,8 +802,6 @@

    18: common-constraints-links-1 TD - N - N The following keywords are defined for links in the HTTP profiles and MAY be present in profile-compliant TDs with the constraints defined by this section. @@ -836,8 +839,6 @@

    21: common-constraints-links-media-types-1 TD - N - N The following media types from IANA MAY be used as the link targets of profile compliant TDs with the constraints in this section. @@ -860,7 +861,8 @@

    2 28: common-constraints-errors-1 - + Thing + Y If any of the operations defined in the protocol bindings of HTTP profiles are unsuccessful then the Web Thing MUST send an HTTP response with an HTTP error code which describes the reason for the failure. @@ -871,7 +873,8 @@

    5 29: common-constraints-errors-2 - + Thing + N It is RECOMMENDED that error responses use one of the following HTTP error codes: 400 Bad Request 401 Unauthorized 403 Forbidden 404 Not Found 500 Internal Server Error @@ -882,7 +885,8 @@

    5 30: common-constraints-errors-3 - + Thing + N A Web Thing MAY respond with 3xx status codes for the purposes of redirection, caching or authentication. @@ -893,7 +897,8 @@

    5 31: common-constraints-errors-4 - + Thing + Y A Web Thing MUST NOT respond with a 300 Multiple Choices status code. @@ -904,7 +909,8 @@

    5 32: common-constraints-errors-5 - + Thing + N Web Things MAY respond with other valid HTTP error codes (e.g. 418 I'm a teapot). @@ -915,7 +921,8 @@

    4 33: common-constraints-errors-6 - + Consumer + N Consumers MAY interpret other valid HTTP error codes as a generic 4xx or 5xx error with no special defined behaviour. @@ -926,7 +933,8 @@

    2 34: common-constraints-errors-7 - + Thing + Y If an HTTP error response contains a body, the content of that body MUST conform with the Problem Details format [[RFC7807]]. @@ -937,7 +945,8 @@

    5 35: common-constraints-default-language - + TD + Y One Map contained in an @context Array MUST 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). @@ -948,7 +957,8 @@

    4 36: http-basic-profile-1 - + Thing Consumer + Y In order to conform with the HTTP Basic Profile, Web Things and Consumers MUST also conform with all of the assertions in the Common Constraints section. @@ -959,7 +969,8 @@

    2 37: http-basic-profile-identifier-1 - + TD + Y In order to denote that a given Web Thing conforms to the HTTP Basic Profile, its Thing Description MUST have a profile member [[wot-thing-description]] with a value of https://www.w3.org/2022/wot/profile/http-basic/v1. @@ -970,7 +981,8 @@

    5 38: profile-5-2-thing-protocol-binding-1 - + Consumer Thing + Y A Consumer or Web Thing conforming to the HTTP Basic Profile MUST implement this protocol binding. @@ -981,7 +993,8 @@

    4 39: http-basic-profile-protocol-binding-readproperty-1 - + TD + Y The URL of a Property resource to be used when reading the value of a property MUST be obtained from a Thing Description by locating a Form inside the corresponding PropertyAffordance for which: After defaults have been applied, its op member contains the value readproperty. After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https @@ -992,7 +1005,8 @@

    3 40: http-basic-profile-protocol-binding-readproperty-3 - + Consumer + Y The resolved value of the href member MUST then be used as the URL of the Property resource. @@ -1003,7 +1017,8 @@

    3 41: http-basic-profile-protocol-binding-readproperty-4 - + Consumer + Y In order to read the value of a property, a Consumer MUST send an HTTP request to a Web Thing with: Method set to GET URL set to the URL of the Property resource Accept header set to application/json @@ -1014,7 +1029,8 @@

    3 42: http-basic-profile-protocol-binding-readproperty-6 - + Thing + Y If a Web Thing receives an HTTP request following the format above and the Consumer has permission to read the corresponding property, then upon successfully reading the value of the property it MUST send an HTTP response with: Status code set to 200 Content-Type header set to application/json A body with the value of the property serialized in JSON @@ -1025,7 +1041,8 @@

    5 43: http-basic-profile-protocol-binding-writeproperty-1 - + Consumer + Y The URL of a Property resource to be used when writing the value of a property MUST be obtained from a Thing Description by locating a Form inside the corresponding PropertyAffordance for which: After defaults have been applied, its op member contains the value writeproperty After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https @@ -1036,7 +1053,8 @@

    3 44: http-basic-profile-protocol-binding-writeproperty-3 - + Consumer + Y The resolved value of the href member MUST then be used as the URL of the Property resource. @@ -1047,7 +1065,8 @@

    3 45: http-basic-profile-protocol-binding-writeproperty-4 - + Consumer + Y In order to write the value of a property, a Consumer MUST send an HTTP request to a Web Thing with: Method set to PUT URL set to the URL of the Property resource Content-Type header set to application/json A body with a requested new value for the property serialized in JSON @@ -1058,7 +1077,8 @@

    3 46: http-basic-profile-protocol-binding-writeproperty-6 - + Thing + Y If a Web Thing receives an HTTP request following the format above and the Consumer has permission to write the corresponding property, then upon successfully writing the value of the property it MUST send an HTTP response with: Status code set to 204 @@ -1069,7 +1089,8 @@

    3 47: http-basic-profile-protocol-binding-readallproperties-1 - + Consumer + Y The URL of a Properties resource to be used when reading the value of all properties at once MUST be obtained from a Thing Description by locating a Form inside the top level forms member for which: Its op member contains the value readallproperties After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https @@ -1080,7 +1101,8 @@

    3 48: http-basic-profile-protocol-binding-readallproperties-3 - + Consumer + Y The resolved value of the href member MUST then be used as the URL of the Properties resource. @@ -1091,7 +1113,8 @@

    3 49: http-basic-profile-protocol-binding-readallproperties-4 - + Consumer + Y In order to read the value of all properties, a Consumer MUST send an HTTP request to a Web Thing with: Method set to GET URL set to the URL of the Properties resource Accept header set to application/json @@ -1102,7 +1125,8 @@

    3 50: http-basic-profile-protocol-binding-readallproperties-5 - + Thing + Y If a Web Thing receives an HTTP request following the format above, then upon successfully reading the values of all the readable properties to which the Consumer has permission to access, it MUST send an HTTP response with: Status code set to 200 Content-Type header set to application/json A body with the values of all readable properties serialized in JSON, as an object keyed by property name @@ -1113,7 +1137,8 @@

    4 51: http-basic-profile-protocol-binding-writemultipleproperties-1 - + Consumer + Y The URL of a Properties resource to be used when writing the value of multiple properties at once MUST be obtained from a Thing Description by locating a Form inside the top level forms member for which: Its op member contains the value writemultipleproperties After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https @@ -1124,7 +1149,8 @@

    2 52: http-basic-profile-protocol-bindings-writemultipleproperties-3 - + Consumer + Y The resolved value of the href member MUST then be used as the URL of the Properties resource. @@ -1135,7 +1161,8 @@

    2 53: http-basic-profile-protocol-binding-writemultipleproperties-4 - + Consumer + Y In order to write the value of multiple properties at once, a Consumer MUST send an HTTP request to a Web Thing with: Method set to PUT URL set to the URL of the Properties resource Content-Type header set to application/json A body with requested new values for the writable properties serialized in JSON, as an object keyed by property name @@ -1146,7 +1173,8 @@

    2 54: http-basic-profile-protocol-binding-writemultipleproperties-6 - + Thing + Y If a Web Thing receives an HTTP request following the format above, then upon successfully writing the values of the requested writable properties it MUST send an HTTP response with: Status code set to 204 @@ -1157,7 +1185,8 @@

    3 55: http-basic-profile-protocol-binding-invokeaction-1 - + Consumer + Y The URL of an Action resource to be used when invoking an action MUST be obtained from a Thing Description by locating a Form inside the corresponding ActionAffordance for which: After defaults have been applied, the value of its op member is invokeaction After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https @@ -1168,7 +1197,8 @@

    2 56: http-basic-profile-protocol-binding-invokeaction-3 - + Consumer + Y The resolved value of the href member MUST then be used as the URL of the Action resource. @@ -1179,7 +1209,8 @@

    2 57: http-basic-profile-protocol-binding-invokeaction-4 - + Consumer + Y In order to invoke an action on a Web Thing, a Consumer MUST send an HTTP request to the Web Thing with: Method set to POST URL set to the URL of the Action resource Accept header set to application/json Content-Type header set to application/json A body with an input to the action, if any, serialized in JSON @@ -1190,7 +1221,8 @@

    2 58: http-basic-profile-protocol-binding-invokeaction-6 - + Thing + Y If a Web Thing receives an HTTP request following the format above then it MUST respond with one of three response formats: Synchronous Action Response Asynchronous Action Response Error Response @@ -1201,7 +1233,8 @@

    3 59: http-basic-profile-protocol-binding-invokeaction-7 - + Thing + Y If the synchronous member of the ActionAffordance [[wot-thing-description11]] is set to true then the Web Thing MUST respond with a Synchronous Action Response. @@ -1212,7 +1245,8 @@

    1 60: http-basic-profile-protocol-binding-invokeaction-8 - + Thing + Y If the synchronous member of the ActionAffordance [[wot-thing-description11]] is set to false then the Web Thing MUST respond with an Asynchronous Action Response. @@ -1223,7 +1257,8 @@

    4 61: http-basic-profile-protocol-binding-invokeaction-9 - + Thing + N If the synchronous member of the ActionAffordance [[wot-thing-description11]] is undefined then the Web Thing MAY respond with either a Synchronous Action Response or Asynchronous Action Response. @@ -1234,7 +1269,8 @@

    3 62: http-basic-profile-protocol-binding-invokeaction-10 - + Thing + N For long-running actions which are not expected to finish executing within the timeout period of an HTTP request (e.g. 30 to 120 seconds), it is RECOMMENDED that a Web Thing respond with an Asynchronous Action Response so that a Consumer may continue to monitor the status of an action request with a queryaction operation on a dynamically created ActionStatus resource, after the initial invokeaction response. @@ -1245,7 +1281,8 @@

    4 63: http-basic-profile-protocol-binding-invokeaction-11 - + Thing + N For short-lived actions which are expected to finish executing within the timeout period of an HTTP request, a Web Thing MAY wait until the action has completed to send a Synchronous Action Response. @@ -1256,7 +1293,8 @@

    1 64: http-basic-profile-protocol-binding-invokeaction-12 - + Thing + Y If a Web Thing encounters an error in attempting to execute an action before responding to the invokeaction request, then it MUST send an Error Response. @@ -1267,7 +1305,8 @@

    2 65: http-basic-profile-protocol-binding-invokeaction-13 - + Consumer + Y Conforming Consumers MUST support all three types of response to the initial invokeaction request. @@ -1278,7 +1317,8 @@

    4 66: http-basic-profile-protocol-binding-invokeaction-14 - + Consumer Thing + N After the initial request, support for subsequent operations on an ActionStatus resource is OPTIONAL. @@ -1289,7 +1329,8 @@

    1 67: http-basic-profile-protocol-binding-invokeaction-15 - + Consumer Thing TD + Y The status of an asynchronous action invocation request is represented by an ActionStatus object which includes the following members: Member Description Assignment Type status The status of the action request. mandatory string (one of pending, running, completed or failed) output The output data, if any, of a completed action which MUST conform with the output data schema of the corresponding ActionAffordance. optional any type error An error message, if any, associated with a failed action which MUST use the JSON serialization of the Problem Details format [[RFC7807]] (only needed in response to a queryaction operation). optional object href The [[URL]] of an ActionStatus resource which can be used by queryaction and cancelaction operations, the URI scheme [[RFC3986]] of which MUST resolve to http or https (only needed for an Asynchronous Action Response). optional string timeRequested A timestamp indicating the time at which the Thing received the request to execute the action. (See Date Format for date format constraints). optional string timeEnded A timestamp indicating the time at which the Thing successfully completed executing the action, or failed to execute the action. (See Date Format for date format constraints). optional string @@ -1300,7 +1341,8 @@

    4 68: http-basic-profile-protocol-binding-invokeaction-16 - + TD + Y status: The status of the action request. MUST be included. Type: string (one of pending, running, completed or failed) . @@ -1311,7 +1353,8 @@

    1 69: http-basic-profile-protocol-binding-invokeaction-17 - + TD + Y output: The output data, if any, of a completed action which MUST conform with the output data schema of the corresponding ActionAffordance. MAY be included. Type: any type. @@ -1322,7 +1365,8 @@

    1 70: http-basic-profile-protocol-binding-invokeaction-18 - + TD Thing + Y error: An error message, if any, associated with a failed action which MUST use the JSON serialization of the Problem Details format [[RFC7807]] (only needed in response to a queryaction operation). MAY be included. Type: object. @@ -1333,7 +1377,8 @@

    1 71: http-basic-profile-protocol-binding-invokeaction-19 - + TD + Y href: The [[URL]] of an ActionStatus resource which can be used by queryaction and cancelaction operations, the URI scheme [[RFC3986]] of which MUST resolve to http or https (only needed for an Asynchronous Action Response). MAY be included. Type: string. @@ -1344,7 +1389,8 @@

    1 72: http-basic-profile-protocol-binding-invokeaction-20 - + Thing + Y If providing a Synchronous Action Response, a Web Thing MUST send an HTTP response with: Status code set to 200 Content-Type header set to application/json A body containing the output of the action, if any, serialized in JSON @@ -1355,7 +1401,8 @@

    1 73: http-basic-profile-protocol-binding-invokeaction-21 - + Thing + Y If providing an Asynchronous Action Response, a Web Thing MUST send an HTTP response containing the URL of an ActionStatus resource, the URI scheme [[RFC3986]] of which MUST resolve to http or https. The response MUST have: Status code set to 201 Content-Type header set to application/json Location header set to the URL of the ActionStatus resource A body containing an ActionStatus object serialized in JSON, with its href member set to the URL of the ActionStatus resource @@ -1366,7 +1413,8 @@

    1 74: http-basic-profile-protocol-binding-queryaction-1a - + Thing TD + Y A Web Thing which provides Asynchronous Action Responses to an invokeaction operation on an Action MUST also support queryaction operations on that same Action. @@ -1377,7 +1425,8 @@

    4 75: http-basic-profile-protocol-binding-queryaction-1b - + Thing TD + N A Web Thing which only provides Synchronous Action Responses to an invokeaction operation on an Action SHOULD NOT support queryaction operations on that same Action. @@ -1388,7 +1437,8 @@

    3 76: http-basic-profile-protocol-binding-queryaction-2 - + Consumer TD + Y The URL of an ActionStatus resource to be used in a queryaction operation MUST be obtained from the Location header of an Asynchronous Action Response, or the href member of the ActionStatus object in its body. @@ -1399,7 +1449,8 @@

    3 77: http-basic-profile-protocol-binding-queryaction-3 - + Consumer + Y In order to query the status of an action request, a Consumer MUST send an HTTP request to a Web Thing with: Method set to GET URL set to the URL of the ActionStatus resource Accept header set to application/json @@ -1410,7 +1461,8 @@

    2 78: http-basic-profile-protocol-binding-queryaction-5 - + Thing + Y If a Web Thing receives an HTTP request following the format above and the Consumer has permission to query the corresponding ActionStatus resource, then upon successfully reading the status of the action request it MUST send an HTTP response with: Status code set to 200 Content-Type header set to application/json A body containing an ActionStatus object representing the current status of the action request, serialized in JSON @@ -1421,7 +1473,8 @@

    4 79: http-basic-profile-protocol-binding-queryaction-7a - + Thing + Y If the queried action failed to execute, then the status member of the ActionStatus object MUST be set to "failed". @@ -1432,7 +1485,8 @@

    4 80: http-basic-profile-protocol-binding-queryaction-7b - + Thing + N If the queried action failed to execute, then the error member MAY provide additional error information conforming to the Problem Details format [[RFC7807]]. @@ -1443,7 +1497,8 @@

    4 81: http-basic-profile-protocol-binding-cancelaction-1a - + Thing + N A Web Thing which provides Asynchronous Action Responses to an invokeaction operation on an Action MAY also support cancelaction operations on that same Action. @@ -1454,7 +1509,8 @@

    3 82: http-basic-profile-protocol-binding-cancelaction-1b - + Thing + N A Web Thing which only provides Synchronous Action Responses to an invokeaction operation on an Action SHOULD NOT support cancelaction operations on that same Action. @@ -1465,7 +1521,8 @@

    4 83: http-basic-profile-protocol-binding-cancelaction-2 - + Consumer + Y The URL of an ActionStatus resource to be used in a cancelaction operation MUST be obtained from the Location header of an Asynchronous Action Response, or the href member of the ActionStatus object in its body. @@ -1476,7 +1533,8 @@

    2 84: http-basic-profile-protocol-binding-cancelaction-3 - + Consumer + Y In order to cancel an action request, a Consumer MUST send an HTTP request to a Web Thing with: Method set to DELETE URL set to the URL of the ActionStatus resource @@ -1487,7 +1545,8 @@

    2 85: http-basic-profile-protocol-binding-cancelaction-5 - + Thing + Y If a Web Thing receives an HTTP request following the format above and the Consumer has permission to cancel the corresponding Action request, then upon successfully cancelling Action it MUST send an HTTP response with: Status code set to 204 @@ -1498,7 +1557,8 @@

    4 86: http-basic-profile-protocol-binding-queryallactions-1 - + Consumer + Y The URL of an Actions resource to be used when querying the status of all ongoing action requests MUST be obtained from a Thing Description by locating a Form inside the top level forms member for which: Its op member contains the value queryallactions After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https @@ -1509,7 +1569,8 @@

    2 87: http-basic-profile-protocol-binding-queryallactions-3 - + Consumer + Y The resolved value of the href member MUST then be used as the URL of the Actions resource. @@ -1520,7 +1581,8 @@

    2 88: http-basic-profile-protocol-binding-queryallactions-4 - + Consumer + Y In order to query the status of all ongoing action requests, a Consumer MUST send an HTTP request to a Web Thing with: Method set to GET URL set to the URL of the Actions resource Accept header set to application/json @@ -1531,7 +1593,8 @@

    2 89: http-basic-profile-protocol-binding-queryallactions-6a - + Thing + Y If a Web Thing receives an HTTP request following the format above, then upon successfully retreiving the status of all ongoing action requests to which the Consumer has permission to access, it MUST send an HTTP response with: Status code set to 200 Content-Type header set to application/json A body containing an object, keyed by Action name, with the value of each object member being an array of ActionStatus objects representing the action requests, serialized in JSON. @@ -1542,7 +1605,8 @@

    4 90: http-basic-profile-protocol-binding-queryallactions-6b - + Thing + Y Each array in the result object MUST be sorted in reverse chronological order such that the most recent action request appears first. @@ -1553,7 +1617,8 @@

    4 91: http-sse-profile-1 - + Thing Consumer TD + Y In order to conform with the HTTP SSE Profile, Web Things and Consumers MUST also conform with all of the assertions in the Common Constraints section. @@ -1564,7 +1629,8 @@

    4 92: http-sse-profile-identifier-1 - + TD + Y In order to denote that a given Web Thing conforms to the HTTP SSE Profile, its Thing Description MUST have a profile member [[wot-thing-description]] with a value of https://www.w3.org/2022/wot/profile/http-sse/v1. @@ -1575,7 +1641,8 @@

    4 93: http-sse-profile-protocol-binding-1 - + Consumer Thing + Y A Consumer or Web Thing conforming to the HTTP SSE Profile MUST implement this protocol binding. @@ -1586,7 +1653,8 @@

    4 94: http-sse-profile-protocol-binding-observeproperty-1 - + Consumer + Y The URL of a Property resource to be used when observing the value of a property MUST be obtained from a Thing Description by locating a Form inside the corresponding PropertyAffordance for which: Its op member contains the value observeproperty After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https Its subprotocol member has a value of sse @@ -1597,7 +1665,8 @@

    2 95: http-sse-profile-protocol-binding-observeproperty-2 - + Consumer + Y The resolved value of the href member MUST then be used as the URL of the Property resource. @@ -1608,7 +1677,8 @@

    2 96: http-sse-profile-protocol-binding-observeproperty-3 - + Consumer + Y In order to observe a property, a Consumer MUST follow the Server-Sent Events [[EVENTSOURCE]] specification to open a connection with the Web Thing at the URL of the Property resource. @@ -1619,7 +1689,8 @@

    2 97: http-sse-profile-protocol-binding-observeproperty-4 - + Thing + Y If a Web Thing receives an HTTP request following the format above and the Consumer has permission to observe the corresponding property, then it MUST follow the Server-Sent Events [[EVENTSOURCE]] specification to maintain an open connection with the Consumer and push a property value to the Consumer each time the value of the specified property changes. @@ -1630,7 +1701,8 @@

    3 98: http-sse-profile-protocol-binding-observeproperty-5a - + Thing + Y Whenever the value of the specified property changes while the Web Thing has an open connection with a Consumer, the Web Thing MUST send a property value to the Consumer using the event stream format in the Server-Sent Events [[EVENTSOURCE]] specification. @@ -1641,7 +1713,8 @@

    3 99: http-sse-profile-protocol-binding-observeproperty-5b - + Thing + Y For each message sent, the Web Thing MUST set the event field to the name of the PropertyAffordance and populate the data field with the property value, serialized in JSON and following the data schema specified in the PropertyAffordance. @@ -1652,7 +1725,8 @@

    3 100: http-sse-profile-protocol-binding-observeproperty-5c - + Thing + N The id field SHOULD be set to a unique identifier for the property change, for use when re-establishing a dropped connection (see below). @@ -1663,7 +1737,8 @@

    3 101: http-sse-profile-protocol-binding-observeproperty-5d - + Thing + N It is RECOMMENDED that the identifier is a timestamp representing the time at which the property changed @@ -1674,7 +1749,8 @@

    3 102: http-sse-profile-protocol-binding-observeproperty-6a - + Consumer + Y If the connection between the Consumer and Web Thing drops (except as a result of the unobserve operation defined below), the Consumer MUST re-establish the connection following the steps outlined in the Server-Sent Events specification [[EVENTSOURCE]]. @@ -1685,7 +1761,8 @@

    2 103: http-sse-profile-protocol-binding-observeproperty-6b - + Thing + N Once the connection is re-established the Web Thing SHOULD, if possible, send any missed property changes which occurred since the last change specified by the Consumer in a Last-Event-ID header. @@ -1696,7 +1773,8 @@

    3 104: http-sse-profile-protocol-binding-unobserveproperty-1 - + Consumer + Y In order to stop observing a property, a Consumer MUST terminate the corresponding Server-Sent Events connection with the Web Thing as specified in the Server-Sent Events specification [[EVENTSOURCE]]. @@ -1707,7 +1785,8 @@

    2 105: http-sse-profile-protocol-binding-observeallproperties-1 - + Consumer TD + Y The URL of a properties resource to be used when observing changes to all properties of a Web Thing MUST be obtained from a Thing Description by locating a Form inside the top level forms member of a Thing Description for which: Its op member contains the value observeallproperties After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https Its subprotocol member has a value of sse @@ -1718,7 +1797,8 @@

    1 106: http-sse-profile-protocol-binding-observeallproperties-2 - + Consumer + Y The resolved value of the href member MUST then be used as the URL of the properties resource. @@ -1729,7 +1809,8 @@

    1 107: http-sse-profile-protocol-binding-observeallproperties-3 - + Consumer + Y In order to observe changes to all properties of a Web Thing, a Consumer MUST follow the Server-Sent Events [[EVENTSOURCE]] specification to open a connection with the Web Thing at the URL of the properties resource. @@ -1740,7 +1821,8 @@

    1 108: http-sse-profile-protocol-binding-observeallproperties-4 - + Thing + Y If a Web Thing receives an HTTP request following the format above then it MUST follow the Server-Sent Events [[EVENTSOURCE]] specification to maintain an open connection with the Consumer and push new property values to the Consumer for all properties for which it has permission to observe. @@ -1751,7 +1833,8 @@

    2 109: http-sse-profile-protocol-binding-observeallproperties-5a - + Thing + Y Whenever a property changes while the Web Thing has an open connection with a Consumer, the Web Thing MUST send the new property value to the Consumer using the event stream format in the Server-Sent Events [[EVENTSOURCE]] specification. @@ -1762,7 +1845,8 @@

    2 110: http-sse-profile-protocol-binding-observeallproperties-5b - + Thing + Y For each message sent, the Web Thing MUST set the event field to the name of the PropertyAffordance and populate the data field with the new property value. @@ -1773,7 +1857,8 @@

    2 111: http-sse-profile-protocol-binding-observeallproperties-5c - + Thing + Y The property data MUST follow the data schema specified in the PropertyAffordance and MUST be serialized in JSON. @@ -1784,7 +1869,8 @@

    2 112: http-sse-profile-protocol-binding-observeallproperties-5d - + Thing + N The id field SHOULD be set to a unique identifier for the event, for use when re-establishing a dropped connection (see below). @@ -1795,7 +1881,8 @@

    2 113: http-sse-profile-protocol-binding-observeallproperties-5e - + Thing + N It is RECOMMENDED that the identifier is a timestamp representing the time at which the property changed @@ -1806,7 +1893,8 @@

    2 114: http-sse-profile-protocol-binding-observeallproperties-6a - + Consumer + Y If the connection between the Consumer and Web Thing drops (except as a result of the unobserveallproperties operation defined below), the Consumer MUST re-establish the connection following the steps outlined in the Server-Sent Events specification [[EVENTSOURCE]]. @@ -1817,7 +1905,8 @@

    1 115: http-sse-profile-protocol-binding-observeallproperties-6b - + Thing + N Once the connection is re-established the Web Thing SHOULD, if possible, send any missed property changes which occurred since the last change specified by the Consumer in a Last-Event-ID header. @@ -1828,7 +1917,8 @@

    2 116: http-sse-profile-protocol-binding-unobserveallproperties-1 - + Consumer + Y In order to unobserve all properties, a Consumer MUST terminate the corresponding Server-Sent Events connection with the properties endpoint of the Web Thing, following the steps specified in the Server-Sent Events specification [[EVENTSOURCE]]. @@ -1839,7 +1929,8 @@

    1 117: http-sse-profile-protocol-binding-subscribeevent-1 - + Consumer + Y The URL of an Event resource to be used when subscribing to an event MUST be obtained from a Thing Description by locating a Form inside the corresponding EventAffordance for which: After defaults have been applied, its op member contains the value subscribeevent After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https Its subprotocol member has a value of sse @@ -1850,7 +1941,8 @@

    2 118: http-sse-profile-protocol-binding-subscribeevent-3 - + Consumer + Y The resolved value of the href member MUST then be used as the URL of the Event resource. @@ -1861,7 +1953,8 @@

    2 119: http-sse-profile-protocol-binding-subscribeevent-4 - + Consumer + Y In order to subscribe to an event, a Consumer MUST follow the Server-Sent Events [[EVENTSOURCE]] specification to open a connection with the Web Thing at the URL of the Event resource. @@ -1872,7 +1965,8 @@

    2 120: http-sse-profile-protocol-binding-subscribeevent-5 - + Thing + Y If a Web Thing receives an HTTP request following the format above and the Consumer has permission to subscribe to the corresponding event, then it MUST follow the Server-Sent Events [[EVENTSOURCE]] specification to maintain an open connection with the Consumer and push event data to the Consumer as events of the specified type are emitted. @@ -1883,7 +1977,8 @@

    3 121: http-sse-profile-protocol-binding-subscribeevent-6a - + Thing + Y Whenever an event of the specified type occurs while the Web Thing has an open connection with a Consumer, the Web Thing MUST send event data to the Consumer using the event stream format in the Server-Sent Events [[EVENTSOURCE]] specification. @@ -1894,7 +1989,8 @@

    3 122: http-sse-profile-protocol-binding-subscribeevent-6b - + Thing + Y For each message sent, the Web Thing MUST set the event field to the name of the EventAffordance and populate the data field with event data, if any. @@ -1905,7 +2001,8 @@

    3 123: http-sse-profile-protocol-binding-subscribeevent-6c - + Thing + Y The event data MUST follow the data schema specified in the EventAffordance and be serialized in JSON. @@ -1916,7 +2013,8 @@

    3 124: http-sse-profile-protocol-binding-subscribeevent-6d - + Thing + N The id field SHOULD be set to a unique identifier for the event, for use when re-establishing a dropped connection (see below). @@ -1927,7 +2025,8 @@

    3 125: http-sse-profile-protocol-binding-subscribeevent-6e - + Thing + N It is RECOMMENDED that the identifier is a timestamp representing the time at which the event ocurred @@ -1938,7 +2037,8 @@

    3 126: http-sse-profile-protocol-binding-subscribeevent-7a - + Consumer + Y If the connection between the Consumer and Web Thing drops (except as a result of the unsubscribe operation defined below), the Consumer MUST re-establish the connection following the steps outlined in the Server-Sent Events specification [[EVENTSOURCE]]. @@ -1949,7 +2049,8 @@

    2 127: http-sse-profile-protocol-binding-subscribeevent-7b - + Thing + N Once the connection is re-established the Web Thing SHOULD, if possible, send any missed events which occurred since the last event specified by the Consumer in a Last-Event-ID header. @@ -1960,7 +2061,8 @@

    3 128: http-sse-profile-protocol-binding-unsubscribeevent-1 - + Consumer + Y In order to unsubscribe from an event, a Consumer MUST terminate the corresponding Server-Sent Events connection with the Web Thing as specified in the Server-Sent Events specification [[EVENTSOURCE]]. @@ -1971,7 +2073,8 @@

    2 129: http-sse-profile-protocol-binding-subscribeallevents-1 - + Consumer + Y The URL of an events resource to be used when subscribing to all events emitted by a Web Thing MUST be obtained from a Thing Description by locating a Form inside the top level forms member of a Thing Description for which: Its op member contains the value subscribeallevents After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https Its subprotocol member has a value of sse @@ -1982,7 +2085,8 @@

    1 130: http-sse-profile-protocol-binding-subscribeallevents-3b - + Consumer + Y The resolved value of the href member MUST then be used as the URL of the events resource. @@ -1993,7 +2097,8 @@

    1 131: http-sse-profile-protocol-binding-subscribeallevents-4 - + Consumer + Y In order to subscribe to all events emitted by a Web Thing, a Consumer MUST follow the Server-Sent Events [[EVENTSOURCE]] specification to open a connection with the Web Thing at the URL of the events resource. @@ -2004,7 +2109,8 @@

    1 132: http-sse-profile-protocol-binding-subscribeallevents-3 - + Thing + Y If a Web Thing receives an HTTP request following the format above then it MUST follow the Server-Sent Events [[EVENTSOURCE]] specification to maintain an open connection with the Consumer and push event data to the Consumer for all event types for which it has permission to subscribe. @@ -2015,7 +2121,8 @@

    2 133: http-sse-profile-protocol-binding-subscribeallevents-4a - + Thing + Y Whenever an event occurs while the Web Thing has an open connection with a Consumer, the Web Thing MUST send event data to the Consumer using the event stream format in the Server-Sent Events [[EVENTSOURCE]] specification. @@ -2026,7 +2133,8 @@

    2 134: http-sse-profile-protocol-binding-subscribeallevents-4b - + Thing + Y For each message sent, the Web Thing MUST set the event field to the name of the EventAffordance and populate the data field with event data, if any. @@ -2037,7 +2145,8 @@

    2 135: http-sse-profile-protocol-binding-subscribeallevents-4c - + Thing + Y The event data MUST follow the data schema specified in the EventAffordance and be serialized in JSON. @@ -2048,7 +2157,8 @@

    2 136: http-sse-profile-protocol-binding-subscribeallevents-4d - + Thing + N The id field SHOULD be set to a unique identifier for the event, for use when re-establishing a dropped connection (see below). @@ -2059,7 +2169,8 @@

    2 137: http-sse-profile-protocol-binding-subscribeallevents-4e - + Thing + N It is RECOMMENDED that the identifier is a timestamp representing the time at which the event ocurred @@ -2070,7 +2181,8 @@

    2 138: http-sse-profile-protocol-binding-subscribeallevents-5a - + Consumer + Y If the connection between the Consumer and Web Thing drops (except as a result of the unsubscribeallevents operation defined below), the Consumer MUST re-establish the connection following the steps outlined in the Server-Sent Events specification [[EVENTSOURCE]]. @@ -2081,7 +2193,8 @@

    1 139: http-sse-profile-protocol-binding-subscribeallevents-5b - + Thing + N Once the connection is re-established the Web Thing SHOULD, if possible, send any missed events which occurred since the last event specified by the Consumer in a Last-Event-ID header. @@ -2092,7 +2205,8 @@

    2 140: http-sse-profile-protocol-binding-unsubscribeallevents-1 - + Consumer + Y In order to unsubscribe from all events, a Consumer MUST terminate the corresponding Server-Sent Events connection with the events endpoint of the Web Thing, following the steps specified in the Server-Sent Events specification [[EVENTSOURCE]]. @@ -2103,7 +2217,8 @@

    1 141: http-webhook-profile-protocol-binding-general-1 - + Consumer Thing + N The HTTP Webhook profile MAY be used in conjunction with the HTTP Basic Profile in order to provide operations to read and write properties and invoke, query and cancel actions. @@ -2114,7 +2229,8 @@

    2 142: http-webhook-profile-protocol-binding-general-3 - + Consumer Thing + Y In order to conform with the HTTP Webhook Profile, Web Things and Consumers MUST also conform with all of the assertions in the Common Constraints section. @@ -2125,7 +2241,8 @@

    2 143: http-webhook-profile-protocol-binding-events-1 - + Consumer Thing + N Depending on the use case, a single listener for multiple things and multiple event types MAY be used. @@ -2136,7 +2253,8 @@

    2 144: http-webhook-profile-protocol-binding-events-2 - + Consumer + Y To minimize network traffic, the same listerner MUST NOT perform multiple subscriptions to the same listener. @@ -2147,7 +2265,8 @@

    0 145: http-webhook-profile-1 - + TD + Y In order to denote that a given Web Thing conforms to the HTTP Webhook Profile, its Thing Description MUST have a profile member [[wot-thing-description]] with a value of https://www.w3.org/2022/wot/profile/http-webhook/v1. @@ -2158,7 +2277,8 @@

    2 146: http-webhook-profile-message-format-1 - + Thing TD + Y Event notification messages MUST comply with the following data schema. @@ -2169,7 +2289,8 @@

    1 147: http-webhook-profile-protocol-binding-1 - + Consumer Thing TD + Y A Consumer or Web Thing conforming to the HTTP Webhook Profile MUST implement this protocol binding. @@ -2180,7 +2301,8 @@

    1 148: http-basic-profile-protocol-binding-subscribeevent-1 - + Consumer + Y The URL of an Event resource to be used when subscribing to an event MUST be obtained from a Thing Description by locating a Form inside the corresponding EventAffordance for which: After defaults have been applied, its op member contains the value subscribeevent After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https Its subprotocol member has a value of webhook @@ -2192,7 +2314,8 @@

    1 149: http-webhook-profile-protocol-binding-subscribeevent-3 - + Consumer + Y The resolved value of the href member MUST then be used as the URL of the Event resource. @@ -2203,7 +2326,8 @@

    1 150: http-webhook-profile-protocol-binding-subscribeevent-4 - + Consumer + Y In order to subscribe to an event, a Consumer MUST provide the listener URL in the request payload of the subscribe operation of the Event resource. @@ -2215,7 +2339,8 @@

    1 151: http-webhook-profile-protocol-binding-subscribeevent-5 - + Thing + Y If a Web Thing receives an HTTP request following the format above and the Consumer has permission to subscribe to the corresponding event, then it MUST send event messages to the Consumer as events of the specified type are emitted. @@ -2226,7 +2351,8 @@

    2 152: http-webhook-profile-protocol-binding-subscribeevent-6 - + Thing + Y Whenever an event of the specified type occurs, the Web Thing MUST send event data to the Consumer using the event payload format defined in section ["#sec-http-webhook-profile-protocol-binding-events-notification"]. @@ -2237,7 +2363,8 @@

    2 153: http-webhook-profile-protocol-binding-subscribeevent-4b - + Consumer + Y In order to unsubscribe to an event, a Consumer MUST provide the subscriptionID in the data payload of the unsubscribe operation of the Event resource. @@ -2248,7 +2375,8 @@

    1 154: http-webhook-profile-protocol-binding-subscribeallevents-1 - + Consumer + Y The URL of an Events resource to be used when subscribing to all events emitted by a Web Thing MUST be obtained from a Thing Description by locating a Form inside the top level forms member of a Thing Description for which: Its op member contains the value subscribeallevents After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https Its subprotocol member has a value of webhook @@ -2260,7 +2388,8 @@

    1 155: http-webhook-profile-protocol-binding-subscribeallevents-3 - + Consumer + Y The resolved value of the href member MUST then be used as the URL of the events resource. @@ -2271,7 +2400,8 @@

    1 156: http-webhook-profile-protocol-binding-subscribeallevents-4 - + Consumer + Y In order to subscribe to all events emitted by a Web Thing, a Consumer MUST send an HTTP request to the Web Thing with: Method set to POST URL set to the URL of the events resource Accept header set to application/json Request Payload contains a JSON object with a subscription request payload. @@ -2283,7 +2413,8 @@

    1 157: http-webhook-profile-protocol-binding-subscribeallevents-5 - + Thing + Y If a Web Thing receives an HTTP request following the format above, then it MUST send event messages to the Consumer for all event types for which it has permission to subscribe. @@ -2294,7 +2425,8 @@

    2 158: http-webhook-profile-protocol-binding-subscribeallevents-6 - + Thing TD + Y Whenever an event occurs, the Web Thing MUST send event data to the Consumer using the event payload format defined in section Message Format. @@ -2305,7 +2437,8 @@

    1 159: http-webhook-profile-protocol-binding-subscribeallevents-7 - + Thing + Y If the connection between the Web Thing and the Consumer drops, the Web Thing MUST re-establish the connection. @@ -2316,7 +2449,8 @@

    2 160: http-webhook-profile-protocol-binding-subscribeallevents-8 - + Thing + N Once the connection is re-established the Web Thing SHOULD, if possible, send any missed events which occurred since the last successful event notification. @@ -2327,7 +2461,8 @@

    2 161: http-webhook-profile-protocol-binding-unsubscribeallevents-1 - + Consumer + Y In order to unsubscribe from all events, a Consumer MUST invoke the unsubscribe operation of the Event resource. @@ -2338,7 +2473,8 @@

    1 162: http-webhook-profile-protocol-binding-event-connections-1 - + Thing + Y A HTTP(s) connection to the event listener of a Consumer MUST be initiated and managed by the Web Thing. @@ -2349,7 +2485,8 @@

    2 163: http-webhook-profile-protocol-binding-event-connections-2 - + Consumer + Y A Consumer MUST terminate the subscription with the events endpoint of the Web Thing. @@ -2360,7 +2497,8 @@

    1 164: http-webhook-profile-protocol-binding-event-connections-3 - + Thing + N If a Consumer becomes unavailable and the Web Thing cannot successfully transmit event messages to the consumer, it SHOULD attempt several retries at increasing intervals. @@ -2371,7 +2509,8 @@

    2 165: http-webhook-profile-protocol-binding-event-connections-4 - + Thing + N After the maximum number of retries was reached, the Web Thing MAY terminate the subscription without having received an unsubscribe or unsubscribeall operation. @@ -2382,7 +2521,8 @@

    2 166: http-webhook-profile-protocol-binding--event-connections-5 - + Thing + Y If the connection between the Web Thing and the Consumer drops, the Web Thing MUST attempt to re-establish the connection. @@ -2393,7 +2533,8 @@

    2 167: http-webhook-profile-protocol-binding-event-connections-6 - + Thing + N Once the connection is re-established, the Web Thing SHOULD, if possible, send any missed events which occurred since the last successful event notification. @@ -2404,7 +2545,8 @@

    2 168: http-webhook-profile-protocol-binding-event-connections-7 - + Thing + N The Web Thing MAY reuse an existing connection to a listener for subsequent message traffic, or it MAY establish a new connection for each message. @@ -2415,7 +2557,8 @@

    2 169: http-webhook-profile-protocol-binding--event-connections-8 - + Consumer + Y When an event message has been received, the Consumer MUST respond with a "HTTP 200 OK" message. @@ -2426,7 +2569,8 @@

    1 170: http-webhook-profile-protocol-binding-event-connections-9 - + Consumer TD + N An (optional) JSON payload MAY be provided to return a response back to the Web Thing via the same communication channel. @@ -2437,7 +2581,8 @@

    1 171: privacy-considerations-1 - + Consumer Thing TD + Y The privacy considerations of the WoT Architecture and WoT Thing Description MUST be adopted by compliant implementations. @@ -2448,7 +2593,8 @@

    0 172: security-considerations-1 - + Consumer Thing TD + Y The security considerations of the WoT Architecture and WoT Thing Description MUST be adopted by compliant implementations. From 80cdc189ea6ca3a0bbe69ebdcb016a23eb103950 Mon Sep 17 00:00:00 2001 From: Michael McCool Date: Tue, 13 Dec 2022 14:49:07 -0400 Subject: [PATCH 13/33] update after Day 2 of testfest --- testing/atrisk.css | 22 ++- testing/atrisk.csv | 102 +++---------- testing/inputs/atrisk.csv | 102 +++---------- testing/report.html | 302 ++++++++++++++++++++++++++++++++------ 4 files changed, 313 insertions(+), 215 deletions(-) diff --git a/testing/atrisk.css b/testing/atrisk.css index a8d05fc..d23e1fd 100644 --- a/testing/atrisk.css +++ b/testing/atrisk.css @@ -55,19 +55,22 @@ #common-constraints-links-media-types-7 { background-color: yellow; } -#common-constraints-links-media-types-8 { +#http-basic-profile-1 { background-color: yellow; } -#common-constraints-errors-3 { +#profile-5-2-thing-protocol-binding-1 { background-color: yellow; } -#common-constraints-errors-6 { +#http-basic-profile-protocol-binding-readproperty-3 { background-color: yellow; } -#http-basic-profile-1 { +#http-basic-profile-protocol-binding-readproperty-4 { background-color: yellow; } -#profile-5-2-thing-protocol-binding-1 { +#http-basic-profile-protocol-binding-writeproperty-3 { + background-color: yellow; +} +#http-basic-profile-protocol-binding-writeproperty-4 { background-color: yellow; } #http-basic-profile-protocol-binding-readallproperties-3 { @@ -76,9 +79,18 @@ #http-basic-profile-protocol-bindings-writemultipleproperties-3 { background-color: yellow; } +#http-basic-profile-protocol-binding-writemultipleproperties-4 { + background-color: yellow; +} +#http-basic-profile-protocol-binding-invokeaction-1 { + background-color: yellow; +} #http-basic-profile-protocol-binding-invokeaction-3 { background-color: yellow; } +#http-basic-profile-protocol-binding-invokeaction-4 { + background-color: yellow; +} #http-basic-profile-protocol-binding-invokeaction-7 { background-color: yellow; } diff --git a/testing/atrisk.csv b/testing/atrisk.csv index 7b2cae3..09617a7 100644 --- a/testing/atrisk.csv +++ b/testing/atrisk.csv @@ -10,10 +10,7 @@ 18,"common-constraints-links-1","HELP, pass undefined" 20,"common-constraints-links-3","HELP, pass=1" 21,"common-constraints-links-media-types-1","HELP, pass undefined" -<<<<<<< HEAD -======= 22,"common-constraints-links-media-types-2","HELP, pass=1" ->>>>>>> update after Day 1 of testfest 23,"common-constraints-links-media-types-4","HELP, no results" 24,"common-constraints-links-media-types-5","HELP, no results" 25,"common-constraints-links-media-types-6","HELP, no results" @@ -21,12 +18,22 @@ 27,"common-constraints-links-media-types-8","HELP, no results" 30,"common-constraints-errors-3","HELP, pass=1" 33,"common-constraints-errors-6","HELP, pass undefined" -<<<<<<< HEAD +34,"common-constraints-errors-7","HELP, pass=1" +35,"common-constraints-default-language","HELP, pass undefined" 36,"http-basic-profile-1","HELP, pass undefined" 38,"profile-5-2-thing-protocol-binding-1","HELP, pass undefined" -48,"http-basic-profile-protocol-binding-readallproperties-3","HELP, pass=1" -52,"http-basic-profile-protocol-bindings-writemultipleproperties-3","HELP, pass=1" -56,"http-basic-profile-protocol-binding-invokeaction-3","HELP, pass=1" +40,"http-basic-profile-protocol-binding-readproperty-3","HELP, pass=1" +41,"http-basic-profile-protocol-binding-readproperty-4","HELP, pass=1" +44,"http-basic-profile-protocol-binding-writeproperty-3","HELP, pass=1" +45,"http-basic-profile-protocol-binding-writeproperty-4","HELP, pass=1" +48,"http-basic-profile-protocol-binding-readallproperties-3","HELP, pass undefined" +49,"http-basic-profile-protocol-binding-readallproperties-4","HELP, pass=1" +51,"http-basic-profile-protocol-binding-writemultipleproperties-1","HELP, pass=1" +52,"http-basic-profile-protocol-bindings-writemultipleproperties-3","HELP, pass undefined" +53,"http-basic-profile-protocol-binding-writemultipleproperties-4","HELP, pass=1" +55,"http-basic-profile-protocol-binding-invokeaction-1","HELP, pass=1" +56,"http-basic-profile-protocol-binding-invokeaction-3","HELP, pass undefined" +57,"http-basic-profile-protocol-binding-invokeaction-4","HELP, pass=1" 59,"http-basic-profile-protocol-binding-invokeaction-7","HELP, pass=1" 63,"http-basic-profile-protocol-binding-invokeaction-11","HELP, pass=1" 64,"http-basic-profile-protocol-binding-invokeaction-12","HELP, pass=1" @@ -41,53 +48,11 @@ 73,"http-basic-profile-protocol-binding-invokeaction-21","HELP, pass=1" 76,"http-basic-profile-protocol-binding-queryaction-2","HELP, pass=1" 77,"http-basic-profile-protocol-binding-queryaction-3","HELP, pass undefined" -======= -34,"common-constraints-errors-7","HELP, pass=1" -35,"common-constraints-default-language","HELP, pass undefined" -36,"http-basic-profile-1","HELP, pass undefined" -37,"http-basic-profile-identifier-1","HELP, pass=1" -38,"profile-5-2-thing-protocol-binding-1","HELP, pass undefined" -39,"http-basic-profile-protocol-binding-readproperty-1","HELP, pass undefined" -40,"http-basic-profile-protocol-binding-readproperty-3","HELP, pass undefined" -41,"http-basic-profile-protocol-binding-readproperty-4","HELP, pass undefined" -43,"http-basic-profile-protocol-binding-writeproperty-1","HELP, pass undefined" -44,"http-basic-profile-protocol-binding-writeproperty-3","HELP, pass undefined" -45,"http-basic-profile-protocol-binding-writeproperty-4","HELP, pass undefined" -47,"http-basic-profile-protocol-binding-readallproperties-1","HELP, pass undefined" -48,"http-basic-profile-protocol-binding-readallproperties-3","HELP, pass undefined" -49,"http-basic-profile-protocol-binding-readallproperties-4","HELP, pass undefined" -51,"http-basic-profile-protocol-binding-writemultipleproperties-1","HELP, pass undefined" -52,"http-basic-profile-protocol-bindings-writemultipleproperties-3","HELP, pass undefined" -53,"http-basic-profile-protocol-binding-writemultipleproperties-4","HELP, pass undefined" -54,"http-basic-profile-protocol-binding-writemultipleproperties-6","HELP, pass=1" -55,"http-basic-profile-protocol-binding-invokeaction-1","HELP, pass undefined" -56,"http-basic-profile-protocol-binding-invokeaction-3","HELP, pass undefined" -57,"http-basic-profile-protocol-binding-invokeaction-4","HELP, pass undefined" -58,"http-basic-profile-protocol-binding-invokeaction-6","HELP, pass=1" -59,"http-basic-profile-protocol-binding-invokeaction-7","HELP, no results" -60,"http-basic-profile-protocol-binding-invokeaction-8","HELP, pass=1" -61,"http-basic-profile-protocol-binding-invokeaction-9","HELP, pass=1" -63,"http-basic-profile-protocol-binding-invokeaction-11","HELP, no results" -64,"http-basic-profile-protocol-binding-invokeaction-12","HELP, pass undefined" -65,"http-basic-profile-protocol-binding-invokeaction-13","HELP, pass undefined" -66,"http-basic-profile-protocol-binding-invokeaction-14","HELP, no results" -67,"http-basic-profile-protocol-binding-invokeaction-15","HELP, pass undefined" -68,"http-basic-profile-protocol-binding-invokeaction-16","HELP, no results" -69,"http-basic-profile-protocol-binding-invokeaction-17","HELP, no results" -70,"http-basic-profile-protocol-binding-invokeaction-18","HELP, no results" -71,"http-basic-profile-protocol-binding-invokeaction-19","HELP, no results" -72,"http-basic-profile-protocol-binding-invokeaction-20","HELP, no results" -73,"http-basic-profile-protocol-binding-invokeaction-21","HELP, no results" -74,"http-basic-profile-protocol-binding-queryaction-1a","HELP, pass=1" -75,"http-basic-profile-protocol-binding-queryaction-1b","HELP, pass=1" -76,"http-basic-profile-protocol-binding-queryaction-2","HELP, pass undefined" -77,"http-basic-profile-protocol-binding-queryaction-3","HELP, pass undefined" 78,"http-basic-profile-protocol-binding-queryaction-5","HELP, pass=1" 79,"http-basic-profile-protocol-binding-queryaction-7a","HELP, pass=1" 80,"http-basic-profile-protocol-binding-queryaction-7b","HELP, pass=1" 81,"http-basic-profile-protocol-binding-cancelaction-1a","HELP, pass=1" 82,"http-basic-profile-protocol-binding-cancelaction-1b","HELP, pass=1" ->>>>>>> update after Day 1 of testfest 83,"http-basic-profile-protocol-binding-cancelaction-2","HELP, pass undefined" 84,"http-basic-profile-protocol-binding-cancelaction-3","HELP, pass undefined" 86,"http-basic-profile-protocol-binding-queryallactions-1","HELP, pass undefined" @@ -95,22 +60,6 @@ 88,"http-basic-profile-protocol-binding-queryallactions-4","HELP, pass undefined" 89,"http-basic-profile-protocol-binding-queryallactions-6a","HELP, pass undefined" 90,"http-basic-profile-protocol-binding-queryallactions-6b","HELP, pass undefined" -<<<<<<< HEAD -91,"http-sse-profile-1","HELP, pass=1" -92,"http-sse-profile-identifier-1","HELP, pass=1" -93,"http-sse-profile-protocol-binding-1","HELP, pass=1" -94,"http-sse-profile-protocol-binding-observeproperty-1","HELP, pass=1" -95,"http-sse-profile-protocol-binding-observeproperty-2","HELP, pass=1" -96,"http-sse-profile-protocol-binding-observeproperty-3","HELP, pass undefined" -97,"http-sse-profile-protocol-binding-observeproperty-4","HELP, pass undefined" -98,"http-sse-profile-protocol-binding-observeproperty-5a","HELP, pass=1" -99,"http-sse-profile-protocol-binding-observeproperty-5b","HELP, pass=1" -100,"http-sse-profile-protocol-binding-observeproperty-5c","HELP, pass=1" -101,"http-sse-profile-protocol-binding-observeproperty-5d","HELP, pass=1" -102,"http-sse-profile-protocol-binding-observeproperty-6a","HELP, pass undefined" -103,"http-sse-profile-protocol-binding-observeproperty-6b","HELP, pass undefined" -104,"http-sse-profile-protocol-binding-unobserveproperty-1","HELP, pass=1" -======= 91,"http-sse-profile-1","HELP, pass undefined" 92,"http-sse-profile-identifier-1","HELP, pass undefined" 93,"http-sse-profile-protocol-binding-1","HELP, pass undefined" @@ -118,14 +67,13 @@ 95,"http-sse-profile-protocol-binding-observeproperty-2","HELP, pass undefined" 96,"http-sse-profile-protocol-binding-observeproperty-3","HELP, pass undefined" 97,"http-sse-profile-protocol-binding-observeproperty-4","HELP, pass undefined" -98,"http-sse-profile-protocol-binding-observeproperty-5a","HELP, pass undefined" -99,"http-sse-profile-protocol-binding-observeproperty-5b","HELP, pass undefined" -100,"http-sse-profile-protocol-binding-observeproperty-5c","HELP, pass undefined" -101,"http-sse-profile-protocol-binding-observeproperty-5d","HELP, pass undefined" +98,"http-sse-profile-protocol-binding-observeproperty-5a","HELP, pass=1" +99,"http-sse-profile-protocol-binding-observeproperty-5b","HELP, pass=1" +100,"http-sse-profile-protocol-binding-observeproperty-5c","HELP, pass=1" +101,"http-sse-profile-protocol-binding-observeproperty-5d","HELP, pass=1" 102,"http-sse-profile-protocol-binding-observeproperty-6a","HELP, pass undefined" 103,"http-sse-profile-protocol-binding-observeproperty-6b","HELP, pass undefined" 104,"http-sse-profile-protocol-binding-unobserveproperty-1","HELP, pass undefined" ->>>>>>> update after Day 1 of testfest 105,"http-sse-profile-protocol-binding-observeallproperties-1","HELP, pass undefined" 106,"http-sse-profile-protocol-binding-observeallproperties-2","HELP, pass undefined" 107,"http-sse-profile-protocol-binding-observeallproperties-3","HELP, pass undefined" @@ -138,11 +86,6 @@ 114,"http-sse-profile-protocol-binding-observeallproperties-6a","HELP, pass undefined" 115,"http-sse-profile-protocol-binding-observeallproperties-6b","HELP, pass undefined" 116,"http-sse-profile-protocol-binding-unobserveallproperties-1","HELP, pass undefined" -<<<<<<< HEAD -117,"http-sse-profile-protocol-binding-subscribeevent-1","HELP, pass=1" -118,"http-sse-profile-protocol-binding-subscribeevent-3","HELP, pass=1" -119,"http-sse-profile-protocol-binding-subscribeevent-4","HELP, pass undefined" -======= 117,"http-sse-profile-protocol-binding-subscribeevent-1","HELP, pass undefined" 118,"http-sse-profile-protocol-binding-subscribeevent-3","HELP, pass undefined" 119,"http-sse-profile-protocol-binding-subscribeevent-4","HELP, pass undefined" @@ -150,16 +93,11 @@ 121,"http-sse-profile-protocol-binding-subscribeevent-6a","HELP, pass=1" 122,"http-sse-profile-protocol-binding-subscribeevent-6b","HELP, pass=1" 123,"http-sse-profile-protocol-binding-subscribeevent-6c","HELP, pass=1" ->>>>>>> update after Day 1 of testfest 124,"http-sse-profile-protocol-binding-subscribeevent-6d","HELP, pass=1" 125,"http-sse-profile-protocol-binding-subscribeevent-6e","HELP, pass undefined" 126,"http-sse-profile-protocol-binding-subscribeevent-7a","HELP, pass undefined" 127,"http-sse-profile-protocol-binding-subscribeevent-7b","HELP, pass undefined" -<<<<<<< HEAD -128,"http-sse-profile-protocol-binding-unsubscribeevent-1","HELP, pass=1" -======= 128,"http-sse-profile-protocol-binding-unsubscribeevent-1","HELP, pass undefined" ->>>>>>> update after Day 1 of testfest 129,"http-sse-profile-protocol-binding-subscribeallevents-1","HELP, pass undefined" 130,"http-sse-profile-protocol-binding-subscribeallevents-3b","HELP, pass undefined" 131,"http-sse-profile-protocol-binding-subscribeallevents-4","HELP, pass undefined" @@ -175,11 +113,7 @@ 141,"http-webhook-profile-protocol-binding-general-1","HELP, pass=1" 142,"http-webhook-profile-protocol-binding-general-3","HELP, pass=1" 143,"http-webhook-profile-protocol-binding-events-1","HELP, pass=1" -<<<<<<< HEAD -144,"http-webhook-profile-protocol-binding-events-2","HELP, pass undefined" -======= 144,"http-webhook-profile-protocol-binding-events-2","HELP, no results" ->>>>>>> update after Day 1 of testfest 145,"http-webhook-profile-1","HELP, pass=1" 146,"http-webhook-profile-message-format-1","HELP, pass undefined" 147,"http-webhook-profile-protocol-binding-1","HELP, pass undefined" diff --git a/testing/inputs/atrisk.csv b/testing/inputs/atrisk.csv index 7b2cae3..09617a7 100644 --- a/testing/inputs/atrisk.csv +++ b/testing/inputs/atrisk.csv @@ -10,10 +10,7 @@ 18,"common-constraints-links-1","HELP, pass undefined" 20,"common-constraints-links-3","HELP, pass=1" 21,"common-constraints-links-media-types-1","HELP, pass undefined" -<<<<<<< HEAD -======= 22,"common-constraints-links-media-types-2","HELP, pass=1" ->>>>>>> update after Day 1 of testfest 23,"common-constraints-links-media-types-4","HELP, no results" 24,"common-constraints-links-media-types-5","HELP, no results" 25,"common-constraints-links-media-types-6","HELP, no results" @@ -21,12 +18,22 @@ 27,"common-constraints-links-media-types-8","HELP, no results" 30,"common-constraints-errors-3","HELP, pass=1" 33,"common-constraints-errors-6","HELP, pass undefined" -<<<<<<< HEAD +34,"common-constraints-errors-7","HELP, pass=1" +35,"common-constraints-default-language","HELP, pass undefined" 36,"http-basic-profile-1","HELP, pass undefined" 38,"profile-5-2-thing-protocol-binding-1","HELP, pass undefined" -48,"http-basic-profile-protocol-binding-readallproperties-3","HELP, pass=1" -52,"http-basic-profile-protocol-bindings-writemultipleproperties-3","HELP, pass=1" -56,"http-basic-profile-protocol-binding-invokeaction-3","HELP, pass=1" +40,"http-basic-profile-protocol-binding-readproperty-3","HELP, pass=1" +41,"http-basic-profile-protocol-binding-readproperty-4","HELP, pass=1" +44,"http-basic-profile-protocol-binding-writeproperty-3","HELP, pass=1" +45,"http-basic-profile-protocol-binding-writeproperty-4","HELP, pass=1" +48,"http-basic-profile-protocol-binding-readallproperties-3","HELP, pass undefined" +49,"http-basic-profile-protocol-binding-readallproperties-4","HELP, pass=1" +51,"http-basic-profile-protocol-binding-writemultipleproperties-1","HELP, pass=1" +52,"http-basic-profile-protocol-bindings-writemultipleproperties-3","HELP, pass undefined" +53,"http-basic-profile-protocol-binding-writemultipleproperties-4","HELP, pass=1" +55,"http-basic-profile-protocol-binding-invokeaction-1","HELP, pass=1" +56,"http-basic-profile-protocol-binding-invokeaction-3","HELP, pass undefined" +57,"http-basic-profile-protocol-binding-invokeaction-4","HELP, pass=1" 59,"http-basic-profile-protocol-binding-invokeaction-7","HELP, pass=1" 63,"http-basic-profile-protocol-binding-invokeaction-11","HELP, pass=1" 64,"http-basic-profile-protocol-binding-invokeaction-12","HELP, pass=1" @@ -41,53 +48,11 @@ 73,"http-basic-profile-protocol-binding-invokeaction-21","HELP, pass=1" 76,"http-basic-profile-protocol-binding-queryaction-2","HELP, pass=1" 77,"http-basic-profile-protocol-binding-queryaction-3","HELP, pass undefined" -======= -34,"common-constraints-errors-7","HELP, pass=1" -35,"common-constraints-default-language","HELP, pass undefined" -36,"http-basic-profile-1","HELP, pass undefined" -37,"http-basic-profile-identifier-1","HELP, pass=1" -38,"profile-5-2-thing-protocol-binding-1","HELP, pass undefined" -39,"http-basic-profile-protocol-binding-readproperty-1","HELP, pass undefined" -40,"http-basic-profile-protocol-binding-readproperty-3","HELP, pass undefined" -41,"http-basic-profile-protocol-binding-readproperty-4","HELP, pass undefined" -43,"http-basic-profile-protocol-binding-writeproperty-1","HELP, pass undefined" -44,"http-basic-profile-protocol-binding-writeproperty-3","HELP, pass undefined" -45,"http-basic-profile-protocol-binding-writeproperty-4","HELP, pass undefined" -47,"http-basic-profile-protocol-binding-readallproperties-1","HELP, pass undefined" -48,"http-basic-profile-protocol-binding-readallproperties-3","HELP, pass undefined" -49,"http-basic-profile-protocol-binding-readallproperties-4","HELP, pass undefined" -51,"http-basic-profile-protocol-binding-writemultipleproperties-1","HELP, pass undefined" -52,"http-basic-profile-protocol-bindings-writemultipleproperties-3","HELP, pass undefined" -53,"http-basic-profile-protocol-binding-writemultipleproperties-4","HELP, pass undefined" -54,"http-basic-profile-protocol-binding-writemultipleproperties-6","HELP, pass=1" -55,"http-basic-profile-protocol-binding-invokeaction-1","HELP, pass undefined" -56,"http-basic-profile-protocol-binding-invokeaction-3","HELP, pass undefined" -57,"http-basic-profile-protocol-binding-invokeaction-4","HELP, pass undefined" -58,"http-basic-profile-protocol-binding-invokeaction-6","HELP, pass=1" -59,"http-basic-profile-protocol-binding-invokeaction-7","HELP, no results" -60,"http-basic-profile-protocol-binding-invokeaction-8","HELP, pass=1" -61,"http-basic-profile-protocol-binding-invokeaction-9","HELP, pass=1" -63,"http-basic-profile-protocol-binding-invokeaction-11","HELP, no results" -64,"http-basic-profile-protocol-binding-invokeaction-12","HELP, pass undefined" -65,"http-basic-profile-protocol-binding-invokeaction-13","HELP, pass undefined" -66,"http-basic-profile-protocol-binding-invokeaction-14","HELP, no results" -67,"http-basic-profile-protocol-binding-invokeaction-15","HELP, pass undefined" -68,"http-basic-profile-protocol-binding-invokeaction-16","HELP, no results" -69,"http-basic-profile-protocol-binding-invokeaction-17","HELP, no results" -70,"http-basic-profile-protocol-binding-invokeaction-18","HELP, no results" -71,"http-basic-profile-protocol-binding-invokeaction-19","HELP, no results" -72,"http-basic-profile-protocol-binding-invokeaction-20","HELP, no results" -73,"http-basic-profile-protocol-binding-invokeaction-21","HELP, no results" -74,"http-basic-profile-protocol-binding-queryaction-1a","HELP, pass=1" -75,"http-basic-profile-protocol-binding-queryaction-1b","HELP, pass=1" -76,"http-basic-profile-protocol-binding-queryaction-2","HELP, pass undefined" -77,"http-basic-profile-protocol-binding-queryaction-3","HELP, pass undefined" 78,"http-basic-profile-protocol-binding-queryaction-5","HELP, pass=1" 79,"http-basic-profile-protocol-binding-queryaction-7a","HELP, pass=1" 80,"http-basic-profile-protocol-binding-queryaction-7b","HELP, pass=1" 81,"http-basic-profile-protocol-binding-cancelaction-1a","HELP, pass=1" 82,"http-basic-profile-protocol-binding-cancelaction-1b","HELP, pass=1" ->>>>>>> update after Day 1 of testfest 83,"http-basic-profile-protocol-binding-cancelaction-2","HELP, pass undefined" 84,"http-basic-profile-protocol-binding-cancelaction-3","HELP, pass undefined" 86,"http-basic-profile-protocol-binding-queryallactions-1","HELP, pass undefined" @@ -95,22 +60,6 @@ 88,"http-basic-profile-protocol-binding-queryallactions-4","HELP, pass undefined" 89,"http-basic-profile-protocol-binding-queryallactions-6a","HELP, pass undefined" 90,"http-basic-profile-protocol-binding-queryallactions-6b","HELP, pass undefined" -<<<<<<< HEAD -91,"http-sse-profile-1","HELP, pass=1" -92,"http-sse-profile-identifier-1","HELP, pass=1" -93,"http-sse-profile-protocol-binding-1","HELP, pass=1" -94,"http-sse-profile-protocol-binding-observeproperty-1","HELP, pass=1" -95,"http-sse-profile-protocol-binding-observeproperty-2","HELP, pass=1" -96,"http-sse-profile-protocol-binding-observeproperty-3","HELP, pass undefined" -97,"http-sse-profile-protocol-binding-observeproperty-4","HELP, pass undefined" -98,"http-sse-profile-protocol-binding-observeproperty-5a","HELP, pass=1" -99,"http-sse-profile-protocol-binding-observeproperty-5b","HELP, pass=1" -100,"http-sse-profile-protocol-binding-observeproperty-5c","HELP, pass=1" -101,"http-sse-profile-protocol-binding-observeproperty-5d","HELP, pass=1" -102,"http-sse-profile-protocol-binding-observeproperty-6a","HELP, pass undefined" -103,"http-sse-profile-protocol-binding-observeproperty-6b","HELP, pass undefined" -104,"http-sse-profile-protocol-binding-unobserveproperty-1","HELP, pass=1" -======= 91,"http-sse-profile-1","HELP, pass undefined" 92,"http-sse-profile-identifier-1","HELP, pass undefined" 93,"http-sse-profile-protocol-binding-1","HELP, pass undefined" @@ -118,14 +67,13 @@ 95,"http-sse-profile-protocol-binding-observeproperty-2","HELP, pass undefined" 96,"http-sse-profile-protocol-binding-observeproperty-3","HELP, pass undefined" 97,"http-sse-profile-protocol-binding-observeproperty-4","HELP, pass undefined" -98,"http-sse-profile-protocol-binding-observeproperty-5a","HELP, pass undefined" -99,"http-sse-profile-protocol-binding-observeproperty-5b","HELP, pass undefined" -100,"http-sse-profile-protocol-binding-observeproperty-5c","HELP, pass undefined" -101,"http-sse-profile-protocol-binding-observeproperty-5d","HELP, pass undefined" +98,"http-sse-profile-protocol-binding-observeproperty-5a","HELP, pass=1" +99,"http-sse-profile-protocol-binding-observeproperty-5b","HELP, pass=1" +100,"http-sse-profile-protocol-binding-observeproperty-5c","HELP, pass=1" +101,"http-sse-profile-protocol-binding-observeproperty-5d","HELP, pass=1" 102,"http-sse-profile-protocol-binding-observeproperty-6a","HELP, pass undefined" 103,"http-sse-profile-protocol-binding-observeproperty-6b","HELP, pass undefined" 104,"http-sse-profile-protocol-binding-unobserveproperty-1","HELP, pass undefined" ->>>>>>> update after Day 1 of testfest 105,"http-sse-profile-protocol-binding-observeallproperties-1","HELP, pass undefined" 106,"http-sse-profile-protocol-binding-observeallproperties-2","HELP, pass undefined" 107,"http-sse-profile-protocol-binding-observeallproperties-3","HELP, pass undefined" @@ -138,11 +86,6 @@ 114,"http-sse-profile-protocol-binding-observeallproperties-6a","HELP, pass undefined" 115,"http-sse-profile-protocol-binding-observeallproperties-6b","HELP, pass undefined" 116,"http-sse-profile-protocol-binding-unobserveallproperties-1","HELP, pass undefined" -<<<<<<< HEAD -117,"http-sse-profile-protocol-binding-subscribeevent-1","HELP, pass=1" -118,"http-sse-profile-protocol-binding-subscribeevent-3","HELP, pass=1" -119,"http-sse-profile-protocol-binding-subscribeevent-4","HELP, pass undefined" -======= 117,"http-sse-profile-protocol-binding-subscribeevent-1","HELP, pass undefined" 118,"http-sse-profile-protocol-binding-subscribeevent-3","HELP, pass undefined" 119,"http-sse-profile-protocol-binding-subscribeevent-4","HELP, pass undefined" @@ -150,16 +93,11 @@ 121,"http-sse-profile-protocol-binding-subscribeevent-6a","HELP, pass=1" 122,"http-sse-profile-protocol-binding-subscribeevent-6b","HELP, pass=1" 123,"http-sse-profile-protocol-binding-subscribeevent-6c","HELP, pass=1" ->>>>>>> update after Day 1 of testfest 124,"http-sse-profile-protocol-binding-subscribeevent-6d","HELP, pass=1" 125,"http-sse-profile-protocol-binding-subscribeevent-6e","HELP, pass undefined" 126,"http-sse-profile-protocol-binding-subscribeevent-7a","HELP, pass undefined" 127,"http-sse-profile-protocol-binding-subscribeevent-7b","HELP, pass undefined" -<<<<<<< HEAD -128,"http-sse-profile-protocol-binding-unsubscribeevent-1","HELP, pass=1" -======= 128,"http-sse-profile-protocol-binding-unsubscribeevent-1","HELP, pass undefined" ->>>>>>> update after Day 1 of testfest 129,"http-sse-profile-protocol-binding-subscribeallevents-1","HELP, pass undefined" 130,"http-sse-profile-protocol-binding-subscribeallevents-3b","HELP, pass undefined" 131,"http-sse-profile-protocol-binding-subscribeallevents-4","HELP, pass undefined" @@ -175,11 +113,7 @@ 141,"http-webhook-profile-protocol-binding-general-1","HELP, pass=1" 142,"http-webhook-profile-protocol-binding-general-3","HELP, pass=1" 143,"http-webhook-profile-protocol-binding-events-1","HELP, pass=1" -<<<<<<< HEAD -144,"http-webhook-profile-protocol-binding-events-2","HELP, pass undefined" -======= 144,"http-webhook-profile-protocol-binding-events-2","HELP, no results" ->>>>>>> update after Day 1 of testfest 145,"http-webhook-profile-1","HELP, pass=1" 146,"http-webhook-profile-message-format-1","HELP, pass undefined" 147,"http-webhook-profile-protocol-binding-1","HELP, pass undefined" diff --git a/testing/report.html b/testing/report.html index e46502f..076f329 100644 --- a/testing/report.html +++ b/testing/report.html @@ -636,11 +636,14 @@

    Y In order to denote that a given Web Thing conforms to one or more profiles, its Thing Description MUST include a profile member [[wot-thing-description11]]. + In order to denote that a given Web Thing conforms to one or more profiles, its Thing Description MUST include a profile member [[wot-thing-description11]]. 3 + 3 0 2 5 + 5 5: profiling-mechanism-3 TD @@ -648,11 +651,14 @@

    Y The value of the profile member MUST be set to either a valid URI [[RFC3986]] identifying a single profile, or an array of valid URIs identifying multiple profiles. + The value of the profile member MUST be set to either a valid URI [[RFC3986]] identifying a single profile, or an array of valid URIs identifying multiple profiles. 3 + 3 0 2 5 + 5 6: profiling-mechanism-4 TD @@ -660,11 +666,14 @@

    Y In order to use a profile member in a Thing Description, the @context member MUST contain the anyURI https://www.w3.org/2022/wot/td/v1.1 in order to denote that the document is using version 1.1 of the Thing Description specification. [[wot-thing-description11]]. + In order to use a profile member in a Thing Description, the @context member MUST contain the anyURI https://www.w3.org/2022/wot/td/v1.1 in order to denote that the document is using version 1.1 of the Thing Description specification. [[wot-thing-description11]]. 3 + 3 0 2 5 + 5 7: common-constraints-a11y-1 TD @@ -676,6 +685,8 @@

    0 0 0 + 0 + 0 0 8: common-constraints-a11y-2 @@ -688,6 +699,8 @@

    0 0 0 + 0 + 0 0 9: common-constraints-units @@ -696,11 +709,14 @@

    N It is highly RECOMMENDED to provide a unit, if a value has a physical quantity. + It is highly RECOMMENDED to provide a unit, if a value has a physical quantity. 3 + 3 0 1 4 + 4 10: common-constraints-units-metric TD @@ -708,11 +724,14 @@

    N It is highly RECOMMENDED to use the metric system (SI units) for devices that are used in global deployments. + It is highly RECOMMENDED to use the metric system (SI units) for devices that are used in global deployments. 3 + 3 0 1 4 + 4 11: common-constraints-date-format-1 TD @@ -720,11 +739,14 @@

    Y All date and time values MUST use the date-time format defined in [[RFC3339]]. + All date and time values MUST use the date-time format defined in [[RFC3339]]. 3 + 3 0 0 3 + 3 12: common-constraints-security-1 TD Thing @@ -735,9 +757,11 @@

    Below is a list of security schemes [[wot-thing-description]] which conformant Web Things MAY use: NoSecurityScheme BasicSecurityScheme OAuth2SecurityScheme with the code or client flow. 4 + 4 0 0 4 + 4 13: common-constraints-security-2 Consumer @@ -750,6 +774,8 @@

    0 3 3 + 3 + 3 14: common-constraints-security-3 TD Thing @@ -757,11 +783,14 @@

    N A Thing MAY implement multiple security schemes. + A Thing MAY implement multiple security schemes. 3 + 3 0 2 5 + 5 15: common-constraints-security-6 Consumer @@ -774,6 +803,9 @@

    0 2 2 + 0 + 2 + 2 16: common-constraints-security-7 Thing @@ -786,6 +818,9 @@

    0 2 2 + 0 + 2 + 2 17: common-constraints-discovery-1 Thing @@ -793,11 +828,12 @@

    Y A Web Thing's Thing Description [[wot-thing-description]] MUST be retrievable from a Thing Description Server [[wot-architecture11]] using an HTTP [[HTTP11]] URL provided by a Direct Introduction Mechanism [[wot-discovery]]. + A Web Thing's Thing Description [[wot-thing-description]] MUST be retrievable from a Thing Description Server [[wot-architecture11]] using an HTTP [[HTTP11]] URL provided by a Direct Introduction Mechanism [[wot-discovery]]. - 4 + 3 0 1 - 5 + 4 18: common-constraints-links-1 TD @@ -810,6 +846,8 @@

    0 3 3 + 3 + 3 19: common-constraints-links-2 TD @@ -818,10 +856,10 @@

    Other keywords for links MAY be present in a TD, however their interpretation is undefined in the context of the HTTP profiles - 5 + 4 0 0 - 5 + 4 20: common-constraints-links-3 Consumer @@ -834,7 +872,7 @@

    1 0 2 - 3 + 2 21: common-constraints-links-media-types-1 TD @@ -847,6 +885,8 @@

    0 4 4 + 4 + 4 22: common-constraints-links-media-types-2 TD Consumer @@ -857,8 +897,8 @@

    2 0 - 1 - 2 + 3 + 4 28: common-constraints-errors-1 Thing @@ -868,9 +908,11 @@

    If any of the operations defined in the protocol bindings of HTTP profiles are unsuccessful then the Web Thing MUST send an HTTP response with an HTTP error code which describes the reason for the failure. 5 + 5 0 0 5 + 5 29: common-constraints-errors-2 Thing @@ -879,10 +921,10 @@

    It is RECOMMENDED that error responses use one of the following HTTP error codes: 400 Bad Request 401 Unauthorized 403 Forbidden 404 Not Found 500 Internal Server Error - 5 + 4 0 0 - 5 + 4 30: common-constraints-errors-3 Thing @@ -895,6 +937,8 @@

    0 4 5 + 4 + 5 31: common-constraints-errors-4 Thing @@ -904,9 +948,11 @@

    A Web Thing MUST NOT respond with a 300 Multiple Choices status code. 4 + 4 0 1 5 + 5 32: common-constraints-errors-5 Thing @@ -916,9 +962,11 @@

    Web Things MAY respond with other valid HTTP error codes (e.g. 418 I'm a teapot). 4 + 4 0 0 4 + 4 33: common-constraints-errors-6 Consumer @@ -931,6 +979,8 @@

    0 2 2 + 2 + 2 34: common-constraints-errors-7 Thing @@ -938,11 +988,14 @@

    Y If an HTTP error response contains a body, the content of that body MUST conform with the Problem Details format [[RFC7807]]. + If an HTTP error response contains a body, the content of that body MUST conform with the Problem Details format [[RFC7807]]. 3 + 3 0 2 5 + 5 35: common-constraints-default-language TD @@ -950,11 +1003,14 @@

    Y One Map contained in an @context Array MUST 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). + One Map contained in an @context Array MUST 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). 2 + 2 0 2 4 + 4 36: http-basic-profile-1 Thing Consumer @@ -974,11 +1030,14 @@

    Y In order to denote that a given Web Thing conforms to the HTTP Basic Profile, its Thing Description MUST have a profile member [[wot-thing-description]] with a value of https://www.w3.org/2022/wot/profile/http-basic/v1. + In order to denote that a given Web Thing conforms to the HTTP Basic Profile, its Thing Description MUST have a profile member [[wot-thing-description]] with a value of https://www.w3.org/2022/wot/profile/http-basic/v1. 3 + 3 0 2 5 + 5 38: profile-5-2-thing-protocol-binding-1 Consumer Thing @@ -991,6 +1050,8 @@

    0 4 4 + 4 + 4 39: http-basic-profile-protocol-binding-readproperty-1 TD @@ -998,11 +1059,12 @@

    Y The URL of a Property resource to be used when reading the value of a property MUST be obtained from a Thing Description by locating a Form inside the corresponding PropertyAffordance for which: After defaults have been applied, its op member contains the value readproperty. After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https + The URL of a Property resource to be used when reading the value of a property MUST be obtained from a Thing Description by locating a Form inside the corresponding PropertyAffordance for which: After defaults have been applied, its op member contains the value readproperty. After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https - 3 + 2 0 0 - 3 + 2 40: http-basic-profile-protocol-binding-readproperty-3 Consumer @@ -1011,10 +1073,10 @@

    The resolved value of the href member MUST then be used as the URL of the Property resource. - 2 + 1 0 1 - 3 + 2 41: http-basic-profile-protocol-binding-readproperty-4 Consumer @@ -1023,10 +1085,10 @@

    In order to read the value of a property, a Consumer MUST send an HTTP request to a Web Thing with: Method set to GET URL set to the URL of the Property resource Accept header set to application/json - 2 + 1 0 1 - 3 + 2 42: http-basic-profile-protocol-binding-readproperty-6 Thing @@ -1035,10 +1097,10 @@

    If a Web Thing receives an HTTP request following the format above and the Consumer has permission to read the corresponding property, then upon successfully reading the value of the property it MUST send an HTTP response with: Status code set to 200 Content-Type header set to application/json A body with the value of the property serialized in JSON - 5 + 4 0 0 - 5 + 4 43: http-basic-profile-protocol-binding-writeproperty-1 Consumer @@ -1046,11 +1108,12 @@

    Y The URL of a Property resource to be used when writing the value of a property MUST be obtained from a Thing Description by locating a Form inside the corresponding PropertyAffordance for which: After defaults have been applied, its op member contains the value writeproperty After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https + The URL of a Property resource to be used when writing the value of a property MUST be obtained from a Thing Description by locating a Form inside the corresponding PropertyAffordance for which: After defaults have been applied, its op member contains the value writeproperty After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https - 3 + 2 0 0 - 3 + 2 44: http-basic-profile-protocol-binding-writeproperty-3 Consumer @@ -1059,10 +1122,10 @@

    The resolved value of the href member MUST then be used as the URL of the Property resource. - 2 + 1 0 1 - 3 + 2 45: http-basic-profile-protocol-binding-writeproperty-4 Consumer @@ -1071,10 +1134,10 @@

    In order to write the value of a property, a Consumer MUST send an HTTP request to a Web Thing with: Method set to PUT URL set to the URL of the Property resource Content-Type header set to application/json A body with a requested new value for the property serialized in JSON - 2 + 1 0 1 - 3 + 2 46: http-basic-profile-protocol-binding-writeproperty-6 Thing @@ -1084,9 +1147,11 @@

    If a Web Thing receives an HTTP request following the format above and the Consumer has permission to write the corresponding property, then upon successfully writing the value of the property it MUST send an HTTP response with: Status code set to 204 3 + 3 0 0 3 + 3 47: http-basic-profile-protocol-binding-readallproperties-1 Consumer @@ -1094,11 +1159,12 @@

    Y The URL of a Properties resource to be used when reading the value of all properties at once MUST be obtained from a Thing Description by locating a Form inside the top level forms member for which: Its op member contains the value readallproperties After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https + The URL of a Properties resource to be used when reading the value of all properties at once MUST be obtained from a Thing Description by locating a Form inside the top level forms member for which: Its op member contains the value readallproperties After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https - 3 + 2 0 0 - 3 + 2 48: http-basic-profile-protocol-binding-readallproperties-3 Consumer @@ -1110,7 +1176,7 @@

    1 0 2 - 3 + 2 49: http-basic-profile-protocol-binding-readallproperties-4 Consumer @@ -1119,10 +1185,10 @@

    In order to read the value of all properties, a Consumer MUST send an HTTP request to a Web Thing with: Method set to GET URL set to the URL of the Properties resource Accept header set to application/json - 2 + 1 0 1 - 3 + 2 50: http-basic-profile-protocol-binding-readallproperties-5 Thing @@ -1131,10 +1197,10 @@

    If a Web Thing receives an HTTP request following the format above, then upon successfully reading the values of all the readable properties to which the Consumer has permission to access, it MUST send an HTTP response with: Status code set to 200 Content-Type header set to application/json A body with the values of all readable properties serialized in JSON, as an object keyed by property name - 4 + 3 0 0 - 4 + 3 51: http-basic-profile-protocol-binding-writemultipleproperties-1 Consumer @@ -1143,10 +1209,10 @@

    The URL of a Properties resource to be used when writing the value of multiple properties at once MUST be obtained from a Thing Description by locating a Form inside the top level forms member for which: Its op member contains the value writemultipleproperties After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https - 2 + 1 0 0 - 2 + 1 52: http-basic-profile-protocol-bindings-writemultipleproperties-3 Consumer @@ -1158,7 +1224,7 @@

    1 0 1 - 2 + 1 53: http-basic-profile-protocol-binding-writemultipleproperties-4 Consumer @@ -1167,10 +1233,10 @@

    In order to write the value of multiple properties at once, a Consumer MUST send an HTTP request to a Web Thing with: Method set to PUT URL set to the URL of the Properties resource Content-Type header set to application/json A body with requested new values for the writable properties serialized in JSON, as an object keyed by property name - 2 + 1 0 0 - 2 + 1 54: http-basic-profile-protocol-binding-writemultipleproperties-6 Thing @@ -1178,11 +1244,14 @@

    Y If a Web Thing receives an HTTP request following the format above, then upon successfully writing the values of the requested writable properties it MUST send an HTTP response with: Status code set to 204 + If a Web Thing receives an HTTP request following the format above, then upon successfully writing the values of the requested writable properties it MUST send an HTTP response with: Status code set to 204 2 + 2 0 1 3 + 3 55: http-basic-profile-protocol-binding-invokeaction-1 Consumer @@ -1191,10 +1260,10 @@

    The URL of an Action resource to be used when invoking an action MUST be obtained from a Thing Description by locating a Form inside the corresponding ActionAffordance for which: After defaults have been applied, the value of its op member is invokeaction After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https - 2 + 1 0 0 - 2 + 1 56: http-basic-profile-protocol-binding-invokeaction-3 Consumer @@ -1206,7 +1275,7 @@

    1 0 1 - 2 + 1 57: http-basic-profile-protocol-binding-invokeaction-4 Consumer @@ -1215,10 +1284,10 @@

    In order to invoke an action on a Web Thing, a Consumer MUST send an HTTP request to the Web Thing with: Method set to POST URL set to the URL of the Action resource Accept header set to application/json Content-Type header set to application/json A body with an input to the action, if any, serialized in JSON - 2 + 1 0 0 - 2 + 1 58: http-basic-profile-protocol-binding-invokeaction-6 Thing @@ -1226,11 +1295,14 @@

    Y If a Web Thing receives an HTTP request following the format above then it MUST respond with one of three response formats: Synchronous Action Response Asynchronous Action Response Error Response + If a Web Thing receives an HTTP request following the format above then it MUST respond with one of three response formats: Synchronous Action Response Asynchronous Action Response Error Response 2 + 2 1 0 3 + 3 59: http-basic-profile-protocol-binding-invokeaction-7 Thing @@ -1243,6 +1315,10 @@

    0 0 1 + 1 + 0 + 0 + 1 60: http-basic-profile-protocol-binding-invokeaction-8 Thing @@ -1250,11 +1326,14 @@

    Y If the synchronous member of the ActionAffordance [[wot-thing-description11]] is set to false then the Web Thing MUST respond with an Asynchronous Action Response. + If the synchronous member of the ActionAffordance [[wot-thing-description11]] is set to false then the Web Thing MUST respond with an Asynchronous Action Response. 2 + 2 1 1 4 + 4 61: http-basic-profile-protocol-binding-invokeaction-9 Thing @@ -1262,11 +1341,14 @@

    N If the synchronous member of the ActionAffordance [[wot-thing-description11]] is undefined then the Web Thing MAY respond with either a Synchronous Action Response or Asynchronous Action Response. + If the synchronous member of the ActionAffordance [[wot-thing-description11]] is undefined then the Web Thing MAY respond with either a Synchronous Action Response or Asynchronous Action Response. 2 + 2 0 1 3 + 3 62: http-basic-profile-protocol-binding-invokeaction-10 Thing @@ -1275,10 +1357,10 @@

    For long-running actions which are not expected to finish executing within the timeout period of an HTTP request (e.g. 30 to 120 seconds), it is RECOMMENDED that a Web Thing respond with an Asynchronous Action Response so that a Consumer may continue to monitor the status of an action request with a queryaction operation on a dynamically created ActionStatus resource, after the initial invokeaction response. - 4 + 3 0 0 - 4 + 3 63: http-basic-profile-protocol-binding-invokeaction-11 Thing @@ -1291,6 +1373,10 @@

    0 0 1 + 1 + 0 + 0 + 1 64: http-basic-profile-protocol-binding-invokeaction-12 Thing @@ -1300,9 +1386,11 @@

    If a Web Thing encounters an error in attempting to execute an action before responding to the invokeaction request, then it MUST send an Error Response. 1 + 1 0 1 2 + 2 65: http-basic-profile-protocol-binding-invokeaction-13 Consumer @@ -1315,6 +1403,8 @@

    0 4 4 + 4 + 4 66: http-basic-profile-protocol-binding-invokeaction-14 Consumer Thing @@ -1327,6 +1417,10 @@

    0 0 1 + 1 + 0 + 0 + 1 67: http-basic-profile-protocol-binding-invokeaction-15 Consumer Thing TD @@ -1337,8 +1431,10 @@

    1 1 + 1 2 4 + 4 68: http-basic-profile-protocol-binding-invokeaction-16 TD @@ -1351,6 +1447,10 @@

    0 0 1 + 1 + 0 + 0 + 1 69: http-basic-profile-protocol-binding-invokeaction-17 TD @@ -1363,6 +1463,9 @@

    0 1 1 + 0 + 1 + 1 70: http-basic-profile-protocol-binding-invokeaction-18 TD Thing @@ -1375,6 +1478,10 @@

    0 0 1 + 1 + 0 + 0 + 1 71: http-basic-profile-protocol-binding-invokeaction-19 TD @@ -1387,6 +1494,10 @@

    0 0 1 + 1 + 0 + 0 + 1 72: http-basic-profile-protocol-binding-invokeaction-20 Thing @@ -1399,6 +1510,10 @@

    0 0 1 + 1 + 0 + 0 + 1 73: http-basic-profile-protocol-binding-invokeaction-21 Thing @@ -1411,6 +1526,10 @@

    0 0 1 + 1 + 0 + 0 + 1 74: http-basic-profile-protocol-binding-queryaction-1a Thing TD @@ -1418,11 +1537,14 @@

    Y A Web Thing which provides Asynchronous Action Responses to an invokeaction operation on an Action MUST also support queryaction operations on that same Action. + A Web Thing which provides Asynchronous Action Responses to an invokeaction operation on an Action MUST also support queryaction operations on that same Action. 2 + 2 1 1 4 + 4 75: http-basic-profile-protocol-binding-queryaction-1b Thing TD @@ -1430,11 +1552,14 @@

    N A Web Thing which only provides Synchronous Action Responses to an invokeaction operation on an Action SHOULD NOT support queryaction operations on that same Action. + A Web Thing which only provides Synchronous Action Responses to an invokeaction operation on an Action SHOULD NOT support queryaction operations on that same Action. 2 + 2 0 1 3 + 3 76: http-basic-profile-protocol-binding-queryaction-2 Consumer TD @@ -1445,8 +1570,10 @@

    1 1 + 1 1 3 + 3 77: http-basic-profile-protocol-binding-queryaction-3 Consumer @@ -1459,6 +1586,8 @@

    0 2 2 + 2 + 2 78: http-basic-profile-protocol-binding-queryaction-5 Thing @@ -1466,11 +1595,14 @@

    Y If a Web Thing receives an HTTP request following the format above and the Consumer has permission to query the corresponding ActionStatus resource, then upon successfully reading the status of the action request it MUST send an HTTP response with: Status code set to 200 Content-Type header set to application/json A body containing an ActionStatus object representing the current status of the action request, serialized in JSON + If a Web Thing receives an HTTP request following the format above and the Consumer has permission to query the corresponding ActionStatus resource, then upon successfully reading the status of the action request it MUST send an HTTP response with: Status code set to 200 Content-Type header set to application/json A body containing an ActionStatus object representing the current status of the action request, serialized in JSON 2 + 2 1 1 4 + 4 79: http-basic-profile-protocol-binding-queryaction-7a Thing @@ -1478,11 +1610,14 @@

    Y If the queried action failed to execute, then the status member of the ActionStatus object MUST be set to "failed". + If the queried action failed to execute, then the status member of the ActionStatus object MUST be set to "failed". 2 + 2 1 1 4 + 4 80: http-basic-profile-protocol-binding-queryaction-7b Thing @@ -1490,11 +1625,14 @@

    N If the queried action failed to execute, then the error member MAY provide additional error information conforming to the Problem Details format [[RFC7807]]. + If the queried action failed to execute, then the error member MAY provide additional error information conforming to the Problem Details format [[RFC7807]]. 2 + 2 0 2 4 + 4 81: http-basic-profile-protocol-binding-cancelaction-1a Thing @@ -1502,11 +1640,14 @@

    N A Web Thing which provides Asynchronous Action Responses to an invokeaction operation on an Action MAY also support cancelaction operations on that same Action. + A Web Thing which provides Asynchronous Action Responses to an invokeaction operation on an Action MAY also support cancelaction operations on that same Action. 2 + 2 0 1 3 + 3 82: http-basic-profile-protocol-binding-cancelaction-1b Thing @@ -1514,11 +1655,14 @@

    N A Web Thing which only provides Synchronous Action Responses to an invokeaction operation on an Action SHOULD NOT support cancelaction operations on that same Action. + A Web Thing which only provides Synchronous Action Responses to an invokeaction operation on an Action SHOULD NOT support cancelaction operations on that same Action. 2 + 2 0 2 4 + 4 83: http-basic-profile-protocol-binding-cancelaction-2 Consumer @@ -1531,6 +1675,8 @@

    0 2 2 + 2 + 2 84: http-basic-profile-protocol-binding-cancelaction-3 Consumer @@ -1543,6 +1689,8 @@

    0 2 2 + 2 + 2 85: http-basic-profile-protocol-binding-cancelaction-5 Thing @@ -1552,9 +1700,11 @@

    If a Web Thing receives an HTTP request following the format above and the Consumer has permission to cancel the corresponding Action request, then upon successfully cancelling Action it MUST send an HTTP response with: Status code set to 204 3 + 3 0 1 4 + 4 86: http-basic-profile-protocol-binding-queryallactions-1 Consumer @@ -1567,6 +1717,8 @@

    0 2 2 + 2 + 2 87: http-basic-profile-protocol-binding-queryallactions-3 Consumer @@ -1579,6 +1731,8 @@

    0 2 2 + 2 + 2 88: http-basic-profile-protocol-binding-queryallactions-4 Consumer @@ -1591,6 +1745,8 @@

    0 2 2 + 2 + 2 89: http-basic-profile-protocol-binding-queryallactions-6a Thing @@ -1603,6 +1759,8 @@

    1 3 4 + 3 + 4 90: http-basic-profile-protocol-binding-queryallactions-6b Thing @@ -1615,6 +1773,8 @@

    1 3 4 + 3 + 4 91: http-sse-profile-1 Thing Consumer TD @@ -1624,9 +1784,11 @@

    In order to conform with the HTTP SSE Profile, Web Things and Consumers MUST also conform with all of the assertions in the Common Constraints section. 1 + 1 0 3 4 + 4 92: http-sse-profile-identifier-1 TD @@ -1636,9 +1798,11 @@

    In order to denote that a given Web Thing conforms to the HTTP SSE Profile, its Thing Description MUST have a profile member [[wot-thing-description]] with a value of https://www.w3.org/2022/wot/profile/http-sse/v1. 1 + 1 0 3 4 + 4 93: http-sse-profile-protocol-binding-1 Consumer Thing @@ -1648,9 +1812,11 @@

    A Consumer or Web Thing conforming to the HTTP SSE Profile MUST implement this protocol binding. 1 + 1 0 3 4 + 4 94: http-sse-profile-protocol-binding-observeproperty-1 Consumer @@ -1660,9 +1826,11 @@

    The URL of a Property resource to be used when observing the value of a property MUST be obtained from a Thing Description by locating a Form inside the corresponding PropertyAffordance for which: Its op member contains the value observeproperty After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https Its subprotocol member has a value of sse 1 + 1 0 1 2 + 2 95: http-sse-profile-protocol-binding-observeproperty-2 Consumer @@ -1672,9 +1840,11 @@

    The resolved value of the href member MUST then be used as the URL of the Property resource. 1 + 1 0 1 2 + 2 96: http-sse-profile-protocol-binding-observeproperty-3 Consumer @@ -1687,6 +1857,8 @@

    0 2 2 + 2 + 2 97: http-sse-profile-protocol-binding-observeproperty-4 Thing @@ -1699,6 +1871,8 @@

    0 3 3 + 3 + 3 98: http-sse-profile-protocol-binding-observeproperty-5a Thing @@ -1708,9 +1882,11 @@

    Whenever the value of the specified property changes while the Web Thing has an open connection with a Consumer, the Web Thing MUST send a property value to the Consumer using the event stream format in the Server-Sent Events [[EVENTSOURCE]] specification. 1 + 1 0 2 3 + 3 99: http-sse-profile-protocol-binding-observeproperty-5b Thing @@ -1720,9 +1896,11 @@

    For each message sent, the Web Thing MUST set the event field to the name of the PropertyAffordance and populate the data field with the property value, serialized in JSON and following the data schema specified in the PropertyAffordance. 1 + 1 0 2 3 + 3 100: http-sse-profile-protocol-binding-observeproperty-5c Thing @@ -1732,9 +1910,11 @@

    The id field SHOULD be set to a unique identifier for the property change, for use when re-establishing a dropped connection (see below). 1 + 1 0 2 3 + 3 101: http-sse-profile-protocol-binding-observeproperty-5d Thing @@ -1744,9 +1924,11 @@

    It is RECOMMENDED that the identifier is a timestamp representing the time at which the property changed 1 + 1 0 2 3 + 3 102: http-sse-profile-protocol-binding-observeproperty-6a Consumer @@ -1759,6 +1941,8 @@

    0 2 2 + 2 + 2 103: http-sse-profile-protocol-binding-observeproperty-6b Thing @@ -1771,6 +1955,8 @@

    0 3 3 + 3 + 3 104: http-sse-profile-protocol-binding-unobserveproperty-1 Consumer @@ -1780,9 +1966,11 @@

    In order to stop observing a property, a Consumer MUST terminate the corresponding Server-Sent Events connection with the Web Thing as specified in the Server-Sent Events specification [[EVENTSOURCE]]. 1 + 1 0 1 2 + 2 105: http-sse-profile-protocol-binding-observeallproperties-1 Consumer TD @@ -1936,9 +2124,11 @@

    The URL of an Event resource to be used when subscribing to an event MUST be obtained from a Thing Description by locating a Form inside the corresponding EventAffordance for which: After defaults have been applied, its op member contains the value subscribeevent After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https Its subprotocol member has a value of sse 1 + 1 0 1 2 + 2 118: http-sse-profile-protocol-binding-subscribeevent-3 Consumer @@ -1948,9 +2138,11 @@

    The resolved value of the href member MUST then be used as the URL of the Event resource. 1 + 1 0 1 2 + 2 119: http-sse-profile-protocol-binding-subscribeevent-4 Consumer @@ -1963,6 +2155,8 @@

    0 2 2 + 2 + 2 120: http-sse-profile-protocol-binding-subscribeevent-5 Thing @@ -1970,11 +2164,14 @@

    Y If a Web Thing receives an HTTP request following the format above and the Consumer has permission to subscribe to the corresponding event, then it MUST follow the Server-Sent Events [[EVENTSOURCE]] specification to maintain an open connection with the Consumer and push event data to the Consumer as events of the specified type are emitted. + If a Web Thing receives an HTTP request following the format above and the Consumer has permission to subscribe to the corresponding event, then it MUST follow the Server-Sent Events [[EVENTSOURCE]] specification to maintain an open connection with the Consumer and push event data to the Consumer as events of the specified type are emitted. 2 + 2 0 1 3 + 3 121: http-sse-profile-protocol-binding-subscribeevent-6a Thing @@ -1982,11 +2179,14 @@

    Y Whenever an event of the specified type occurs while the Web Thing has an open connection with a Consumer, the Web Thing MUST send event data to the Consumer using the event stream format in the Server-Sent Events [[EVENTSOURCE]] specification. + Whenever an event of the specified type occurs while the Web Thing has an open connection with a Consumer, the Web Thing MUST send event data to the Consumer using the event stream format in the Server-Sent Events [[EVENTSOURCE]] specification. 2 + 2 0 1 3 + 3 122: http-sse-profile-protocol-binding-subscribeevent-6b Thing @@ -1994,11 +2194,14 @@

    Y For each message sent, the Web Thing MUST set the event field to the name of the EventAffordance and populate the data field with event data, if any. + For each message sent, the Web Thing MUST set the event field to the name of the EventAffordance and populate the data field with event data, if any. 2 + 2 0 1 3 + 3 123: http-sse-profile-protocol-binding-subscribeevent-6c Thing @@ -2006,11 +2209,14 @@

    Y The event data MUST follow the data schema specified in the EventAffordance and be serialized in JSON. + The event data MUST follow the data schema specified in the EventAffordance and be serialized in JSON. 2 + 2 0 1 3 + 3 124: http-sse-profile-protocol-binding-subscribeevent-6d Thing @@ -2023,6 +2229,8 @@

    0 2 3 + 2 + 3 125: http-sse-profile-protocol-binding-subscribeevent-6e Thing @@ -2035,6 +2243,8 @@

    0 3 3 + 3 + 3 126: http-sse-profile-protocol-binding-subscribeevent-7a Consumer @@ -2047,6 +2257,8 @@

    0 2 2 + 2 + 2 127: http-sse-profile-protocol-binding-subscribeevent-7b Thing @@ -2059,6 +2271,8 @@

    0 3 3 + 3 + 3 128: http-sse-profile-protocol-binding-unsubscribeevent-1 Consumer @@ -2068,9 +2282,11 @@

    In order to unsubscribe from an event, a Consumer MUST terminate the corresponding Server-Sent Events connection with the Web Thing as specified in the Server-Sent Events specification [[EVENTSOURCE]]. 1 + 1 0 1 2 + 2 129: http-sse-profile-protocol-binding-subscribeallevents-1 Consumer @@ -2262,6 +2478,8 @@

    0 0 0 + 0 + 0 0 145: http-webhook-profile-1 From 85fabaa30b795cb3a722685e3ccf7348da5d2e29 Mon Sep 17 00:00:00 2001 From: Michael McCool Date: Wed, 14 Dec 2022 10:22:29 -0400 Subject: [PATCH 14/33] fixed (impl->pass) node-wot results --- testing/atrisk.css | 24 ----------- testing/atrisk.csv | 16 ++------ testing/inputs/atrisk.csv | 16 ++------ testing/report.html | 86 +++++++++++++++++++-------------------- 4 files changed, 49 insertions(+), 93 deletions(-) diff --git a/testing/atrisk.css b/testing/atrisk.css index d23e1fd..5b8e07e 100644 --- a/testing/atrisk.css +++ b/testing/atrisk.css @@ -34,9 +34,6 @@ #common-constraints-links-media-types-4 { background-color: yellow; } -#common-constraints-links-media-types-4 { - background-color: yellow; -} #common-constraints-links-media-types-5 { background-color: yellow; } @@ -61,36 +58,15 @@ #profile-5-2-thing-protocol-binding-1 { background-color: yellow; } -#http-basic-profile-protocol-binding-readproperty-3 { - background-color: yellow; -} -#http-basic-profile-protocol-binding-readproperty-4 { - background-color: yellow; -} -#http-basic-profile-protocol-binding-writeproperty-3 { - background-color: yellow; -} -#http-basic-profile-protocol-binding-writeproperty-4 { - background-color: yellow; -} #http-basic-profile-protocol-binding-readallproperties-3 { background-color: yellow; } #http-basic-profile-protocol-bindings-writemultipleproperties-3 { background-color: yellow; } -#http-basic-profile-protocol-binding-writemultipleproperties-4 { - background-color: yellow; -} -#http-basic-profile-protocol-binding-invokeaction-1 { - background-color: yellow; -} #http-basic-profile-protocol-binding-invokeaction-3 { background-color: yellow; } -#http-basic-profile-protocol-binding-invokeaction-4 { - background-color: yellow; -} #http-basic-profile-protocol-binding-invokeaction-7 { background-color: yellow; } diff --git a/testing/atrisk.csv b/testing/atrisk.csv index 09617a7..bf8b70e 100644 --- a/testing/atrisk.csv +++ b/testing/atrisk.csv @@ -10,7 +10,6 @@ 18,"common-constraints-links-1","HELP, pass undefined" 20,"common-constraints-links-3","HELP, pass=1" 21,"common-constraints-links-media-types-1","HELP, pass undefined" -22,"common-constraints-links-media-types-2","HELP, pass=1" 23,"common-constraints-links-media-types-4","HELP, no results" 24,"common-constraints-links-media-types-5","HELP, no results" 25,"common-constraints-links-media-types-6","HELP, no results" @@ -22,18 +21,9 @@ 35,"common-constraints-default-language","HELP, pass undefined" 36,"http-basic-profile-1","HELP, pass undefined" 38,"profile-5-2-thing-protocol-binding-1","HELP, pass undefined" -40,"http-basic-profile-protocol-binding-readproperty-3","HELP, pass=1" -41,"http-basic-profile-protocol-binding-readproperty-4","HELP, pass=1" -44,"http-basic-profile-protocol-binding-writeproperty-3","HELP, pass=1" -45,"http-basic-profile-protocol-binding-writeproperty-4","HELP, pass=1" -48,"http-basic-profile-protocol-binding-readallproperties-3","HELP, pass undefined" -49,"http-basic-profile-protocol-binding-readallproperties-4","HELP, pass=1" -51,"http-basic-profile-protocol-binding-writemultipleproperties-1","HELP, pass=1" -52,"http-basic-profile-protocol-bindings-writemultipleproperties-3","HELP, pass undefined" -53,"http-basic-profile-protocol-binding-writemultipleproperties-4","HELP, pass=1" -55,"http-basic-profile-protocol-binding-invokeaction-1","HELP, pass=1" -56,"http-basic-profile-protocol-binding-invokeaction-3","HELP, pass undefined" -57,"http-basic-profile-protocol-binding-invokeaction-4","HELP, pass=1" +48,"http-basic-profile-protocol-binding-readallproperties-3","HELP, pass=1" +52,"http-basic-profile-protocol-bindings-writemultipleproperties-3","HELP, pass=1" +56,"http-basic-profile-protocol-binding-invokeaction-3","HELP, pass=1" 59,"http-basic-profile-protocol-binding-invokeaction-7","HELP, pass=1" 63,"http-basic-profile-protocol-binding-invokeaction-11","HELP, pass=1" 64,"http-basic-profile-protocol-binding-invokeaction-12","HELP, pass=1" diff --git a/testing/inputs/atrisk.csv b/testing/inputs/atrisk.csv index 09617a7..bf8b70e 100644 --- a/testing/inputs/atrisk.csv +++ b/testing/inputs/atrisk.csv @@ -10,7 +10,6 @@ 18,"common-constraints-links-1","HELP, pass undefined" 20,"common-constraints-links-3","HELP, pass=1" 21,"common-constraints-links-media-types-1","HELP, pass undefined" -22,"common-constraints-links-media-types-2","HELP, pass=1" 23,"common-constraints-links-media-types-4","HELP, no results" 24,"common-constraints-links-media-types-5","HELP, no results" 25,"common-constraints-links-media-types-6","HELP, no results" @@ -22,18 +21,9 @@ 35,"common-constraints-default-language","HELP, pass undefined" 36,"http-basic-profile-1","HELP, pass undefined" 38,"profile-5-2-thing-protocol-binding-1","HELP, pass undefined" -40,"http-basic-profile-protocol-binding-readproperty-3","HELP, pass=1" -41,"http-basic-profile-protocol-binding-readproperty-4","HELP, pass=1" -44,"http-basic-profile-protocol-binding-writeproperty-3","HELP, pass=1" -45,"http-basic-profile-protocol-binding-writeproperty-4","HELP, pass=1" -48,"http-basic-profile-protocol-binding-readallproperties-3","HELP, pass undefined" -49,"http-basic-profile-protocol-binding-readallproperties-4","HELP, pass=1" -51,"http-basic-profile-protocol-binding-writemultipleproperties-1","HELP, pass=1" -52,"http-basic-profile-protocol-bindings-writemultipleproperties-3","HELP, pass undefined" -53,"http-basic-profile-protocol-binding-writemultipleproperties-4","HELP, pass=1" -55,"http-basic-profile-protocol-binding-invokeaction-1","HELP, pass=1" -56,"http-basic-profile-protocol-binding-invokeaction-3","HELP, pass undefined" -57,"http-basic-profile-protocol-binding-invokeaction-4","HELP, pass=1" +48,"http-basic-profile-protocol-binding-readallproperties-3","HELP, pass=1" +52,"http-basic-profile-protocol-bindings-writemultipleproperties-3","HELP, pass=1" +56,"http-basic-profile-protocol-binding-invokeaction-3","HELP, pass=1" 59,"http-basic-profile-protocol-binding-invokeaction-7","HELP, pass=1" 63,"http-basic-profile-protocol-binding-invokeaction-11","HELP, pass=1" 64,"http-basic-profile-protocol-binding-invokeaction-12","HELP, pass=1" diff --git a/testing/report.html b/testing/report.html index 076f329..0f6606b 100644 --- a/testing/report.html +++ b/testing/report.html @@ -119,7 +119,7 @@

    Implementation Report

    - Version: 13 Dec 2022 + Version: 14 Dec 2022

    Editors:
    @@ -830,10 +830,10 @@

    A Web Thing's Thing Description [[wot-thing-description]] MUST be retrievable from a Thing Description Server [[wot-architecture11]] using an HTTP [[HTTP11]] URL provided by a Direct Introduction Mechanism [[wot-discovery]]. A Web Thing's Thing Description [[wot-thing-description]] MUST be retrievable from a Thing Description Server [[wot-architecture11]] using an HTTP [[HTTP11]] URL provided by a Direct Introduction Mechanism [[wot-discovery]]. - 3 + 4 0 1 - 4 + 5 18: common-constraints-links-1 TD @@ -856,10 +856,10 @@

    Other keywords for links MAY be present in a TD, however their interpretation is undefined in the context of the HTTP profiles - 4 + 5 0 0 - 4 + 5 20: common-constraints-links-3 Consumer @@ -872,7 +872,7 @@

    1 0 2 - 2 + 3 21: common-constraints-links-media-types-1 TD @@ -893,12 +893,12 @@

    N - Other media types MAY be present in a TD, however their heir interpretation is undefined in the context of the HTTP profiles and they MAY be ignored by all profile-compliant consumers. + Other media types MAY be present in a TD, however their heir interpretation is undefined in the context of the HTTP profiles and they MAY be ignored by all profile-compliant consumers. 2 0 3 - 4 + 5 28: common-constraints-errors-1 Thing @@ -921,10 +921,10 @@

    It is RECOMMENDED that error responses use one of the following HTTP error codes: 400 Bad Request 401 Unauthorized 403 Forbidden 404 Not Found 500 Internal Server Error - 4 + 5 0 0 - 4 + 5 30: common-constraints-errors-3 Thing @@ -1061,10 +1061,10 @@

    The URL of a Property resource to be used when reading the value of a property MUST be obtained from a Thing Description by locating a Form inside the corresponding PropertyAffordance for which: After defaults have been applied, its op member contains the value readproperty. After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https The URL of a Property resource to be used when reading the value of a property MUST be obtained from a Thing Description by locating a Form inside the corresponding PropertyAffordance for which: After defaults have been applied, its op member contains the value readproperty. After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https - 2 + 3 0 0 - 2 + 3 40: http-basic-profile-protocol-binding-readproperty-3 Consumer @@ -1073,10 +1073,10 @@

    The resolved value of the href member MUST then be used as the URL of the Property resource. - 1 + 2 0 1 - 2 + 3 41: http-basic-profile-protocol-binding-readproperty-4 Consumer @@ -1085,10 +1085,10 @@

    In order to read the value of a property, a Consumer MUST send an HTTP request to a Web Thing with: Method set to GET URL set to the URL of the Property resource Accept header set to application/json - 1 + 2 0 1 - 2 + 3 42: http-basic-profile-protocol-binding-readproperty-6 Thing @@ -1097,10 +1097,10 @@

    If a Web Thing receives an HTTP request following the format above and the Consumer has permission to read the corresponding property, then upon successfully reading the value of the property it MUST send an HTTP response with: Status code set to 200 Content-Type header set to application/json A body with the value of the property serialized in JSON - 4 + 5 0 0 - 4 + 5 43: http-basic-profile-protocol-binding-writeproperty-1 Consumer @@ -1110,10 +1110,10 @@

    The URL of a Property resource to be used when writing the value of a property MUST be obtained from a Thing Description by locating a Form inside the corresponding PropertyAffordance for which: After defaults have been applied, its op member contains the value writeproperty After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https The URL of a Property resource to be used when writing the value of a property MUST be obtained from a Thing Description by locating a Form inside the corresponding PropertyAffordance for which: After defaults have been applied, its op member contains the value writeproperty After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https - 2 + 3 0 0 - 2 + 3 44: http-basic-profile-protocol-binding-writeproperty-3 Consumer @@ -1122,10 +1122,10 @@

    The resolved value of the href member MUST then be used as the URL of the Property resource. - 1 + 2 0 1 - 2 + 3 45: http-basic-profile-protocol-binding-writeproperty-4 Consumer @@ -1134,10 +1134,10 @@

    In order to write the value of a property, a Consumer MUST send an HTTP request to a Web Thing with: Method set to PUT URL set to the URL of the Property resource Content-Type header set to application/json A body with a requested new value for the property serialized in JSON - 1 + 2 0 1 - 2 + 3 46: http-basic-profile-protocol-binding-writeproperty-6 Thing @@ -1161,10 +1161,10 @@

    The URL of a Properties resource to be used when reading the value of all properties at once MUST be obtained from a Thing Description by locating a Form inside the top level forms member for which: Its op member contains the value readallproperties After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https The URL of a Properties resource to be used when reading the value of all properties at once MUST be obtained from a Thing Description by locating a Form inside the top level forms member for which: Its op member contains the value readallproperties After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https - 2 + 3 0 0 - 2 + 3 48: http-basic-profile-protocol-binding-readallproperties-3 Consumer @@ -1176,7 +1176,7 @@

    1 0 2 - 2 + 3 49: http-basic-profile-protocol-binding-readallproperties-4 Consumer @@ -1185,10 +1185,10 @@

    In order to read the value of all properties, a Consumer MUST send an HTTP request to a Web Thing with: Method set to GET URL set to the URL of the Properties resource Accept header set to application/json - 1 + 2 0 1 - 2 + 3 50: http-basic-profile-protocol-binding-readallproperties-5 Thing @@ -1197,10 +1197,10 @@

    If a Web Thing receives an HTTP request following the format above, then upon successfully reading the values of all the readable properties to which the Consumer has permission to access, it MUST send an HTTP response with: Status code set to 200 Content-Type header set to application/json A body with the values of all readable properties serialized in JSON, as an object keyed by property name - 3 + 4 0 0 - 3 + 4 51: http-basic-profile-protocol-binding-writemultipleproperties-1 Consumer @@ -1209,10 +1209,10 @@

    The URL of a Properties resource to be used when writing the value of multiple properties at once MUST be obtained from a Thing Description by locating a Form inside the top level forms member for which: Its op member contains the value writemultipleproperties After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https - 1 + 2 0 0 - 1 + 2 52: http-basic-profile-protocol-bindings-writemultipleproperties-3 Consumer @@ -1224,7 +1224,7 @@

    1 0 1 - 1 + 2 53: http-basic-profile-protocol-binding-writemultipleproperties-4 Consumer @@ -1233,10 +1233,10 @@

    In order to write the value of multiple properties at once, a Consumer MUST send an HTTP request to a Web Thing with: Method set to PUT URL set to the URL of the Properties resource Content-Type header set to application/json A body with requested new values for the writable properties serialized in JSON, as an object keyed by property name - 1 + 2 0 0 - 1 + 2 54: http-basic-profile-protocol-binding-writemultipleproperties-6 Thing @@ -1260,10 +1260,10 @@

    The URL of an Action resource to be used when invoking an action MUST be obtained from a Thing Description by locating a Form inside the corresponding ActionAffordance for which: After defaults have been applied, the value of its op member is invokeaction After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https - 1 + 2 0 0 - 1 + 2 56: http-basic-profile-protocol-binding-invokeaction-3 Consumer @@ -1275,7 +1275,7 @@

    1 0 1 - 1 + 2 57: http-basic-profile-protocol-binding-invokeaction-4 Consumer @@ -1284,10 +1284,10 @@

    In order to invoke an action on a Web Thing, a Consumer MUST send an HTTP request to the Web Thing with: Method set to POST URL set to the URL of the Action resource Accept header set to application/json Content-Type header set to application/json A body with an input to the action, if any, serialized in JSON - 1 + 2 0 0 - 1 + 2 58: http-basic-profile-protocol-binding-invokeaction-6 Thing @@ -1357,10 +1357,10 @@

    For long-running actions which are not expected to finish executing within the timeout period of an HTTP request (e.g. 30 to 120 seconds), it is RECOMMENDED that a Web Thing respond with an Asynchronous Action Response so that a Consumer may continue to monitor the status of an action request with a queryaction operation on a dynamically created ActionStatus resource, after the initial invokeaction response. - 3 + 4 0 0 - 3 + 4 63: http-basic-profile-protocol-binding-invokeaction-11 Thing From 6ec32e793a3242ada6321609d55eade082086282 Mon Sep 17 00:00:00 2001 From: Ege Korkan Date: Wed, 21 Dec 2022 12:58:16 +0000 Subject: [PATCH 15/33] add clarification on the server behavior of the Consumer --- index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index e88a8c1..5cfc080 100644 --- a/index.html +++ b/index.html @@ -2862,9 +2862,9 @@

    Introduction

    multiple Things. Consumers implement a Webhook listener that is handling the event streams generated by Things. For Webhook mechanism to function, the Consumer provides a server and client behavior. - The client behavior is used for the initial subscription operation, whereas the server behavior is used to + The client behavior is used for the initial subscription operation, whereas the server behavior is used to accept the event streams sent by the Thing. - Thus, interactions can be initiated both by the Thing and the Consumer. + Thus, interactions can be initiated both by the Thing and the Consumer.

    A Webhook is similar to a callback mechanism in programming languages. Consumers can From 546c2076f2b80da43b3e4a6e3137ff81695773bb Mon Sep 17 00:00:00 2001 From: Ege Korkan Date: Wed, 21 Dec 2022 12:59:58 +0000 Subject: [PATCH 16/33] revert commit --- index.html | 4 ---- 1 file changed, 4 deletions(-) diff --git a/index.html b/index.html index 5cfc080..9ee6676 100644 --- a/index.html +++ b/index.html @@ -2861,10 +2861,6 @@

    Introduction

    The mechanism is scalable and supports Consumers that receive events from multiple Things. Consumers implement a Webhook listener that is handling the event streams generated by Things. - For Webhook mechanism to function, the Consumer provides a server and client behavior. - The client behavior is used for the initial subscription operation, whereas the server behavior is used to - accept the event streams sent by the Thing. - Thus, interactions can be initiated both by the Thing and the Consumer.

    A Webhook is similar to a callback mechanism in programming languages. Consumers can From 6f364c2fb8eec97bb60d013046f59cd3bb43d8b4 Mon Sep 17 00:00:00 2001 From: Michael McCool Date: Wed, 21 Dec 2022 08:46:02 -0400 Subject: [PATCH 17/33] remove atrisk markup from WD --- publication/2-wd/Overview.html | 220 ++++++++++---------- publication/2-wd/static.html | 3 +- testing/atrisk.css | 366 +++++++++++++++++++++++++++++++++ 3 files changed, 480 insertions(+), 109 deletions(-) diff --git a/publication/2-wd/Overview.html b/publication/2-wd/Overview.html index 1086b95..9f9ff33 100644 --- a/publication/2-wd/Overview.html +++ b/publication/2-wd/Overview.html @@ -1,114 +1,118 @@ - - - - - - - - Web of Things (WoT) Profile - - + + + + +Web of Things (WoT) Profile + + + + + Web of Things (WoT) Profile - - - - -Web of Things (WoT) Profile - - - - + + + Web of Things (WoT) Profile + + + + + + + + "publishISODate": "2023-01-18T00:00:00.000Z", + "generatedSubtitle": "W3C Working Draft 18 January 2023" + } + +

    @@ -1641,211 +1672,2187 @@

    5. 1

    {
    -  "@context": "https://www.w3.org/2022/wot/td/v1.1",
    -  "id": "urn:dev:ops:32473-WoTLamp-1234",
    -  "profile": "https://www.w3.org/2022/wot/profile/http-basic/v1",
    -  "title": "My Lamp",
    -  "description": "A web connected lamp",
    -  ...
    -}
    - -
    - -
    {
    -  "@context": "https://www.w3.org/2022/wot/td/v1.1",
    -  "id": "urn:dev:ops:32473-WoTLamp-1234",
    -  "profile": [
    -    "https://www.w3.org/2022/wot/profile/http-basic/v1",
    -    "https://www.w3.org/2022/wot/profile/http-sse/v1"
    -  ],
    -  "title": "My Lamp",
    -  "description": "A web connected lamp",
    -  ...
    -}
    -
    - -
    -
    -

    6. - Common Constraints

    -
    -

    The following sections are applicable for all of the HTTP - profiles defined by this document.

    -
    -
    -

    6.1 - Accessibility

    -
    -

    Authors of Thing Descriptions must - ensure that the things described by them are accessible to - users with disabilities.

    -

    It is REQUIRED to provide a title that - can be automatically rendered in a non-visual way (e.g. using - a screen reader) for things that may be used in deployments - with users with disabilities.

    -

    It is highly RECOMMENDED to provide a - description that can be automatically rendered - in a non-visual way (e.g. using a screen reader) for things - that may be used in deployments with users with - disabilities.

    -
    -
    - Editor's note -
    -
    - This is just a baseline set of requirements, which needs - additional input from the APA group. It needs to be - clarified which TD elements are used by people with - disabilities and to which these constraints are applied. -
    -
    -
    -
    -
    -

    6.2 - Units

    -
    -

    Authors of Thing Descriptions - should be aware that units that are common in their - geographic region are not globally applicable and may lead to - misinterpretation with drastic consequences.

    -

    It is highly RECOMMENDED to provide a unit, if - a value has a physical quantity.

    -

    It is highly RECOMMENDED to use the metric system (SI - units) for devices that are used in global - deployments.

    -
    -
    -
    -

    6.3 Date - Format

    -
    -

    All date and time values - MUST use the date-time - format defined in [RFC3339].

    -
    - -
    2022-09-21T23:20:50.52Z
    -
    -
    -
    - Note -
    -

    In order to reduce ambiguity, RFC 3339 only - permits an hour with a value between 00 and 23 (not 24), - and time zones expressed as a numerical offset relative to - UTC. The suffix "Z" when applied to a time denotes a UTC - offset of 00:00.

    -
    -
    -
    -
    -

    6.4 - Security

    -
    - -

    Conformant Consumers - MUST support all of these security - schemes.

    -

    A Thing MAY implement multiple security - schemes.

    -

    Conformant Consumers - MUST support security bootstrapping - for all implemented security schemes, as defined in Security - Bootstrapping in the WoT Discovery [wot-discovery] - specification.

    -

    Conformant Things which - require authentication in order to retrieve their Thing - Description MUST implement security - bootstrapping, as defined in Security - Bootstrapping in the WoT Discovery [wot-discovery] - specification.

    -
    + +
    +

    +

    Web of Things (WoT) Profile

    +

    W3C Working Draft +

    +
    + + More details about this document + +
    +
    This version:
    +
    + https://www.w3.org/TR/2023/WD-wot-profile-20230118/ +
    +
    Latest published version:
    +
    + https://www.w3.org/TR/wot-profile/ +
    +
    Latest editor's draft:
    +
    + https://w3c.github.io/wot-profile/ +
    +
    History:
    +
    + https://www.w3.org/standards/history/wot-profile +
    +
    + Commit + history +
    +
    Editors:
    +
    + Michael Lagally (Oracle + Corp.) +
    +
    Ben Francis + (Invited Expert)
    +
    + Michael McCool (Intel + Corp.) +
    +
    + Ryuichi Matsukura + (Fujitsu Ltd.) +
    +
    + Sebastian Kaebisch + (Siemens AG) +
    +
    + Tomoaki Mizushima + (Internet Research Institute, + Inc.) +
    +
    Feedback:
    +
    + GitHub + w3c/wot-profile (pull + requests, new + issue, open + issues) +
    +
    + + public-wot-wg@w3.org with subject line + [wot-profile] … message topic … + (archives) +
    +
    Contributors
    +
    + In + the GitHub repository +
    +
    Repository
    +
    + We are on + GitHub +
    +
    + File + a bug +
    +
    + Contribute +
    +
    +
    + +
    +
    +
    +

    Abstract

    +

    The WoT Profile Specification defines a Profiling + Mechanism and an HTTP Basic Profile, which enables + out of the box interoperability among things and + devices. Out of the box interoperability implies, that + devices can be integrated into various application scenarios + without deep level adaptations. Typically only minor + configuration operations are necessary (such as entering a + network key, or IP address) to use the device in a certain + scenario. These actions can be done by anyone without specific + training.

    The HTTP Basic Profile defines a set of + constraints and rules, which compliant thing + descriptions have to adopt to guarantee interoperability. +

    These rules are prescriptive, to ensure that compliant + implementations satisfy the semantic guarantees implied by + them. We call this set of rules a Profile.

    +

    The WoT Profile Specification as defined in + this document serves two purposes:

    +
      +
    • It defines a generic Profiling Mechanism which + provides a mechanism to describe a profile in an unambiguous + way. This mechanism can be used to define additional + profiles.
    • +
    • In addition, it defines a HTTP Basic Profile of the + Thing Description, which contains protocol binding rules for + HTTP. +

      The normative HTTP Basic Profile is + complemented by two informative profiles for + events: The HTTP SSE + Profile and the HTTP Webhook Profile.

      +

      In the current version of this document these event + bindings are provided in informative sections, to + illustrate how these event mechanisms could be supported in + other profiles.

      +

      It is planned that future versions of this document + normatively define these event mechanisms.

      +

      This specification defines a set of normative + constraints that apply to all profiles defined by + this document.

      +

      A TD that is compliant to the HTTP + Basic Profile MUST adhere to both + the common constraints and the protocol binding.

      +
    • +
    +

    Devices that constrain their use of the Thing Description to + the HTTP Basic Profile can interoperate with each other + out-of-the-box.

    +

    Note that the HTTP Basic Profile is not exclusive. Device + implementers are free to adopt other features of the Thing + Description that go beyond the constraints of the HTTP Basic + Profile, however the interoperability guarantees of the HTTP + Basic Profile hold only for the HTTP Basic Profile subset.

    +

    Future versions of this document may contain other profiles, + e.g. a profile for digital twins and a profile for resource + constrained devices.

    +
    +
    +

    Motivation for a + Profile

    +
    +
    +

    The W3C WoT Thing Architecture + [wot-architecture11] + and WoT Thing Description [wot-thing-description11] + define a powerful description mechanism and a format to + describe myriads of very different devices, which may be + connected over various protocols. The format is very flexible + and open and puts very few normative requirements on devices + that implement it.

    +

    However, this flexibility de-facto prevents + interoperability, since, without additional + rules, it allows implementers to make many + choices that do not provide guarantees of + common behavior between implementations.

    +
    +
    +

    Status of This Document

    +

    This section describes the status of this document at + the time of its publication. A list of current W3C publications and the + latest revision of this technical report can be found in the + W3C technical reports + index at https://www.w3.org/TR/.

    +

    This document was published by the Web of Things Working + Group as a Working Draft using the Recommendation + track.

    +

    Publication as a Working Draft does not imply endorsement by + W3C and its + Members.

    +

    This is a draft document and may be updated, replaced or + obsoleted by other documents at any time. It is inappropriate + to cite this document as other than work in progress.

    +

    This document was produced by a group operating under the + W3C Patent Policy. + W3C maintains a + public list of any + patent disclosures made in connection with the deliverables + of the group; that page also includes instructions for + disclosing a patent. An individual who has actual knowledge of + a patent which the individual believes contains Essential + Claim(s) must disclose the information in accordance with + section + 6 of the W3C + Patent Policy.

    +

    This document is governed by the 2 November 2021 + W3C Process + Document.

    +
    + +
    +
    +

    1. + Introduction

    +
    +

    The W3C WoT + Architecture [wot-architecture11] + and the WoT Thing Description [wot-thing-description11] + have been developed as a versatile format, that allows + describing the interactions between multiple devices and + protocols.

    +

    This flexibility permits an easy integration of new device + types and protocols, however it risks interoperability, since + there are no guarantees that two devices which are + formally spec-compliant, will be able to communicate.

    +

    To increase adoption of the WoT specifications, + interoperability between on premise devices, edge devices and + the cloud is essential. Even if every manufacturer is + implementing the current Thing Description specification in + full flexibility, there is no interoperability guarantee; many + choices are still left to the implementations and there are + very few normative requirements that a device has to + fulfill.

    +
    +
    +

    1.1 Deployment Scenarios

    +
    +

    A Thing Description can be used in two fundamentally + different deployment scenarios:

    +
      +
    • a "brown-field" scenario, where it is created to + describe the interactions with existing systems.
    • +
    • a "green-field" scenario, where a device model and a + thing description are developed together.
    • +
    +

    For green field deployments, where the implementations are + being carried out and corresponding thing descriptions are + being created, it is easier to achieve full interoperability + by using a small, extensible HTTP Basic Profile.

    +

    In the brown field area, due to the nature of existing + deployments and protocols, a broad spectrum of variations and + potentially high complexity of thing descriptions inhibits + interoperability and will most likely lead to additional + profiles of the WoT Thing + Description and domain-specific thing consumer + implementations.

    +

    The WoT HTTP Basic Profile can be used by green field + deployments and gives guidance to new implementers of the WoT + specifications.

    +
    +
    +
    +

    + 1.2 Summary of Use Cases and + Requirements

    +
    +

    A set of over 30 use cases for the Web of Things were + contributed by stakeholders from multiple industries for + various application domains. These have been published in the + WoT Use Cases and Requirements document [wot-usecases].

    +

    Based on these use cases a set of requirements have been + derived which drive the development of the W3C Web of Things + specification family. Several of these domains require easy + integration of devices from multiple vendors, in other words, + out-of-the-box interoperability. However, the descriptive + approach taken by the WoT specifications generally leads to a + large variety of different protocols and data formats, which + can work against out-of-the box interoperability.

    +

    For example, a WoT Thing Description (TD) can in theory + include a description based on a networking protocol unknown + to a device that wishes to connect to it. To ensure + interoperability without additional customization (e.g. by + writing software or performing complex setup or configuration + steps), the range of such choices needs to be limited to a + finite set so that a consumer of a Thing Description can be + sure it will be able to interact with any possible Thing. A + finite set of customization choices is also important for + implementing devices with a fixed code base. Defining such + constraints leads to the profile mechanism and the HTTP Basic + Profile.

    +

    In addition to multiple vertical use cases that will use + HTTP(S) for their implementations, there are horizontal use + cases that are addressed by this profile specification. The + primary focus is to enable Multi-Vendor system integration + with out of the box interoperability.

    +
    +
    +

    + 1.2.1 Multi-Vendor System + Integration - Out of the box + interoperability

    +
    Users of devices want to process data from all + devices that conform to a class of devices in a uniform + way. They need a guarantee that they are able to correctly + interact with all affordances of the Thing that complies + with this class of devices. Different interpretations of + the same Thing Description, that lead to different + behaviour, should not be possible. Users want to integrate + devices in existing scenarios out of the box, i.e. with + close to zero configuration tasks. +
    +
    +
    +
    +

    1.3 + Why a Profile?

    +
    +

    During the recent WoT Plugfests there were many de-facto + agreements on the use of a small constrained subset of + interaction patterns and protocol choices. These de-facto + agreements select a common subset of the WoT Thing + Description, based on proven interoperability among + manufacturers.

    +

    The HTTP Basic Profile contains + additional normative requirements that MUST be satisfied by devices to be compliant + to the profile.

    +
    + http-baseline-Profile-Picture +
    + Figure 1 WoT HTTP Basic Profile - A Subset of + Affordances +
    +
    +

    Adoption of the HTTP Basic + Profile will significantly limit the implementation + burden of device and cloud implementors.

    +

    The HTTP Basic Profile was defined with the following main + goals:

    +
      +
    • guarantee interoperability among all implementations of + the profile.
    • +
    • limit the implementation complexity.
    • +
    +

    It makes choices on the required metadata fields as well + as the supported interactions and protocol endpoints. It + introduces some constraints on data schemas for properties + and actions which are required for resource constrained + devices in real-world deployments. The format does not forbid + the use of additional elements of the WoT Thing + Description for vendor specific extensions, however this + will impact interoperability.

    +
    +
    +
    +

    1.4 Out-of-the-box + interoperability

    +
    +

    Devices, which implement the HTTP Basic Profile, are + out-of-the-box interoperable with other HTTP + Basic Profile compliant devices. Furthermore, the HTTP Basic + Profile simplifies device validation and compliance testing + since a corresponding conformance test suite can be + defined.

    +

    The following classification adopts the terminology as + described in the "H2020 – CREATE-IoT Project - + Recommendations for commonalities and interoperability + profiles of IoT platforms" [H2020-CREATE-IoT] + report. The definitions below have been adapted to reflect + the scope of the WoT profile.

    +
    +
    +

    + 1.4.1 Technical + Interoperability

    +
    +

    Technical Interoperability is usually + associated with communication protocols and the + infrastructure needed for those protocols to operate. This + implies agreeing on a common protocol (e.g. HTTP / TCP/IP) + and providing additional clarifications, where + required.

    +
    +
    +
    +

    + 1.4.2 Syntactic + Interoperability

    +
    +

    Syntactic Interoperability is usually + associated with data formats and encodings along with + techniques for compressing them. Examples for these formats + and encodings in the WoT are JSON, XML, JSON-LD, UTF-8 + payloads.

    +
    +
    +
    +

    + 1.4.3 Semantic + Interoperability

    +
    +

    Semantic Interoperability is associated with a + common understanding of the behavior of communication + partners. In the profile context, it includes a common + interpretation of (synchronous and asynchronous) action + semantics, a common event model, how to set/get multiple + properties, writable properties, a common error model and + error messages.

    +

    Domain specific ontologies, e.g. semantic interop of + automotive and medical devices exceed the scope of the + profile.

    +
    +
    +
    +

    + 1.4.4 Organisational + Interoperability

    +
    +

    Organisational Interoperability in the profile + context implies that any consumer, which conforms with a + given profile can interact with any Thing which conforms + with the same profile, without additional + customization.

    +

    Organisational Interoperability also requires commonly + agreed approaches to security, trust and privacy, i.e. a + consumer is provided access to Things only, when these + common terms and conditions are applied.

    +

    Devices created by various engineers, vendors and SDOs + that satisfy the requirements of the profile specification + can be integrated with compliant consumers without + additional customization. This works across + infrastructures, regions and cultures.

    +
    +
    +
    +
    +

    1.5 Structure of this document

    +
    +
    +
    + Editor's note +
    +
    + to be added. +
    +
    +
    +
    +
    +
    +

    2. + Conformance

    +
    +

    As well as sections marked as non-normative, all authoring + guidelines, diagrams, examples, and notes in this specification + are non-normative. Everything else in this specification is + normative.

    +

    The key words MAY, MUST, MUST NOT, + OPTIONAL, RECOMMENDED, REQUIRED, + SHOULD, and SHOULD + NOT in this document are to be interpreted as described in + BCP + 14 [RFC2119] + [RFC8174] + when, and only when, they appear in all capitals, as shown + here.

    +

    A device or consumer implementation complies with this + specification if it follows the normative statements in the + present document.

    +
    +
    +
    +

    3. + Terminology

    +
    +

    The fundamental WoT terminology such as Thing, Consumer, Thing Description (TD), WoT Thing Description, Partial TD, Thing Model (TM), Interaction Model, Interaction + Affordance, Property, Action, Event, Protocol Binding, Servient, Vocabulary, Term, Vocabulary Term, WoT Interface, + and WoT Runtime + are defined in Section + 3 of the WoT Architecture specification [WOT-ARCHITECTURE].

    +

    For convenience of the reader, we use the terms + keyword and field for the linguistic notion + vocabulary term as defined in the Thing + Description Specification.

    +

    We use the terms device and thing in an + interchangeable manner.

    +
    +
    +

    3.1 Additional Definitions

    +
    +
    +
    Profile
    +
    + A technical specification which provides a set of + assertions such that any Consumer which conforms with + the those assertions is out-of-the-box + interoperable with any Thing which also conforms with + those assertions. +
    +
    +
    +
    +
    +
    +

    4. + Profile Requirements

    +
    +

    The following requirements were identified by the WoT + profile task force and are addressed by the Profile 1.0 + specification.

    +
    +
    +

    4.1 + Interoperability

    +
    +

    This is the most important objective of the profile. A TD + Consumer satisfying the requirements of a profile should be + able to process any TD also satisfying the profile and should + be able to correctly interact with all affordances of the + Thing such a TD describes.

    This implies that a profile has + three parts: +
      +
    • Restrictions on TDs
    • +
    • Implementation requirements, constraints and behavioral + assertions for Consumers
    • +
    • Implementation requirements, constraints and behavioral + assertions on Things
    • +
    +
    +
    + Note +
    +
    + Note: The WoT HTTP Basic Profile does not prevent a TD to + have forms for additional protocols, but these can be + ignored by compliant consumers, and could be removed + without affecting profile conformance and compatibility. + This may be useful for consumers that support multiple + profiles. +
    +
    +
    +
    +
    +

    4.2 Limit and reduce complexity

    +
    +

    Complexity addresses at least the following two things to + simplify the development and reduce the implementation + effort:

    +
      +
    • Implementation complexity on a thing and consumer, e.g. + eliminating the need of RDF processing, but still + permitting semantic annotations.
    • +
    • Simplifying thing description to have fewer + variations.
    • +
    • Limiting the effort for JSON implementation.
    • +
    +
    +
    +
    +

    + 4.3 No Ambiguities, select single + choice

    +
    +

    Get rid of ambiguities, i.e. clarify specifications to + define interpretation of a TD and behavior of the thing and + consumer.

    +

    Examples are the choice of properties vs. actions, use of + PUT or POST for HTTP, observe protocols.

    +
    +
    +
    +

    4.4 Developer guidance

    +
    +

    A profile should help define what needs to be implemented. + This requirement also includes behavioral goals and + recommendations about best practice for the implementation of + Consumers and Things.

    +
    +
    +
    +

    4.5 Multiple profiles + (mechanism)

    +
    +

    The mechanism used to indicate that a TD satisfies a + profile should be general enough to indicate the TD satisfies + the requirements for multiple profiles.

    +
    +
    +
    +

    4.6 Composable profiles

    +
    +

    It should be possible to combine multiple profiles both + for production and consumption:

    +

    It should be possible to indicate that a consumer can + ingest TDs that satisfy one or more profiles, even if each + TDs individually only satisfies one profile. For example, a + Smart Building may need to use both "constrained" devices and + "unconstrained" devices. A gateway consuming TDs should be + able to ingest TDs designed for both the constrained and + unconstrained contexts.

    +

    A Thing that satisfies all the requirements for multiple + TDs (for example, a device using protocols common to two + different usage contexts) should be able to indicate + that.

    +
    +
    +
    +

    4.7 + Validatible TDs

    +
    +

    Whether or not a TD satisfies the requirements of a given + profile should be verifiable with automated tools. We can use + the existing TD JSDON Schema as a basis and reuse the + existing tooling (TD-playground)

    +
    +
    +
    +

    4.8 Identification of profiles

    +
    +

    There should be a mechanism to identify which profiles a + TD satisfies. This mechanism should be intrinsic to a TD, + i.e. be in-band.

    +
    +
    +
    +

    + 4.9 Finite set of features and + capabilities

    +
    +

    A profile should limit the number of options, for example + the set of possible protocols, to a finite set, so that a + consumer can consume any TD in a given profile with a finite + and static code base.

    +
    +
    +
    +
    +

    5. + Profiling Mechanism

    +
    +

    In order to conform with a profile, a + Web + Thing MUST conform with all the + normative statements in the profile's specification.

    +

    In order to denote that a given + Web + Thing conforms to one or more profiles, its Thing + Description MUST include a profile + member [wot-thing-description11]. + The + value of the profile member MUST be set to either a valid URI + [RFC3986] + identifying a single profile, or an array of valid URIs + identifying multiple profiles.

    +

    In order to use a profile + member in a Thing Description, the @context member + MUST contain the anyURI + https://www.w3.org/2022/wot/td/v1.1 in order to + denote that the document is using version 1.1 of the Thing + Description specification. [wot-thing-description11].

    +
    + +
    {
    +  "@context": "https://www.w3.org/2022/wot/td/v1.1",
    +  "id": "urn:dev:ops:32473-WoTLamp-1234",
    +  "profile": "https://www.w3.org/2022/wot/profile/http-basic/v1",
    +  "title": "My Lamp",
    +  "description": "A web connected lamp",
    +  ...
    +}
    +
    +
    + +
    {
    +}
    +
    +
    + +
    {
    +  "@context": "https://www.w3.org/2022/wot/td/v1.1",
    +  "id": "urn:dev:ops:32473-WoTLamp-1234",
    +  "profile": [
    +    "https://www.w3.org/2022/wot/profile/http-basic/v1",
    +    "https://www.w3.org/2022/wot/profile/http-sse/v1"
    +  ],
    +  "title": "My Lamp",
    +  "description": "A web connected lamp",
    +  ...
    +}
    +
    +
    +
    +
    +

    6. + Common Constraints

    +
    +

    The following sections are applicable for all of the HTTP + profiles defined by this document.

    +
    +
    +

    6.1 + Accessibility

    +
    +

    Authors of Thing Descriptions must + ensure that the things described by them are accessible to + users with disabilities.

    +

    It is REQUIRED to provide a title that + can be automatically rendered in a non-visual way (e.g. using + a screen reader) for things that may be used in deployments + with users with disabilities.

    +

    It is highly RECOMMENDED to provide a + description that can be automatically rendered + in a non-visual way (e.g. using a screen reader) for things + that may be used in deployments with users with + disabilities.

    +
    +
    + Editor's note +
    +
    + This is just a baseline set of requirements, which needs + additional input from the APA group. It needs to be + clarified which TD elements are used by people with + disabilities and to which these constraints are applied. +
    +
    +
    +
    +
    +

    6.2 + Units

    +
    +

    Authors of Thing Descriptions + should be aware that units that are common in their + geographic region are not globally applicable and may lead to + misinterpretation with drastic consequences.

    +

    It is highly RECOMMENDED to provide a unit, if + a value has a physical quantity.

    +

    It is highly RECOMMENDED to use the metric system (SI + units) for devices that are used in global + deployments.

    +
    +
    +
    +

    6.3 Date + Format

    +
    +

    All date and time values + MUST use the date-time + format defined in [RFC3339].

    +
    + +
    2022-09-21T23:20:50.52Z
    +
    +
    +
    + Note +
    +

    In order to reduce ambiguity, RFC 3339 only + permits an hour with a value between 00 and 23 (not 24), + and time zones expressed as a numerical offset relative to + UTC. The suffix "Z" when applied to a time denotes a UTC + offset of 00:00.

    +
    +
    +
    +
    +

    6.4 + Security

    +
    + +

    Conformant Consumers + MUST support all of these security + schemes.

    +

    A Thing MAY implement multiple security + schemes.

    +

    Conformant Consumers + MUST support security bootstrapping + for all implemented security schemes, as defined in Security + Bootstrapping in the WoT Discovery [wot-discovery] + specification.

    +

    Conformant Things which + require authentication in order to retrieve their Thing + Description MUST implement security + bootstrapping, as defined in Security + Bootstrapping in the WoT Discovery [wot-discovery] + specification.

    +
    +
    +
    +

    6.5 + Discovery

    +
    +

    A Web Thing's Thing + Description [wot-thing-description] + MUST be retrievable from a + Thing Description Server [wot-architecture11] + using an HTTP [HTTP11] + URL provided by a Direct + Introduction Mechanism [wot-discovery].

    +
    + +

    If a Consumer + encounters a link with "rel": "service-doc" and "type": + "text/plain", "type": "text/html" or "type": "text/pdf", and is + capable of rendering documents in the provided format, then it + SHOULD interpret the link as a user + manual for the Thing and provide a means for the user to follow + that link and read the user manual.

    +
    +

    If a Consumer encounters + a link with "rel": "item" and "type": "application/td+json" and + is capable of rendering a hierarchical tree of Things, then it + should interpret the link as an indication that the target is a + sub-Thing of the current Thing and render this in a meaningful + way to the user.

    +

    If a Consumer encounters + a link with "rel": "collection" and "type": "application/td+json" + and is capable of rendering a hierarchical tree of Things, then + it should interpret the link as an indication that the target + describes a Thing (e.g. a group, system of Things or Thing + Directory) which contains the current Thing and render this in a + meaningful way to the user.

    +
    +
    +

    7. + Errors

    +
    +

    If any of the operations defined + in the protocol bindings of HTTP profiles are unsuccessful then + the Web Thing MUST send an HTTP + response with an HTTP error code which describes the reason for + the failure.

    +
    +

    It is RECOMMENDED that error + responses use one of the following HTTP error codes:

    +
      +
    • 400 Bad Request
    • +
    • 401 Unauthorized
    • +
    • 403 Forbidden
    • +
    • 404 Not Found
    • +
    • 500 Internal Server Error
    • +
    +
    +

    A Web Thing MAY respond with 3xx status codes for the + purposes of redirection, caching or authentication. + A Web Thing MUST NOT respond with a 300 Multiple + Choices status code.

    +

    Web Things MAY respond with other valid HTTP error codes + (e.g. 418 I'm a teapot). Consumers + MAY interpret other valid HTTP error + codes as a generic 4xx or 5xx error + with no special defined behaviour.

    +

    If an HTTP error response + contains a body, the content of that body MUST conform with the Problem Details format + [RFC7807].

    +
    +
    +
    +

    8. + Default Language

    +
    +

    One Map contained in an + @context Array MUST + 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).

    +
    +
    +
    +

    9. + HTTP Basic Profile

    +
    +

    This section defines the HTTP Basic Profile, which includes + a Protocol + Binding for reading and writing properties and invoking, + querying and cancelling actions.

    +

    This profile may be used in conjunction with the HTTP SSE Profile or the HTTP Webhook Profile in order + to provide operations for observing properties and listening + for events.

    +

    In + order to conform with the HTTP Basic Profile, Web Things and + Consumers MUST also conform with all + of the assertions in the Common + Constraints section.

    +
    +
    +

    9.1 + Identifier

    +
    +

    In order to denote that a + given Web + Thing conforms to the HTTP Basic Profile, its Thing + Description MUST have a profile + member [wot-thing-description] + with a value of + https://www.w3.org/2022/wot/profile/http-basic/v1.

    +
    +
    +
    +

    9.2 + Protocol Binding

    +
    +

    This section defines a protocol binding which describes + how a Consumer + communicates with a Web + Thing [wot-architecture11] + using JSON [JSON] + payloads over the HTTP [HTTP11] + protocol.

    +

    A Consumer or Web + Thing conforming to the HTTP Basic Profile MUST implement this protocol + binding.

    +

    The examples provided throughout this section describe how + a Consumer would communicate with a Web Thing which produces + the following Thing Description:

    +
    + +
    {
    +}
    +
    +
    +
    +
    +

    6. + Common Constraints

    +
    +

    The following sections are applicable for all of the HTTP + profiles defined by this document.

    +
    +
    +

    6.1 + Accessibility

    +
    +

    Authors of Thing Descriptions must + ensure that the things described by them are accessible to + users with disabilities.

    +

    It is REQUIRED to provide a title that + can be automatically rendered in a non-visual way (e.g. using + a screen reader) for things that may be used in deployments + with users with disabilities.

    +

    It is highly RECOMMENDED to provide a + description that can be automatically rendered + in a non-visual way (e.g. using a screen reader) for things + that may be used in deployments with users with + disabilities.

    +
    +
    + Editor's note +
    +
    + This is just a baseline set of requirements, which needs + additional input from the APA group. It needs to be + clarified which TD elements are used by people with + disabilities and to which these constraints are applied. +
    +
    +
    +
    +
    +

    6.2 + Units

    +
    +

    Authors of Thing Descriptions + should be aware that units that are common in their + geographic region are not globally applicable and may lead to + misinterpretation with drastic consequences.

    +

    It is highly RECOMMENDED to provide a unit, if + a value has a physical quantity.

    +

    It is highly RECOMMENDED to use the metric system (SI + units) for devices that are used in global + deployments.

    +
    +
    +
    +

    6.3 Date + Format

    +
    +

    All date and time values + MUST use the date-time + format defined in [RFC3339].

    +
    + +
    2022-09-21T23:20:50.52Z
    +
    +
    +
    + Note +
    +

    In order to reduce ambiguity, RFC 3339 only + permits an hour with a value between 00 and 23 (not 24), + and time zones expressed as a numerical offset relative to + UTC. The suffix "Z" when applied to a time denotes a UTC + offset of 00:00.

    +
    +
    +
    +
    +

    6.4 + Security

    +
    + +

    Conformant Consumers + MUST support all of these security + schemes.

    +

    A Thing MAY implement multiple security + schemes.

    +

    Conformant Consumers + MUST support security bootstrapping + for all implemented security schemes, as defined in Security + Bootstrapping in the WoT Discovery [wot-discovery] + specification.

    +

    Conformant Things which + require authentication in order to retrieve their Thing + Description MUST implement security + bootstrapping, as defined in Security + Bootstrapping in the WoT Discovery [wot-discovery] + specification.

    +

    6.5 @@ -2387,18 +4394,211 @@

    9.2.1 aria-label="Permalink for Section 9.2.1">

    + "http-basic-profile-protocol-binding-readproperty"> +
    +
    9.2.1.1 + readproperty
    +
    +
    +

    The URL of a Property resource to be + used when reading the value of a property MUST be obtained from a Thing + Description by locating a + Form inside the corresponding + PropertyAffordance for which:

    +
      +
    • After defaults have been applied, its + op member contains the value + readproperty.
    • +
    • After being resolved against a base URL where + applicable, the URI + scheme [RFC3986] + of the value of its href member is + http or https +
    • +
    +
    +

    The + resolved value of the href member MUST then be used as the URL of the + Property resource.

    +
    +

    In order to read the value of a property, a Consumer + MUST send an HTTP request to a + Web Thing with:

    +
      +
    • Method set to GET
    • +
    • URL set to the URL of the Property + resource
    • +
    • Accept header set to + application/json
    • +
    +
    +
    + +
    GET /things/lamp/properties/on HTTP/1.1
    +}
    +
    +
    +
    +

    9.2.1 + Properties

    +
    +
    +
    +
    9.2.1.1 + readproperty
    +
    +
    +

    The URL of a Property resource to be + used when reading the value of a property MUST be obtained from a Thing + Description by locating a + Form inside the corresponding + PropertyAffordance for which:

    +
      +
    • After defaults have been applied, its + op member contains the value + readproperty.
    • +
    • After being resolved against a base URL where + applicable, the URI + scheme [RFC3986] + of the value of its href member is + http or https +
    • +
    +
    +

    The + resolved value of the href member MUST then be used as the URL of the + Property resource.

    +
    +

    In order to read the value of a property, a Consumer + MUST send an HTTP request to a + Web Thing with:

    +
      +
    • Method set to GET
    • +
    • URL set to the URL of the Property + resource
    • +
    • Accept header set to + application/json
    • +
    +
    +
    + +
    GET /things/lamp/properties/on HTTP/1.1
    +Host: mythingserver.com
    +Accept: application/json
    +
    +
    +

    If a Web Thing receives an HTTP request following + the format above and the Consumer has permission to + read the corresponding property, then upon successfully + reading the value of the property it MUST send an HTTP response with:

    +
      +
    • Status code set to 200
    • +
    • Content-Type header set to + application/json
    • +
    • A body with the value of the property serialized + in JSON
    • +
    +
    +
    + +
    HTTP/1.1 200 OK
    +"hljs-punctuation">: application/json
    +
    +
    +

    If a Web Thing receives an HTTP request following + the format above and the Consumer has permission to + read the corresponding property, then upon successfully + reading the value of the property it MUST send an HTTP response with:

    +
      +
    • Status code set to 200
    • +
    • Content-Type header set to + application/json
    • +
    • A body with the value of the property serialized + in JSON
    • +
    +
    +
    + +
    HTTP/1.1 200 OK
    +Content-Type: application/json
    +false
    +
    +
    +
    -
    9.2.1.1 - readproperty
    +
    9.2.1.2 + writeproperty
    + "http-basic-profile-protocol-binding-writeproperty-1">

    The URL of a Property resource to be - used when reading the value of a property MUST be obtained from a Thing Description by locating a @@ -2408,7 +4608,7 @@

  • After defaults have been applied, its op member contains the value - readproperty.
  • + writeproperty
  • After being resolved against a base URL where applicable, the URI @@ -2421,63 +4621,33 @@
  • The + "http-basic-profile-protocol-binding-writeproperty-3">The resolved value of the href member MUST then be used as the URL of the Property resource.

    -

    In order to read the value of a property, a Consumer - MUST send an HTTP request to a - Web Thing with:

    + "http-basic-profile-protocol-binding-writeproperty-4"> +

    In order to write the value of a property, a + Consumer MUST send an HTTP + request to a Web Thing with:

      -
    • Method set to GET
    • +
    • Method set to PUT
    • URL set to the URL of the Property resource
    • -
    • Accept header set to - application/json
    • -
    -
    -
    - -
    GET /things/lamp/properties/on HTTP/1.1
    -Host: mythingserver.com
    -Accept: application/json
    -
    -
    -

    If a Web Thing receives an HTTP request following - the format above and the Consumer has permission to - read the corresponding property, then upon successfully - reading the value of the property it MUST send an HTTP response with:

    -
      -
    • Status code set to 200
    • Content-Type header set to application/json
    • -
    • A body with the value of the property serialized - in JSON
    • +
    • A body with a requested new value for the + property serialized in JSON
    -
    +
    HTTP/1.1 200 OK
    -Content-Type: application/json
    +            "hljs javascript">PUT /things/lamp/properties/on HTTP/1.1
     false
    @@ -2546,6 +4716,93 @@
    1.1 Host: mythingserver.com Content-Type: application/json +true + +
    +

    If a Web Thing receives an HTTP request following + the format above and the Consumer has permission to + write the corresponding property, then upon + successfully writing the value of the property it + MUST send an HTTP response + with:

    +
      +
    • Status code set to 204
    • +
    +
    +
    + +
    HTTP/1.1 204 No Content
    +
    +
    +
    +
    +
    9.2.1.3 + readallproperties
    +
    +
    +

    The URL of a Properties resource to be + used when reading the value of all properties at once + MUST be obtained from a Thing + Description by locating a + Form inside the top level + forms member for which:

    +
      +
    • Its op member contains the value + readallproperties
    • +
    • After being resolved against a base URL where + applicable, the URI + scheme [RFC3986] + of the value of its href member is + http or https +
    • +
    +
    +

    + The resolved value of the href member + MUST then be used as the URL of + the Properties resource.

    +
    +

    In order to read the value of all properties, a + Consumer MUST send an HTTP + request to a Web Thing with:

    +
      +
    • Method set to GET
    • +
    • URL set to the URL of the Properties + resource
    • +
    • Accept header set to + application/json
    • +
    +
    +
    + +
    GET /things/lamp/properties HTTP/1.1
     true
    : application/json
    -

    If a Web Thing receives an HTTP request following - the format above, then upon successfully reading the - values of all the readable properties to which the - Consumer has permission to access, it MUST send an HTTP response with:

    + "http-basic-profile-protocol-binding-readallproperties-5"> +

    If a Web Thing receives an HTTP request following + the format above, then upon successfully reading the + values of all the readable properties to which the + Consumer has permission to access, it MUST send an HTTP response with:

    +
      +
    • Status code set to 200
    • +
    • Content-Type header set to + application/json
    • +
    • A body with the values of all readable properties + serialized in JSON, as an object keyed by property + name
    • +
    +
    +
    + +
    HTTP/1.1 200 OK
    +"hljs-punctuation">: application/json
    +
    +
    +

    If a Web Thing receives an HTTP request following + the format above, then upon successfully reading the + values of all the readable properties to which the + Consumer has permission to access, it MUST send an HTTP response with:

    +
      +
    • Status code set to 200
    • +
    • Content-Type header set to + application/json
    • +
    • A body with the values of all readable properties + serialized in JSON, as an object keyed by property + name
    • +
    +
    +
    + +
    HTTP/1.1 200 OK
    +Content-Type: application/json
    +{
    +  "on": false,
    +  "level": 100
    +}
    +
    +
    +
    +
    +
    9.2.1.4 + writemultipleproperties
    +
    +
    +

    The URL of a Properties resource to be + used when writing the value of multiple properties at + once MUST be obtained from a + Thing Description by locating a + Form inside the top level + forms member for which:

    +
      +
    • Its op member contains the value + writemultipleproperties
    • +
    • After being resolved against a base URL where + applicable, the URI + scheme [RFC3986] + of the value of its href member is + http or https +
    • +
    +
    +

    + The resolved value of the href member + MUST then be used as the URL of + the Properties resource.

    +
    +

    In order to write the value of multiple properties + at once, a Consumer MUST send + an HTTP request to a Web Thing with:

      -
    • Status code set to 200
    • +
    • Method set to PUT
    • +
    • URL set to the URL of the Properties + resource
    • Content-Type header set to application/json
    • -
    • A body with the values of all readable properties - serialized in JSON, as an object keyed by property - name
    • +
    • A body with requested new values for the writable + properties serialized in JSON, as an object keyed by + property name
    -
    +
    HTTP/1.1 200 OK
    -Content-Type: application/json
    -{
    -  "on": false,
    -  "level": 100
    +            "hljs css">PUT /things/lamp/properties HTTP/1.1
     }
    @@ -2853,6 +5203,119 @@
    POST /things/lamp/actions/fade HTTP/1.1 +} + +
    +

    If a Web Thing receives an HTTP request following + the format above, then upon successfully writing the + values of the requested writable properties it + MUST send an HTTP response + with:

    +
      +
    • Status code set to 204
    • +
    +
    +
    + +
    HTTP/1.1 204 No Content
    +
    +
    +
    +
    + Note +
    +
    +

    The readmultipleproperties operation is + excluded due to the complexities of the request payload + format and because it doesn't add much functionality + over readproperty and + readallproperties. + writeallproperties is excluded because it + is just a special case of + writemultipleproperties.

    +
    +
    +
    +
    +
    +

    9.2.2 + Actions

    +
    +
    +
    +
    9.2.2.1 + invokeaction
    +
    +
    +

    The URL of an Action resource to be + used when invoking an action MUST be obtained from a Thing + Description by locating a + Form inside the corresponding + ActionAffordance for which:

    +
      +
    • After defaults have been applied, the value of + its op member is + invokeaction
    • +
    • After being resolved against a base URL where + applicable, the URI + scheme [RFC3986] + of the value of its href member is + http or https +
    • +
    +
    +

    The + resolved value of the href member MUST then be used as the URL of the + Action resource.

    +
    +

    In order to invoke an action on a Web Thing, a + Consumer MUST send an HTTP + request to the Web Thing with:

    +
      +
    • Method set to POST
    • +
    • URL set to the URL of the Action + resource
    • +
    • Accept header set to + application/json
    • +
    • Content-Type header set to + application/json
    • +
    • A body with an input to the action, if any, + serialized in JSON
    • +
    +
    +
    + +
    POST /things/lamp/actions/fade HTTP/1.1
     Host: mythingserver.com
     Content-Type: application/json
     Accept: application/json
    @@ -2983,7 +5446,7 @@ 
    mandatory + "http://www.w3.org/TR/2012/REC-xmlschema11-2-20120405/#string"> string (one of pending, running, completed or @@ -3120,6 +5583,53 @@
    HTTP/1.1 200 OK Content-Type: application/json
    +
    +
    +
    +
    +
    9.2.2.1.3 Asynchronous Action + Response
    +
    +
    +

    If providing an Asynchronous Action Response, a + Web Thing MUST send an HTTP + response containing the URL of an + ActionStatus resource, the URI + scheme [RFC3986] + of which MUST resolve to + http or https. The response + MUST have:

    +
      +
    • Status code set to 201
    • +
    • Content-Type header set to + application/json
    • +
    • Location header set to the URL of + the ActionStatus resource
    • +
    • A body containing an ActionStatus + object serialized in JSON, with its + href member set to the URL of the + ActionStatus resource +
    • +
    +
    +
    + +
    HTTP/1.1 201 CREATED
     "hljs-punctuation">: application/json
    @@ -3179,6 +5689,66 @@
    "/things/lamp/actions/fade/123e4567-e89b-12d3-a456-426655", "timeRequested": "2021-11-10T11:43:19.135Z" +} + +
    +
    +
    +
    +
    9.2.2.2 + queryaction
    +
    +

    A queryaction operation is used to query + the current state of an ongoing action request.

    +

    A + Web Thing which provides Asynchronous Action + Responses to an invokeaction operation + on an Action MUST + also support queryaction operations on that + same Action. A + Web Thing which only provides Synchronous Action Responses + to an invokeaction operation on an + Action SHOULD NOT + support queryaction operations on that same + Action.

    +

    The + URL of an ActionStatus resource to be used + in a queryaction operation MUST be obtained from the + Location header of an Asynchronous Action + Response, or the href member of the + ActionStatus object in its body.

    +
    +

    In order to query the status of an action request, a + Consumer MUST send an HTTP + request to a Web Thing with:

    +
      +
    • Method set to GET
    • +
    • URL set to the URL of the + ActionStatus resource
    • +
    • Accept header set to + application/json
    • +
    +
    +
    + +
    GET /things/lamp/actions/fade/123e4567-e89b-12d3-a456-426655
     }
    @@ -3240,6 +5810,34 @@
    GET /things/lamp/actions/fade/123e4567-e89b-12d3-a456-426655 Host: mythingserver.com +Accept: application/json + +
    +

    If a Web Thing receives an HTTP request following + the format above and the Consumer has permission to + query the corresponding ActionStatus + resource, then upon successfully reading the status of + the action request it MUST + send an HTTP response with:

    +
      +
    • Status code set to 200
    • +
    • Content-Type header set to + application/json
    • +
    • A body containing an ActionStatus + object representing the current status of the action + request, serialized in JSON
    • +
    +
    +
    + +
    HTTP/1.1 200 OK
     Accept: application/json
    "running", "timeRequested": "2021-11-10T11:43:19.135Z" +} +
    +

    If + the queried action failed to execute, then the + status member of the + ActionStatus object MUST be set to + "failed". If + the queried action failed to execute, then the + error member MAY + provide additional error information conforming to the + Problem Details format [RFC7807].

    +
    + +
    HTTP/1.1 200 OK
     }

    "2021-11-10T11:43:19.135Z", "timeEnded": "2021-11-10T11:43:20.513Z" +} + +

    +
    +
    +
    9.2.2.3 + cancelaction
    +
    +

    A cancelaction operation is used to + cancel an ongoing Action request.

    +

    A + Web Thing which provides Asynchronous Action + Responses to an invokeaction operation + on an Action MAY + also support cancelaction operations on that + same Action. A + Web Thing which only provides Synchronous Action Responses + to an invokeaction operation on an + Action SHOULD NOT + support cancelaction operations on that same + Action.

    +

    The + URL of an ActionStatus resource to be used + in a cancelaction operation MUST be obtained from the + Location header of an Asynchronous Action + Response, or the href member of the + ActionStatus object in its body.

    +
    +

    In order to cancel an action request, a Consumer + MUST send an HTTP request to a + Web Thing with:

    +
      +
    • Method set to DELETE
    • +
    • URL set to the URL of the + ActionStatus resource
    • +
    +
    +
    + +
    DELETE /things/lamp/actions/fade/123e4567-e89b-12d3-a456-426655 HTTP/1.1
     }
    @@ -3463,13 +6146,133 @@
    21
    GET /things/lamp/actions HTTP/1.1
    -Host: mythingserver.com
    -AcceptGET /things/lamp/actions HTTP/1.1
    +"hljs-punctuation">: mythingserver.com
    + +
    +

    If a Web Thing receives an HTTP request following + the format above and the Consumer has permission to + cancel the corresponding Action request, + then upon successfully cancelling Action + it MUST send an HTTP response + with:

    +
      +
    • Status code set to 204
    • +
    +
    +
    + +
    HTTP/1.1 204 No Content
    +
    +
    +
    +
    +
    9.2.2.4 + queryallactions
    +
    +
    +

    The URL of an Actions resource to be + used when querying the status of all ongoing action + requests MUST be obtained from + a Thing Description by locating a + Form inside the top level + forms member for which:

    +
      +
    • Its op member contains the value + queryallactions
    • +
    • After being resolved against a base URL where + applicable, the URI + scheme [RFC3986] + of the value of its href member is + http or https +
    • +
    +
    +

    The + resolved value of the href member MUST then be used as the URL of the + Actions resource.

    +
    +

    In order to query the status of all ongoing action + requests, a Consumer MUST send + an HTTP request to a Web Thing with:

    +
      +
    • Method set to GET
    • +
    • URL set to the URL of the Actions + resource
    • +
    • Accept header set to + application/json
    • +
    +
    +
    + +
    GET /things/lamp/actions HTTP/1.1
    +Host: mythingserver.com
    +Accept: application/json
    +
    +
    +

    If a Web Thing receives an HTTP request following + the format above, then upon successfully retreiving the + status of all ongoing action requests to which the + Consumer has permission to access, it MUST send an HTTP response with:

    +
      +
    • Status code set to 200
    • +
    • Content-Type header set to + application/json
    • +
    • A body containing an object, keyed by + Action name, with the value of each + object member being an array of ActionStatus objects + representing the action requests, serialized in JSON. +
    • +
    +
    +

    Each + array in the result object MUST + be sorted in reverse chronological order such that the + most recent action request appears first.

    +
    + +
    HTTP/1.1 200 OK
     "hljs-punctuation">: application/json
    10. Protocol Binding for observing properties and listening for events using Server-Sent Events [HTML].

    + data-link-type="biblio" href="#bib-eventsource" title= + "Server-Sent Events">EVENTSOURCE].

    This profile may be used in conjunction with the HTTP Basic Profile in order to provide operations to read and write properties and invoke, @@ -3632,8 +6435,8 @@

    wot-architecture11] using Server-Sent Events [HTML].

    + data-link-type="biblio" href="#bib-eventsource" title= + "Server-Sent Events">EVENTSOURCE].

    A Consumer or Web Thing conforming to the HTTP SSE Profile MUST follow the Server-Sent Events [HTML] + "#bib-eventsource" title= + "Server-Sent Events">EVENTSOURCE] specification to open a connection with the Web Thing at the URL of the Property resource.

    This involves the Consumer sending an HTTP request to @@ -3919,7 +6723,8 @@

    MUST follow the Server-Sent Events [HTML] + "#bib-eventsource" title= + "Server-Sent Events">EVENTSOURCE] specification to maintain an open connection with the Consumer and push a property value to the Consumer each time the value of the specified property @@ -3950,9 +6755,9 @@
    MUST send a property value to the Consumer using the event stream format in the Server-Sent Events [HTML] specification. - EVENTSOURCE] + specification. For each message sent, the Web Thing MUST set the event field to @@ -3990,9 +6795,9 @@
    MUST re-establish the connection following the steps outlined in the Server-Sent Events specification [HTML]. EVENTSOURCE]. + Once the connection is re-established the Web Thing SHOULD, if possible, send any missed @@ -4015,8 +6820,8 @@
    HTML].

    + "#bib-eventsource" title= + "Server-Sent Events">EVENTSOURCE].

    close() method on an EventSource [HTML] object.

    + data-link-type="biblio" href="#bib-eventsource" title= + "Server-Sent Events">EVENTSOURCE] + object.

    @@ -4092,10 +6898,10 @@
    MUST follow the Server-Sent Events [HTML] specification to open a - connection with the Web Thing at the URL of the - properties resource.

    + data-link-type="biblio" href="#bib-eventsource" title= + "Server-Sent Events">EVENTSOURCE] + specification to open a connection with the Web Thing at + the URL of the properties resource.

    This involves the Consumer sending an HTTP request to the Web Thing with:

      @@ -4156,11 +6962,12 @@
      MUST follow the Server-Sent Events [HTML] specification to - maintain an open connection with the Consumer and push - new property values to the Consumer for all properties - for which it has permission to observe.

      + data-link-type="biblio" href="#bib-eventsource" title= + "Server-Sent Events">EVENTSOURCE] + specification to maintain an open connection with the + Consumer and push new property values to the Consumer for + all properties for which it has permission to + observe.

      This involves the Web Thing initially sending an HTTP response to the Consumer with:

        @@ -4187,7 +6994,8 @@
        MUST send the new property value to the Consumer using the event stream format in the Server-Sent Events [HTML] + href="#bib-eventsource" title= + "Server-Sent Events">EVENTSOURCE] specification. For each message sent, the Web Thing MUST re-establish the connection following the steps outlined in the Server-Sent Events specification [HTML]. EVENTSOURCE]. + Once the connection is re-established the Web Thing SHOULD, if possible, send any @@ -4255,8 +7064,9 @@
        HTML].

        + "bibref" data-link-type="biblio" href="#bib-eventsource" + title= + "Server-Sent Events">EVENTSOURCE].

        close() method on an EventSource [HTML] object.

        + data-link-type="biblio" href="#bib-eventsource" title= + "Server-Sent Events">EVENTSOURCE] + object.

        @@ -4297,9 +7108,10 @@

        10.2.2

        The HTTP SSE Profile uses Server-Sent Events [HTML] as a - mechanism for Consumers to subscribe to events emitted by a - Web Thing.

        + "#bib-eventsource" title= + "Server-Sent Events">EVENTSOURCE] as a mechanism + for Consumers to subscribe to events emitted by a Web + Thing.

        10.2.2

        Consumers are not required to implement the + "https://www.w3.org/TR/eventsource/#the-eventsource-interface"> EventSource JavaScript API from the Server-Sent Events specification in order to conform with this profile. Any programming language may be used to @@ -4361,7 +7173,8 @@

        MUST follow the Server-Sent Events [HTML] + "#bib-eventsource" title= + "Server-Sent Events">EVENTSOURCE] specification to open a connection with the Web Thing at the URL of the Event resource.

        This involves the Consumer sending an HTTP request to @@ -4427,7 +7240,8 @@

        MUST follow the Server-Sent Events [HTML] + "#bib-eventsource" title= + "Server-Sent Events">EVENTSOURCE] specification to maintain an open connection with the Consumer and push event data to the Consumer as events of the specified type are emitted.

        @@ -4457,7 +7271,8 @@
        MUST send event data to the Consumer using the event stream format in the Server-Sent Events [HTML] + href="#bib-eventsource" title= + "Server-Sent Events">EVENTSOURCE] specification. For each message sent, the Web Thing MUST re-establish the connection following the steps outlined in the Server-Sent Events specification [HTML]. EVENTSOURCE]. + Once the connection is re-established the Web Thing SHOULD, if possible, send any missed @@ -4525,8 +7340,8 @@
        HTML].

        + "#bib-eventsource" title= + "Server-Sent Events">EVENTSOURCE].

        close() method on an EventSource [HTML] object.

        + data-link-type="biblio" href="#bib-eventsource" title= + "Server-Sent Events">EVENTSOURCE] + object.

        @@ -4604,10 +7420,10 @@
        MUST follow the Server-Sent Events [HTML] specification to open a - connection with the Web Thing at the URL of the events - resource.

        + data-link-type="biblio" href="#bib-eventsource" title= + "Server-Sent Events">EVENTSOURCE] + specification to open a connection with the Web Thing at + the URL of the events resource.

        This involves the Consumer sending an HTTP request to the Web Thing with:

          @@ -4668,11 +7484,12 @@
          MUST follow the Server-Sent Events [HTML] specification to - maintain an open connection with the Consumer and push - event data to the Consumer for all event types for which - it has permission to subscribe.

          + data-link-type="biblio" href="#bib-eventsource" title= + "Server-Sent Events">EVENTSOURCE] + specification to maintain an open connection with the + Consumer and push event data to the Consumer for all + event types for which it has permission to + subscribe.

          This involves the Web Thing initially sending an HTTP response to the Consumer with:

            @@ -4699,7 +7516,8 @@
            MUST send event data to the Consumer using the event stream format in the Server-Sent Events [HTML] + "#bib-eventsource" title= + "Server-Sent Events">EVENTSOURCE] specification. For each message sent, the Web Thing MUST re-establish the connection following the steps outlined in the Server-Sent Events specification [HTML]. EVENTSOURCE]. + Once the connection is re-established the Web Thing SHOULD, if possible, send any @@ -4767,8 +7586,8 @@
            HTML].

            + data-link-type="biblio" href="#bib-eventsource" title= + "Server-Sent Events">EVENTSOURCE].

            close() method on an EventSource [HTML] object.

            + data-link-type="biblio" href="#bib-eventsource" title= + "Server-Sent Events">EVENTSOURCE] + object.

            @@ -5147,6 +7967,158 @@
            POST /things/lamp/events/overheated HTTP/1.1 +} +
            +

    + +
    +
    +

    11.2 + Identifier

    +
    +

    In order to denote that a given + Web + Thing conforms to the HTTP Webhook Profile, its Thing + Description MUST have a profile + member [wot-thing-description] + with a value of + https://www.w3.org/2022/wot/profile/http-webhook/v1.

    +
    +
    + Note +
    +
    +

    Note that the profile member is an array + that may contain multiple profile entries, which + indicates that a Web Thing conforms to all of the + profiles in that array.

    +
    +
    +
    +
    +
    +

    11.3 + Message Format

    +
    +

    Event notification + messages MUST comply with the + following data schema.

    +
    +
    + Editor's note +
    +

    TODO: Describe data and dataResponse + schemas.

    +
    +
    +
    +
    +

    11.4 Protocol Binding

    +
    +

    This section defines a protocol binding which describes + how a Consumer + and a Web + Thing communicate using Webhook Events.

    +

    A Consumer or Web + Thing conforming to the HTTP Webhook Profile MUST implement this protocol + binding.

    +
    +
    +

    11.4.1 Operations

    +
    +
    +
    +
    11.4.1.1 + subscribeevent
    +
    +
    +

    The URL of an Event resource to be used + when subscribing to an event MUST be obtained from a Thing + Description by locating a + Form inside the corresponding + EventAffordance for which:

    +
      +
    • After defaults have been applied, its + op member contains the value + subscribeevent
    • +
    • After being resolved against a base URL where + applicable, the URI + scheme [RFC3986] + of the value of its href member is + http or https +
    • +
    • Its subprotocol member has a value + of webhook
    • +
    +
    +

    The + resolved value of the href member MUST then be used as the URL of the + Event resource.

    +

    In + order to subscribe to an event, a Consumer MUST provide the listener URL in the + request payload of the subscribe operation + of the Event resource.

    +

    This involves the Consumer sending an HTTP request to + the Web Thing with:

    +
      +
    • Method set to POST
    • +
    • URL set to the URL of the Event + resource
    • +
    • Accept header set to + application/json
    • +
    • A body with a subscription request payload, + serialized in JSON.
    • +
    +

    The subscription payload contains the URI for the + event message listener in the field with the + callbackURI key.

    +
    + +
      POST /things/lamp/events/overheated HTTP/1.1
       Host: mythingserver.com
       Content-Type: application/json
       Accept: application/json
    @@ -5156,36 +8128,113 @@ 

    If - a Web Thing receives an HTTP request following the format - above and the Consumer has permission to subscribe to the - corresponding event, then it MUST send event messages to the - Consumer as events of the specified type are - emitted.

    -

    This involves the Web Thing initially sending an HTTP - response to the Consumer with:

    + "http-webhook-profile-protocol-binding-subscribeevent-5">If + a Web Thing receives an HTTP request following the format + above and the Consumer has permission to subscribe to the + corresponding event, then it MUST send event messages to the + Consumer as events of the specified type are + emitted.

    +

    This involves the Web Thing initially sending an HTTP + response to the Consumer with:

    +
      +
    • Status code set to 200
    • +
    • Content-Type header set to + application/json
    • +
    • Accept header set to + application/json
    • +
    +
    + +
    HTTP/1.1 200 OK
    +}
    +
    +

    If + a Web Thing receives an HTTP request following the format + above and the Consumer has permission to subscribe to the + corresponding event, then it MUST send event messages to the + Consumer as events of the specified type are + emitted.

    +

    This involves the Web Thing initially sending an HTTP + response to the Consumer with:

    +
      +
    • Status code set to 200
    • +
    • Content-Type header set to + application/json
    • +
    • Accept header set to + application/json
    • +
    +
    + +
    HTTP/1.1 200 OK
    +Content-Type: application/json
    +{
    +    subscriptionId: 1234-4544-1211
    +}
    +
    +

    Whenever + an event of the specified type occurs, the Web Thing + MUST send event data to the + Consumer using the event payload format defined in + section + ["#sec-http-webhook-profile-protocol-binding-events-notification"].

    +
    +
    +
    +
    11.4.1.2 + unsubscribeevent
    +
    +

    + In order to unsubscribe to an event, a Consumer + MUST provide the + subscriptionID in the data payload of the + unsubscribe operation of the + Event resource.

    +

    This involves the Consumer sending an HTTP request to + the Web Thing with:

      -
    • Status code set to 200
    • -
    • Content-Type header set to - application/json
    • +
    • Method set to DELETE
    • +
    • URL set to the URL of the Event + resource followed by the subscriptionId of + a valid subscription
    • Accept header set to application/json
    -
    +
    - Example - 46 + Example + 47: + Unsubscribe using subscriptionId
    HTTP/1.1 200 OK
    -Content-Type: application/json
    -{
    -    subscriptionId: 1234-4544-1211
    +            "hljs http">DELETE /things/lamp/events/overheated/1234-4544-1211 HTTP/1.1
     }

    DELETE /things/lamp/events/overheated/1234-4544-1211 HTTP/1.1 Host: mythingserver.com +

    +
    +
    +
    +
    11.4.1.3 + subscribeallevents
    +
    +
    +

    The URL of an Events resource to be + used when subscribing to all events emitted by a Web + Thing MUST be obtained from a + Thing Description by locating a + Form inside the top level + forms member of a Thing Description + for which:

    +
      +
    • Its op member contains the value + subscribeallevents
    • +
    • After being resolved against a base URL where + applicable, the URI + scheme [RFC3986] + of the value of its href member is + http or https +
    • +
    • Its subprotocol member has a value + of webhook
    • +
    +
    +

    + The resolved value of the href member + MUST then be used as the URL of + the events resource.

    +
    +

    In order to subscribe to all events emitted + by a Web Thing, a Consumer MUST send an HTTP request to the Web + Thing with:

    +
      +
    • Method set to POST
    • +
    • URL set to the URL of the events resource
    • +
    • Accept header set to + application/json
    • +
    • Request Payload contains a + JSON object with a subscription request + payload.
    • +
    +
    +
    + +
    POST /things/lamp/events HTTP/1.1
     "hljs-punctuation">: mythingserver.com
    @@ -5315,6 +8435,35 @@
    { callbackURI: "http://myConsumer.com/myEventListener" +} + +

    + If a Web Thing receives an HTTP request following the + format above, then it MUST send + event messages to the Consumer for all event + types for which it has permission to + subscribe.

    +

    This involves the Web Thing initially sending an HTTP + response to the Consumer with:

    +
      +
    • Status code set to 200
    • +
    • Content-Type header set to + application/json
    • +
    • Accept header set to + application/json
    • +
    • Response payload contains a JSON object with a + subscriptionId.
    • +
    +
    + +
    HTTP/1.1 200 OK
     }

    1234-4544-1211 +} + +

    + Whenever an event occurs, the Web Thing MUST send event data to the Consumer using + the event payload format defined in section Message + Format.

    +

    + If the connection between the Web Thing and the Consumer + drops, the Web Thing MUST + re-establish the connection.

    +

    + Once the connection is re-established the Web Thing + SHOULD, if possible, send any + missed events which occurred since the last successful + event notification.

    +
    +
    +
    +
    11.4.1.4 + unsubscribeallevents
    +
    +

    + In order to unsubscribe from all events, a Consumer + MUST invoke the + unsubscribe operation of the + Event resource.

    +

    This involves the Consumer sending an HTTP request to + the Web Thing with:

    +
      +
    • Method set to DELETE
    • +
    • URL set to the URL of the Event + resource
    • +
    • Accept header set to + application/json
    • +
    +
    +
    + Example + 50: + Unsubscribe all using callbackURI +
    +
    DELETE /things/lamp/events HTTP/1.1
     }

    https://tc39.es/ecma262/multipage/ +

    [EVENTSOURCE]
    +
    + Server-Sent + Events. Ian Hickson. W3C. 28 January 2021. W3C + Recommendation. URL: https://www.w3.org/TR/eventsource/ +
    [H2020-CREATE-IoT]
    https://european-iot-pilots.eu/wp-content/uploads/2018/11/D06_02_WP06_H2020_CREATE-IoT_Final.pdf
    -
    [HTML]
    -
    - HTML - Standard. Anne van Kesteren; Domenic Denicola; - Ian Hickson; Philip Jägenstedt; Simon Pieters. WHATWG. - Living Standard. URL: https://html.spec.whatwg.org/multipage/ -
    [WOT-ARCHITECTURE]
    } anchors + * @param {HTMLElement} panel + * @param {HTMLElement} dfn + * @returns + */ + function createTrapListener(anchors, panel, dfn) { /** * * @param {NodeListOf} anchors @@ -6269,7 +9514,10 @@

    + } + })() + + diff --git a/publication/2-wd/static.html b/publication/2-wd/static.html index b5505da..eb27624 100644 --- a/publication/2-wd/static.html +++ b/publication/2-wd/static.html @@ -46,7 +46,6 @@ - Web of Things (WoT) Profile - - - - - - "publishISODate": "2023-01-18T00:00:00.000Z", - "generatedSubtitle": "W3C Working Draft 18 January 2023" - } - -
    {
    -
    -  
    -

    -

    Web of Things (WoT) Profile

    -

    W3C Working Draft -

    -
    - - More details about this document - -
    -
    This version:
    -
    - https://www.w3.org/TR/2023/WD-wot-profile-20230118/ -
    -
    Latest published version:
    -
    - https://www.w3.org/TR/wot-profile/ -
    -
    Latest editor's draft:
    -
    - https://w3c.github.io/wot-profile/ -
    -
    History:
    -
    - https://www.w3.org/standards/history/wot-profile -
    -
    - Commit - history -
    -
    Editors:
    -
    - Michael Lagally (Oracle - Corp.) -
    -
    Ben Francis - (Invited Expert)
    -
    - Michael McCool (Intel - Corp.) -
    -
    - Ryuichi Matsukura - (Fujitsu Ltd.) -
    -
    - Sebastian Kaebisch - (Siemens AG) -
    -
    - Tomoaki Mizushima - (Internet Research Institute, - Inc.) -
    -
    Feedback:
    -
    - GitHub - w3c/wot-profile (pull - requests, new - issue, open - issues) -
    -
    - - public-wot-wg@w3.org with subject line - [wot-profile] … message topic … - (archives) -
    -
    Contributors
    -
    - In - the GitHub repository -
    -
    Repository
    -
    - We are on - GitHub -
    -
    - File - a bug -
    -
    - Contribute -
    -
    -
    - -
    -
    -
    -

    Abstract

    -

    The WoT Profile Specification defines a Profiling - Mechanism and an HTTP Basic Profile, which enables - out of the box interoperability among things and - devices. Out of the box interoperability implies, that - devices can be integrated into various application scenarios - without deep level adaptations. Typically only minor - configuration operations are necessary (such as entering a - network key, or IP address) to use the device in a certain - scenario. These actions can be done by anyone without specific - training.

    The HTTP Basic Profile defines a set of - constraints and rules, which compliant thing - descriptions have to adopt to guarantee interoperability. -

    These rules are prescriptive, to ensure that compliant - implementations satisfy the semantic guarantees implied by - them. We call this set of rules a Profile.

    -

    The WoT Profile Specification as defined in - this document serves two purposes:

    -
      -
    • It defines a generic Profiling Mechanism which - provides a mechanism to describe a profile in an unambiguous - way. This mechanism can be used to define additional - profiles.
    • -
    • In addition, it defines a HTTP Basic Profile of the - Thing Description, which contains protocol binding rules for - HTTP. -

      The normative HTTP Basic Profile is - complemented by two informative profiles for - events: The HTTP SSE - Profile and the HTTP Webhook Profile.

      -

      In the current version of this document these event - bindings are provided in informative sections, to - illustrate how these event mechanisms could be supported in - other profiles.

      -

      It is planned that future versions of this document - normatively define these event mechanisms.

      -

      This specification defines a set of normative - constraints that apply to all profiles defined by - this document.

      -

      A TD that is compliant to the HTTP - Basic Profile MUST adhere to both - the common constraints and the protocol binding.

      -
    • -
    -

    Devices that constrain their use of the Thing Description to - the HTTP Basic Profile can interoperate with each other - out-of-the-box.

    -

    Note that the HTTP Basic Profile is not exclusive. Device - implementers are free to adopt other features of the Thing - Description that go beyond the constraints of the HTTP Basic - Profile, however the interoperability guarantees of the HTTP - Basic Profile hold only for the HTTP Basic Profile subset.

    -

    Future versions of this document may contain other profiles, - e.g. a profile for digital twins and a profile for resource - constrained devices.

    -
    -
    -

    Motivation for a - Profile

    + "@context": "https://www.w3.org/2022/wot/td/v1.1", + "id": "urn:dev:ops:32473-WoTLamp-1234", + "profile": "https://www.w3.org/2022/wot/profile/http-basic/v1", + "title": "My Lamp", + "description": "A web connected lamp", + ... +}
    + +
    + -

    -

    The W3C WoT Thing Architecture - [wot-architecture11] - and WoT Thing Description [wot-thing-description11] - define a powerful description mechanism and a format to - describe myriads of very different devices, which may be - connected over various protocols. The format is very flexible - and open and puts very few normative requirements on devices - that implement it.

    -

    However, this flexibility de-facto prevents - interoperability, since, without additional - rules, it allows implementers to make many - choices that do not provide guarantees of - common behavior between implementations.

    -
    -
    -

    Status of This Document

    -

    This section describes the status of this document at - the time of its publication. A list of current W3C publications and the - latest revision of this technical report can be found in the - W3C technical reports - index at https://www.w3.org/TR/.

    -

    This document was published by the Web of Things Working - Group as a Working Draft using the Recommendation - track.

    -

    Publication as a Working Draft does not imply endorsement by - W3C and its - Members.

    -

    This is a draft document and may be updated, replaced or - obsoleted by other documents at any time. It is inappropriate - to cite this document as other than work in progress.

    -

    This document was produced by a group operating under the - W3C Patent Policy. - W3C maintains a - public list of any - patent disclosures made in connection with the deliverables - of the group; that page also includes instructions for - disclosing a patent. An individual who has actual knowledge of - a patent which the individual believes contains Essential - Claim(s) must disclose the information in accordance with - section - 6 of the W3C - Patent Policy.

    -

    This document is governed by the 2 November 2021 - W3C Process - Document.

    -
    - -
    -
    -

    1. - Introduction

    -
    -

    The W3C WoT - Architecture [wot-architecture11] - and the WoT Thing Description [wot-thing-description11] - have been developed as a versatile format, that allows - describing the interactions between multiple devices and - protocols.

    -

    This flexibility permits an easy integration of new device - types and protocols, however it risks interoperability, since - there are no guarantees that two devices which are - formally spec-compliant, will be able to communicate.

    -

    To increase adoption of the WoT specifications, - interoperability between on premise devices, edge devices and - the cloud is essential. Even if every manufacturer is - implementing the current Thing Description specification in - full flexibility, there is no interoperability guarantee; many - choices are still left to the implementations and there are - very few normative requirements that a device has to - fulfill.

    -
    -
    -

    1.1 Deployment Scenarios

    -
    -

    A Thing Description can be used in two fundamentally - different deployment scenarios:

    -
      -
    • a "brown-field" scenario, where it is created to - describe the interactions with existing systems.
    • -
    • a "green-field" scenario, where a device model and a - thing description are developed together.
    • -
    -

    For green field deployments, where the implementations are - being carried out and corresponding thing descriptions are - being created, it is easier to achieve full interoperability - by using a small, extensible HTTP Basic Profile.

    -

    In the brown field area, due to the nature of existing - deployments and protocols, a broad spectrum of variations and - potentially high complexity of thing descriptions inhibits - interoperability and will most likely lead to additional - profiles of the WoT Thing - Description and domain-specific thing consumer - implementations.

    -

    The WoT HTTP Basic Profile can be used by green field - deployments and gives guidance to new implementers of the WoT - specifications.

    -
    -
    -
    -

    - 1.2 Summary of Use Cases and - Requirements

    -
    -

    A set of over 30 use cases for the Web of Things were - contributed by stakeholders from multiple industries for - various application domains. These have been published in the - WoT Use Cases and Requirements document [wot-usecases].

    -

    Based on these use cases a set of requirements have been - derived which drive the development of the W3C Web of Things - specification family. Several of these domains require easy - integration of devices from multiple vendors, in other words, - out-of-the-box interoperability. However, the descriptive - approach taken by the WoT specifications generally leads to a - large variety of different protocols and data formats, which - can work against out-of-the box interoperability.

    -

    For example, a WoT Thing Description (TD) can in theory - include a description based on a networking protocol unknown - to a device that wishes to connect to it. To ensure - interoperability without additional customization (e.g. by - writing software or performing complex setup or configuration - steps), the range of such choices needs to be limited to a - finite set so that a consumer of a Thing Description can be - sure it will be able to interact with any possible Thing. A - finite set of customization choices is also important for - implementing devices with a fixed code base. Defining such - constraints leads to the profile mechanism and the HTTP Basic - Profile.

    -

    In addition to multiple vertical use cases that will use - HTTP(S) for their implementations, there are horizontal use - cases that are addressed by this profile specification. The - primary focus is to enable Multi-Vendor system integration - with out of the box interoperability.

    -
    -
    -

    - 1.2.1 Multi-Vendor System - Integration - Out of the box - interoperability

    -
    Users of devices want to process data from all - devices that conform to a class of devices in a uniform - way. They need a guarantee that they are able to correctly - interact with all affordances of the Thing that complies - with this class of devices. Different interpretations of - the same Thing Description, that lead to different - behaviour, should not be possible. Users want to integrate - devices in existing scenarios out of the box, i.e. with - close to zero configuration tasks. -
    -
    -
    -
    -

    1.3 - Why a Profile?

    -
    -

    During the recent WoT Plugfests there were many de-facto - agreements on the use of a small constrained subset of - interaction patterns and protocol choices. These de-facto - agreements select a common subset of the WoT Thing - Description, based on proven interoperability among - manufacturers.

    -

    The HTTP Basic Profile contains - additional normative requirements that MUST be satisfied by devices to be compliant - to the profile.

    -
    - http-baseline-Profile-Picture -
    - Figure 1 WoT HTTP Basic Profile - A Subset of - Affordances -
    -
    -

    Adoption of the HTTP Basic - Profile will significantly limit the implementation - burden of device and cloud implementors.

    -

    The HTTP Basic Profile was defined with the following main - goals:

    -
      -
    • guarantee interoperability among all implementations of - the profile.
    • -
    • limit the implementation complexity.
    • -
    -

    It makes choices on the required metadata fields as well - as the supported interactions and protocol endpoints. It - introduces some constraints on data schemas for properties - and actions which are required for resource constrained - devices in real-world deployments. The format does not forbid - the use of additional elements of the WoT Thing - Description for vendor specific extensions, however this - will impact interoperability.

    -
    -
    -
    -

    1.4 Out-of-the-box - interoperability

    -
    -

    Devices, which implement the HTTP Basic Profile, are - out-of-the-box interoperable with other HTTP - Basic Profile compliant devices. Furthermore, the HTTP Basic - Profile simplifies device validation and compliance testing - since a corresponding conformance test suite can be - defined.

    -

    The following classification adopts the terminology as - described in the "H2020 – CREATE-IoT Project - - Recommendations for commonalities and interoperability - profiles of IoT platforms" [H2020-CREATE-IoT] - report. The definitions below have been adapted to reflect - the scope of the WoT profile.

    -
    -
    -

    - 1.4.1 Technical - Interoperability

    -
    -

    Technical Interoperability is usually - associated with communication protocols and the - infrastructure needed for those protocols to operate. This - implies agreeing on a common protocol (e.g. HTTP / TCP/IP) - and providing additional clarifications, where - required.

    -
    -
    -
    -

    - 1.4.2 Syntactic - Interoperability

    -
    -

    Syntactic Interoperability is usually - associated with data formats and encodings along with - techniques for compressing them. Examples for these formats - and encodings in the WoT are JSON, XML, JSON-LD, UTF-8 - payloads.

    -
    -
    -
    -

    - 1.4.3 Semantic - Interoperability

    -
    -

    Semantic Interoperability is associated with a - common understanding of the behavior of communication - partners. In the profile context, it includes a common - interpretation of (synchronous and asynchronous) action - semantics, a common event model, how to set/get multiple - properties, writable properties, a common error model and - error messages.

    -

    Domain specific ontologies, e.g. semantic interop of - automotive and medical devices exceed the scope of the - profile.

    -
    -
    -
    -

    - 1.4.4 Organisational - Interoperability

    -
    -

    Organisational Interoperability in the profile - context implies that any consumer, which conforms with a - given profile can interact with any Thing which conforms - with the same profile, without additional - customization.

    -

    Organisational Interoperability also requires commonly - agreed approaches to security, trust and privacy, i.e. a - consumer is provided access to Things only, when these - common terms and conditions are applied.

    -

    Devices created by various engineers, vendors and SDOs - that satisfy the requirements of the profile specification - can be integrated with compliant consumers without - additional customization. This works across - infrastructures, regions and cultures.

    -
    -
    -
    -
    -

    1.5 Structure of this document

    -
    -
    -
    - Editor's note -
    -
    - to be added. -
    -
    -
    -
    -
    -
    -

    2. - Conformance

    -
    -

    As well as sections marked as non-normative, all authoring - guidelines, diagrams, examples, and notes in this specification - are non-normative. Everything else in this specification is - normative.

    -

    The key words MAY, MUST, MUST NOT, - OPTIONAL, RECOMMENDED, REQUIRED, - SHOULD, and SHOULD - NOT in this document are to be interpreted as described in - BCP - 14 [RFC2119] - [RFC8174] - when, and only when, they appear in all capitals, as shown - here.

    -

    A device or consumer implementation complies with this - specification if it follows the normative statements in the - present document.

    -
    -
    -
    -

    3. - Terminology

    -
    -

    The fundamental WoT terminology such as Thing, Consumer, Thing Description (TD), WoT Thing Description, Partial TD, Thing Model (TM), Interaction Model, Interaction - Affordance, Property, Action, Event, Protocol Binding, Servient, Vocabulary, Term, Vocabulary Term, WoT Interface, - and WoT Runtime - are defined in Section - 3 of the WoT Architecture specification [WOT-ARCHITECTURE].

    -

    For convenience of the reader, we use the terms - keyword and field for the linguistic notion - vocabulary term as defined in the Thing - Description Specification.

    -

    We use the terms device and thing in an - interchangeable manner.

    -
    -
    -

    3.1 Additional Definitions

    -
    -
    -
    Profile
    -
    - A technical specification which provides a set of - assertions such that any Consumer which conforms with - the those assertions is out-of-the-box - interoperable with any Thing which also conforms with - those assertions. -
    -
    -
    -
    -
    -
    -

    4. - Profile Requirements

    -
    -

    The following requirements were identified by the WoT - profile task force and are addressed by the Profile 1.0 - specification.

    -
    -
    -

    4.1 - Interoperability

    -
    -

    This is the most important objective of the profile. A TD - Consumer satisfying the requirements of a profile should be - able to process any TD also satisfying the profile and should - be able to correctly interact with all affordances of the - Thing such a TD describes.

    This implies that a profile has - three parts: -
      -
    • Restrictions on TDs
    • -
    • Implementation requirements, constraints and behavioral - assertions for Consumers
    • -
    • Implementation requirements, constraints and behavioral - assertions on Things
    • -
    -
    -
    - Note -
    -
    - Note: The WoT HTTP Basic Profile does not prevent a TD to - have forms for additional protocols, but these can be - ignored by compliant consumers, and could be removed - without affecting profile conformance and compatibility. - This may be useful for consumers that support multiple - profiles. -
    -
    -
    -
    -
    -

    4.2 Limit and reduce complexity

    -
    -

    Complexity addresses at least the following two things to - simplify the development and reduce the implementation - effort:

    -
      -
    • Implementation complexity on a thing and consumer, e.g. - eliminating the need of RDF processing, but still - permitting semantic annotations.
    • -
    • Simplifying thing description to have fewer - variations.
    • -
    • Limiting the effort for JSON implementation.
    • -
    -
    -
    -
    -

    - 4.3 No Ambiguities, select single - choice

    -
    -

    Get rid of ambiguities, i.e. clarify specifications to - define interpretation of a TD and behavior of the thing and - consumer.

    -

    Examples are the choice of properties vs. actions, use of - PUT or POST for HTTP, observe protocols.

    -
    -
    -
    -

    4.4 Developer guidance

    -
    -

    A profile should help define what needs to be implemented. - This requirement also includes behavioral goals and - recommendations about best practice for the implementation of - Consumers and Things.

    -
    -
    -
    -

    4.5 Multiple profiles - (mechanism)

    -
    -

    The mechanism used to indicate that a TD satisfies a - profile should be general enough to indicate the TD satisfies - the requirements for multiple profiles.

    -
    -
    -
    -

    4.6 Composable profiles

    -
    -

    It should be possible to combine multiple profiles both - for production and consumption:

    -

    It should be possible to indicate that a consumer can - ingest TDs that satisfy one or more profiles, even if each - TDs individually only satisfies one profile. For example, a - Smart Building may need to use both "constrained" devices and - "unconstrained" devices. A gateway consuming TDs should be - able to ingest TDs designed for both the constrained and - unconstrained contexts.

    -

    A Thing that satisfies all the requirements for multiple - TDs (for example, a device using protocols common to two - different usage contexts) should be able to indicate - that.

    -
    -
    -
    -

    4.7 - Validatible TDs

    -
    -

    Whether or not a TD satisfies the requirements of a given - profile should be verifiable with automated tools. We can use - the existing TD JSDON Schema as a basis and reuse the - existing tooling (TD-playground)

    -
    -
    -
    -

    4.8 Identification of profiles

    -
    -

    There should be a mechanism to identify which profiles a - TD satisfies. This mechanism should be intrinsic to a TD, - i.e. be in-band.

    -
    -
    -
    -

    - 4.9 Finite set of features and - capabilities

    -
    -

    A profile should limit the number of options, for example - the set of possible protocols, to a finite set, so that a - consumer can consume any TD in a given profile with a finite - and static code base.

    -
    -
    -
    -
    -

    5. - Profiling Mechanism

    -
    -

    In order to conform with a profile, a - Web - Thing MUST conform with all the - normative statements in the profile's specification.

    -

    In order to denote that a given - Web - Thing conforms to one or more profiles, its Thing - Description MUST include a profile - member [wot-thing-description11]. - The - value of the profile member MUST be set to either a valid URI - [RFC3986] - identifying a single profile, or an array of valid URIs - identifying multiple profiles.

    -

    In order to use a profile - member in a Thing Description, the @context member - MUST contain the anyURI - https://www.w3.org/2022/wot/td/v1.1 in order to - denote that the document is using version 1.1 of the Thing - Description specification. [wot-thing-description11].

    -
    - -
    {
    -  "@context": "https://www.w3.org/2022/wot/td/v1.1",
    -  "id": "urn:dev:ops:32473-WoTLamp-1234",
    -  "profile": "https://www.w3.org/2022/wot/profile/http-basic/v1",
    -  "title": "My Lamp",
    -  "description": "A web connected lamp",
    -  ...
    -}
    -
    -
    - -
    {
    -}
    -
    -
    - -
    {
    -  "@context": "https://www.w3.org/2022/wot/td/v1.1",
    -  "id": "urn:dev:ops:32473-WoTLamp-1234",
    -  "profile": [
    -    "https://www.w3.org/2022/wot/profile/http-basic/v1",
    -    "https://www.w3.org/2022/wot/profile/http-sse/v1"
    -  ],
    -  "title": "My Lamp",
    -  "description": "A web connected lamp",
    -  ...
    -}
    -
    -
    -
    -
    -

    6. - Common Constraints

    -
    -

    The following sections are applicable for all of the HTTP - profiles defined by this document.

    -
    -
    -

    6.1 - Accessibility

    -
    -

    Authors of Thing Descriptions must - ensure that the things described by them are accessible to - users with disabilities.

    -

    It is REQUIRED to provide a title that - can be automatically rendered in a non-visual way (e.g. using - a screen reader) for things that may be used in deployments - with users with disabilities.

    -

    It is highly RECOMMENDED to provide a - description that can be automatically rendered - in a non-visual way (e.g. using a screen reader) for things - that may be used in deployments with users with - disabilities.

    -
    -
    - Editor's note -
    -
    - This is just a baseline set of requirements, which needs - additional input from the APA group. It needs to be - clarified which TD elements are used by people with - disabilities and to which these constraints are applied. -
    -
    -
    -
    -
    -

    6.2 - Units

    -
    -

    Authors of Thing Descriptions - should be aware that units that are common in their - geographic region are not globally applicable and may lead to - misinterpretation with drastic consequences.

    -

    It is highly RECOMMENDED to provide a unit, if - a value has a physical quantity.

    -

    It is highly RECOMMENDED to use the metric system (SI - units) for devices that are used in global - deployments.

    -
    -
    -
    -

    6.3 Date - Format

    -
    -

    All date and time values - MUST use the date-time - format defined in [RFC3339].

    -
    - -
    2022-09-21T23:20:50.52Z
    -
    -
    -
    - Note -
    -

    In order to reduce ambiguity, RFC 3339 only - permits an hour with a value between 00 and 23 (not 24), - and time zones expressed as a numerical offset relative to - UTC. The suffix "Z" when applied to a time denotes a UTC - offset of 00:00.

    -
    -
    -
    -
    -

    6.4 - Security

    -
    - -

    Conformant Consumers - MUST support all of these security - schemes.

    -

    A Thing MAY implement multiple security - schemes.

    -

    Conformant Consumers - MUST support security bootstrapping - for all implemented security schemes, as defined in Security - Bootstrapping in the WoT Discovery [wot-discovery] - specification.

    -

    Conformant Things which - require authentication in order to retrieve their Thing - Description MUST implement security - bootstrapping, as defined in Security - Bootstrapping in the WoT Discovery [wot-discovery] - specification.

    -
    -
    -
    -

    6.5 - Discovery

    -
    -

    A Web Thing's Thing - Description [wot-thing-description] - MUST be retrievable from a - Thing Description Server [wot-architecture11] - using an HTTP [HTTP11] - URL provided by a Direct - Introduction Mechanism [wot-discovery].

    -
    - -

    If a Consumer - encounters a link with "rel": "service-doc" and "type": - "text/plain", "type": "text/html" or "type": "text/pdf", and is - capable of rendering documents in the provided format, then it - SHOULD interpret the link as a user - manual for the Thing and provide a means for the user to follow - that link and read the user manual.

    -
    -

    If a Consumer encounters - a link with "rel": "item" and "type": "application/td+json" and - is capable of rendering a hierarchical tree of Things, then it - should interpret the link as an indication that the target is a - sub-Thing of the current Thing and render this in a meaningful - way to the user.

    -

    If a Consumer encounters - a link with "rel": "collection" and "type": "application/td+json" - and is capable of rendering a hierarchical tree of Things, then - it should interpret the link as an indication that the target - describes a Thing (e.g. a group, system of Things or Thing - Directory) which contains the current Thing and render this in a - meaningful way to the user.

    -
    -
    -

    7. - Errors

    -
    -

    If any of the operations defined - in the protocol bindings of HTTP profiles are unsuccessful then - the Web Thing MUST send an HTTP - response with an HTTP error code which describes the reason for - the failure.

    -
    -

    It is RECOMMENDED that error - responses use one of the following HTTP error codes:

    -
      -
    • 400 Bad Request
    • -
    • 401 Unauthorized
    • -
    • 403 Forbidden
    • -
    • 404 Not Found
    • -
    • 500 Internal Server Error
    • -
    -
    -

    A Web Thing MAY respond with 3xx status codes for the - purposes of redirection, caching or authentication. - A Web Thing MUST NOT respond with a 300 Multiple - Choices status code.

    -

    Web Things MAY respond with other valid HTTP error codes - (e.g. 418 I'm a teapot). Consumers - MAY interpret other valid HTTP error - codes as a generic 4xx or 5xx error - with no special defined behaviour.

    -

    If an HTTP error response - contains a body, the content of that body MUST conform with the Problem Details format - [RFC7807].

    -
    -
    -
    -

    8. - Default Language

    -
    -

    One Map contained in an - @context Array MUST - 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).

    -
    -
    -
    -

    9. - HTTP Basic Profile

    -
    -

    This section defines the HTTP Basic Profile, which includes - a Protocol - Binding for reading and writing properties and invoking, - querying and cancelling actions.

    -

    This profile may be used in conjunction with the HTTP SSE Profile or the HTTP Webhook Profile in order - to provide operations for observing properties and listening - for events.

    -

    In - order to conform with the HTTP Basic Profile, Web Things and - Consumers MUST also conform with all - of the assertions in the Common - Constraints section.

    -
    -
    -

    9.1 - Identifier

    -
    -

    In order to denote that a - given Web - Thing conforms to the HTTP Basic Profile, its Thing - Description MUST have a profile - member [wot-thing-description] - with a value of - https://www.w3.org/2022/wot/profile/http-basic/v1.

    -
    -
    -
    -

    9.2 - Protocol Binding

    -
    -

    This section defines a protocol binding which describes - how a Consumer - communicates with a Web - Thing [wot-architecture11] - using JSON [JSON] - payloads over the HTTP [HTTP11] - protocol.

    -

    A Consumer or Web - Thing conforming to the HTTP Basic Profile MUST implement this protocol - binding.

    -

    The examples provided throughout this section describe how - a Consumer would communicate with a Web Thing which produces - the following Thing Description:

    -
    - -
    {
    +      
    {
    +  "@context": "https://www.w3.org/2022/wot/td/v1.1",
    +  "id": "urn:dev:ops:32473-WoTLamp-1234",
    +  "profile": [
    +    "https://www.w3.org/2022/wot/profile/http-basic/v1",
    +    "https://www.w3.org/2022/wot/profile/http-sse/v1"
    +  ],
    +  "title": "My Lamp",
    +  "description": "A web connected lamp",
    +  ...
     }
    @@ -4455,106 +2444,9 @@
    GET /things/lamp/properties/on HTTP/1.1 -} - -
    -
    -

    9.2.1 - Properties

    -
    -
    -
    -
    9.2.1.1 - readproperty
    -
    -
    -

    The URL of a Property resource to be - used when reading the value of a property MUST be obtained from a Thing - Description by locating a - Form inside the corresponding - PropertyAffordance for which:

    -
      -
    • After defaults have been applied, its - op member contains the value - readproperty.
    • -
    • After being resolved against a base URL where - applicable, the URI - scheme [RFC3986] - of the value of its href member is - http or https -
    • -
    -
    -

    The - resolved value of the href member MUST then be used as the URL of the - Property resource.

    -
    -

    In order to read the value of a property, a Consumer - MUST send an HTTP request to a - Web Thing with:

    -
      -
    • Method set to GET
    • -
    • URL set to the URL of the Property - resource
    • -
    • Accept header set to - application/json
    • -
    -
    -
    - -
    GET /things/lamp/properties/on HTTP/1.1
     Host: mythingserver.com
     Accept: application/json
    -
    -
    -

    If a Web Thing receives an HTTP request following - the format above and the Consumer has permission to - read the corresponding property, then upon successfully - reading the value of the property it MUST send an HTTP response with:

    -
      -
    • Status code set to 200
    • -
    • Content-Type header set to - application/json
    • -
    • A body with the value of the property serialized - in JSON
    • -
    -
    -
    - -
    HTTP/1.1 200 OK
     "hljs-punctuation">: application/json
    1.1 200 OK Content-Type: application/json -false -
    -
    -
    -
    -
    9.2.1.2 - writeproperty
    -
    -
    -

    The URL of a Property resource to be - used when writing the value of a property MUST be obtained from a Thing - Description by locating a - Form inside the corresponding - PropertyAffordance for which:

    -
      -
    • After defaults have been applied, its - op member contains the value - writeproperty
    • -
    • After being resolved against a base URL where - applicable, the URI - scheme [RFC3986] - of the value of its href member is - http or https -
    • -
    -
    -

    The - resolved value of the href member MUST then be used as the URL of the - Property resource.

    -
    -

    In order to write the value of a property, a - Consumer MUST send an HTTP - request to a Web Thing with:

    -
      -
    • Method set to PUT
    • -
    • URL set to the URL of the Property - resource
    • -
    • Content-Type header set to - application/json
    • -
    • A body with a requested new value for the - property serialized in JSON
    • -
    -
    -
    - -
    PUT /things/lamp/properties/on HTTP/1.1
    -false
    -
    -
    -
    -
    -
    9.2.1.2 - writeproperty
    -
    -
    -

    The URL of a Property resource to be - used when writing the value of a property MUST be obtained from a Thing - Description by locating a - Form inside the corresponding - PropertyAffordance for which:

    -
      -
    • After defaults have been applied, its - op member contains the value - writeproperty
    • -
    • After being resolved against a base URL where - applicable, the URI - scheme [RFC3986] - of the value of its href member is - http or https -
    • -
    -
    -

    The - resolved value of the href member MUST then be used as the URL of the - Property resource.

    -
    -

    In order to write the value of a property, a - Consumer MUST send an HTTP - request to a Web Thing with:

    -
      -
    • Method set to PUT
    • -
    • URL set to the URL of the Property - resource
    • -
    • Content-Type header set to - application/json
    • -
    • A body with a requested new value for the - property serialized in JSON
    • -
    -
    -
    - -
    PUT /things/lamp/properties/on HTTP/1.1
    -Host: mythingserver.com
    -Content-Type: application/json
    -true
    -
    -
    -

    If a Web Thing receives an HTTP request following - the format above and the Consumer has permission to - write the corresponding property, then upon - successfully writing the value of the property it - MUST send an HTTP response - with:

    -
      -
    • Status code set to 204
    • -
    -
    -
    - -
    HTTP/1.1 204 No Content
    +false
    + "http-basic-profile-protocol-binding-writeproperty">
    -
    9.2.1.3 - readallproperties
    9.2.1.2 + writeproperty
    + "#http-basic-profile-protocol-binding-writeproperty" + aria-label="Permalink for Section 9.2.1.2">
    -

    The URL of a Properties resource to be - used when reading the value of all properties at once - MUST be obtained from a Thing + "http-basic-profile-protocol-binding-writeproperty-1"> +

    The URL of a Property resource to be + used when writing the value of a property MUST be obtained from a Thing Description by locating a - Form inside the top level - forms member for which:

    + Form inside the corresponding + PropertyAffordance for which:

      -
    • Its op member contains the value - readallproperties
    • +
    • After defaults have been applied, its + op member contains the value + writeproperty
    • After being resolved against a base URL where applicable, the URI @@ -4776,33 +2513,35 @@

    - The resolved value of the href member - MUST then be used as the URL of - the Properties resource.

    + "http-basic-profile-protocol-binding-writeproperty-3">The + resolved value of the href member MUST then be used as the URL of the + Property resource.

    -

    In order to read the value of all properties, a + "http-basic-profile-protocol-binding-writeproperty-4"> +

    In order to write the value of a property, a Consumer MUST send an HTTP request to a Web Thing with:

      -
    • Method set to GET
    • -
    • URL set to the URL of the Properties +
    • Method set to PUT
    • +
    • URL set to the URL of the Property resource
    • -
    • Accept header set to +
    • Content-Type header set to application/json
    • +
    • A body with a requested new value for the + property serialized in JSON
    -
    +
    GET /things/lamp/properties HTTP/1.1
    +            "hljs javascript">PUT /things/lamp/properties/on HTTP/1.1
    +Host: mythingserver.com
    +Content-Type: application/json
     true
    Host: mythingserver.com Accept: application/json -
    -
    -

    If a Web Thing receives an HTTP request following - the format above, then upon successfully reading the - values of all the readable properties to which the - Consumer has permission to access, it MUST send an HTTP response with:

    -
      -
    • Status code set to 200
    • -
    • Content-Type header set to - application/json
    • -
    • A body with the values of all readable properties - serialized in JSON, as an object keyed by property - name
    • -
    -
    -
    - -
    HTTP/1.1 200 OK
     "hljs-punctuation">: application/json
    200 OK Content-Type: application/json { - "on": false, - "level": 100 -} -
    -
    -
    -
    -
    9.2.1.4 - writemultipleproperties
    -
    -
    -

    The URL of a Properties resource to be - used when writing the value of multiple properties at - once MUST be obtained from a - Thing Description by locating a - Form inside the top level - forms member for which:

    -
      -
    • Its op member contains the value - writemultipleproperties
    • -
    • After being resolved against a base URL where - applicable, the URI - scheme [RFC3986] - of the value of its href member is - http or https -
    • -
    -
    -

    - The resolved value of the href member - MUST then be used as the URL of - the Properties resource.

    -
    -

    In order to write the value of multiple properties - at once, a Consumer MUST send - an HTTP request to a Web Thing with:

    -
      -
    • Method set to PUT
    • -
    • URL set to the URL of the Properties - resource
    • -
    • Content-Type header set to - application/json
    • -
    • A body with requested new values for the writable - properties serialized in JSON, as an object keyed by - property name
    • -
    -
    -
    - -
    PUT /things/lamp/properties HTTP/1.1
    -}
    -
    -
    -
    -
    -
    9.2.1.4 - writemultipleproperties
    -
    -
    -

    The URL of a Properties resource to be - used when writing the value of multiple properties at - once MUST be obtained from a - Thing Description by locating a - Form inside the top level - forms member for which:

    -
      -
    • Its op member contains the value - writemultipleproperties
    • -
    • After being resolved against a base URL where - applicable, the URI - scheme [RFC3986] - of the value of its href member is - http or https -
    • -
    -
    -

    - The resolved value of the href member - MUST then be used as the URL of - the Properties resource.

    -
    -

    In order to write the value of multiple properties - at once, a Consumer MUST send - an HTTP request to a Web Thing with:

    -
      -
    • Method set to PUT
    • -
    • URL set to the URL of the Properties - resource
    • -
    • Content-Type header set to - application/json
    • -
    • A body with requested new values for the writable - properties serialized in JSON, as an object keyed by - property name
    • -
    -
    -
    - -
    PUT /things/lamp/properties HTTP/1.1
    -Host: mythingserver.com
    -Content-Type: application/json
    -{
    -  "on": true,
    -  "level": 50
    -}
    -
    -
    -

    If a Web Thing receives an HTTP request following - the format above, then upon successfully writing the - values of the requested writable properties it - MUST send an HTTP response - with:

    -
      -
    • Status code set to 204
    • -
    -
    -
    - -
    HTTP/1.1 204 No Content
    + "on": false, + "level": 100 +}
    -
    -
    - Note -
    -
    -

    The readmultipleproperties operation is - excluded due to the complexities of the request payload - format and because it doesn't add much functionality - over readproperty and - readallproperties. - writeallproperties is excluded because it - is just a special case of - writemultipleproperties.

    -
    -
    - -
    -
    -

    9.2.2 - Actions

    -
    + "http-basic-profile-protocol-binding-writemultipleproperties">
    -
    9.2.2.1 - invokeaction
    +
    9.2.1.4 + writemultipleproperties
    -

    The URL of an Action resource to be - used when invoking an action MUST be obtained from a Thing - Description by locating a +

    The URL of a Properties resource to be + used when writing the value of multiple properties at + once MUST be obtained from a + Thing Description by locating a - Form inside the corresponding - ActionAffordance for which:

    + Form inside the top level + forms member for which:

      -
    • After defaults have been applied, the value of - its op member is - invokeaction
    • +
    • Its op member contains the value + writemultipleproperties
    • After being resolved against a base URL where applicable, the URI @@ -5174,35 +2702,40 @@

    The - resolved value of the href member MUST then be used as the URL of the - Action resource.

    + "http-basic-profile-protocol-bindings-writemultipleproperties-3"> + The resolved value of the href member + MUST then be used as the URL of + the Properties resource.

    -

    In order to invoke an action on a Web Thing, a - Consumer MUST send an HTTP - request to the Web Thing with:

    + "http-basic-profile-protocol-binding-writemultipleproperties-4"> +

    In order to write the value of multiple properties + at once, a Consumer MUST send + an HTTP request to a Web Thing with:

      -
    • Method set to POST
    • -
    • URL set to the URL of the Action +
    • Method set to PUT
    • +
    • URL set to the URL of the Properties resource
    • -
    • Accept header set to - application/json
    • Content-Type header set to application/json
    • -
    • A body with an input to the action, if any, - serialized in JSON
    • +
    • A body with requested new values for the writable + properties serialized in JSON, as an object keyed by + property name
    -
    +
    POST /things/lamp/actions/fade HTTP/PUT /things/lamp/properties HTTP/1.1
    +Host: mythingserver.com
    +Content-Type: application/json
    +{
    +  "on": true,
    +  "level": 50
     }
    -
    -

    If providing an Asynchronous Action Response, a - Web Thing MUST send an HTTP - response containing the URL of an - ActionStatus resource, the URI - scheme [RFC3986] - of which MUST resolve to - http or https. The response - MUST have:

    -
      -
    • Status code set to 201
    • -
    • Content-Type header set to - application/json
    • -
    • Location header set to the URL of - the ActionStatus resource
    • -
    • A body containing an ActionStatus - object serialized in JSON, with its - href member set to the URL of the - ActionStatus resource -
    • -
    -
    -
    - -
    HTTP/1.1 201 CREATED
    -"hljs-punctuation">: application/json
    -
    -
    -
    -
    -
    9.2.2.1.3 Asynchronous Action - Response
    -
    -
    -

    If providing an Asynchronous Action Response, a - Web Thing MUST send an HTTP - response containing the URL of an - ActionStatus resource, the URI - scheme [RFC3986] - of which MUST resolve to - http or https. The response - MUST have:

    -
      -
    • Status code set to 201
    • -
    • Content-Type header set to - application/json
    • -
    • Location header set to the URL of - the ActionStatus resource
    • -
    • A body containing an ActionStatus - object serialized in JSON, with its - href member set to the URL of the - ActionStatus resource -
    • -
    -
    -
    - -
    HTTP/1.1 201 CREATED
    -Content-Type: application/json
    -Location: /things/lamp/actions/fade/123e4567-e89b-12d3-a456-426655
    -{
    -  "status": "pending",
    -  "href": "/things/lamp/actions/fade/123e4567-e89b-12d3-a456-426655",
    -  "timeRequested": "2021-11-10T11:43:19.135Z"
    -}
    -
    -
    -
    -
    -
    -
    9.2.2.2 - queryaction
    -
    -

    A queryaction operation is used to query - the current state of an ongoing action request.

    -

    A - Web Thing which provides Asynchronous Action - Responses to an invokeaction operation - on an Action MUST - also support queryaction operations on that - same Action. A - Web Thing which only provides Synchronous Action Responses - to an invokeaction operation on an - Action SHOULD NOT - support queryaction operations on that same - Action.

    -

    The - URL of an ActionStatus resource to be used - in a queryaction operation MUST be obtained from the - Location header of an Asynchronous Action - Response, or the href member of the - ActionStatus object in its body.

    -
    -

    In order to query the status of an action request, a - Consumer MUST send an HTTP - request to a Web Thing with:

    -
      -
    • Method set to GET
    • -
    • URL set to the URL of the - ActionStatus resource
    • -
    • Accept header set to - application/json
    • -
    -
    -
    -
    - Example - 16 +
    +

    If providing an Asynchronous Action Response, a + Web Thing MUST send an HTTP + response containing the URL of an + ActionStatus resource, the URI + scheme [RFC3986] + of which MUST resolve to + http or https. The response + MUST have:

    +
      +
    • Status code set to 201
    • +
    • Content-Type header set to + application/json
    • +
    • Location header set to the URL of + the ActionStatus resource
    • +
    • A body containing an ActionStatus + object serialized in JSON, with its + href member set to the URL of the + ActionStatus resource +
    • +
    -
    GET /things/lamp/actions/fade/123e4567-e89b-12d3-a456-426655
    +            
    + +
    HTTP/1.1 201 CREATED
    +Content-Type: application/json
    +Location: /things/lamp/actions/fade/123e4567-e89b-12d3-a456-426655
    +{
    +  "status": "pending",
    +  "href": "/things/lamp/actions/fade/123e4567-e89b-12d3-a456-426655",
    +  "timeRequested": "2021-11-10T11:43:19.135Z"
     }
    @@ -5810,34 +3236,6 @@
    GET /things/lamp/actions/fade/123e4567-e89b-12d3-a456-426655 Host: mythingserver.com -Accept: application/json - -
    -

    If a Web Thing receives an HTTP request following - the format above and the Consumer has permission to - query the corresponding ActionStatus - resource, then upon successfully reading the status of - the action request it MUST - send an HTTP response with:

    -
      -
    • Status code set to 200
    • -
    • Content-Type header set to - application/json
    • -
    • A body containing an ActionStatus - object representing the current status of the action - request, serialized in JSON
    • -
    -
    -
    - -
    HTTP/1.1 200 OK
     Accept: application/json
    "running", "timeRequested": "2021-11-10T11:43:19.135Z" -} -
    -

    If - the queried action failed to execute, then the - status member of the - ActionStatus object MUST be set to - "failed". If - the queried action failed to execute, then the - error member MAY - provide additional error information conforming to the - Problem Details format [RFC7807].

    -
    - -
    HTTP/1.1 200 OK
     }

    Synchronous Action Responses to an invokeaction operation on an Action SHOULD NOT - support cancelaction operations on that same - Action.

    -

    The - URL of an ActionStatus resource to be used - in a cancelaction operation MUST be obtained from the - Location header of an Asynchronous Action - Response, or the href member of the - ActionStatus object in its body.

    -
    -

    In order to cancel an action request, a Consumer - MUST send an HTTP request to a - Web Thing with:

    -
      -
    • Method set to DELETE
    • -
    • URL set to the URL of the - ActionStatus resource
    • -
    -
    -
    - -
    DELETE /things/lamp/actions/fade/123e4567-e89b-12d3-a456-426655 HTTP/1.1
    -}
    -
    - -
    -
    -
    9.2.2.3 - cancelaction
    -
    -

    A cancelaction operation is used to - cancel an ongoing Action request.

    -

    A - Web Thing which provides Asynchronous Action - Responses to an invokeaction operation - on an Action MAY - also support cancelaction operations on that - same Action. A - Web Thing which only provides Synchronous Action Responses - to an invokeaction operation on an - Action SHOULD NOT - support cancelaction operations on that same - Action.

    -

    The - URL of an ActionStatus resource to be used - in a cancelaction operation MUST be obtained from the - Location header of an Asynchronous Action - Response, or the href member of the - ActionStatus object in its body.

    -
    -

    In order to cancel an action request, a Consumer - MUST send an HTTP request to a - Web Thing with:

    -
      -
    • Method set to DELETE
    • -
    • URL set to the URL of the - ActionStatus resource
    • -
    -
    -
    - -
    DELETE /things/lamp/actions/fade/123e4567-e89b-12d3-a456-426655 HTTP/1.1
    -Host: mythingserver.com
    -
    -
    -

    If a Web Thing receives an HTTP request following - the format above and the Consumer has permission to - cancel the corresponding Action request, - then upon successfully cancelling Action - it MUST send an HTTP response - with:

    -
      -
    • Status code set to 204
    • -
    -
    -
    - -
    HTTP/1.1 204 No Content
    -
    -
    -
    -
    -
    9.2.2.4 - queryallactions
    -
    -
    -

    The URL of an Actions resource to be - used when querying the status of all ongoing action - requests MUST be obtained from - a Thing Description by locating a - Form inside the top level - forms member for which:

    -
      -
    • Its op member contains the value - queryallactions
    • -
    • After being resolved against a base URL where - applicable, the URI - scheme [RFC3986] - of the value of its href member is - http or https -
    • -
    -
    -

    The - resolved value of the href member MUST then be used as the URL of the - Actions resource.

    + support cancelaction operations on that same + Action.

    +

    The + URL of an ActionStatus resource to be used + in a cancelaction operation MUST be obtained from the + Location header of an Asynchronous Action + Response, or the href member of the + ActionStatus object in its body.

    -

    In order to query the status of all ongoing action - requests, a Consumer MUST send - an HTTP request to a Web Thing with:

    + "http-basic-profile-protocol-binding-cancelaction-3"> +

    In order to cancel an action request, a Consumer + MUST send an HTTP request to a + Web Thing with:

      -
    • Method set to GET
    • -
    • URL set to the URL of the Actions - resource
    • -
    • Accept header set to - application/json
    • +
    • Method set to DELETE
    • +
    • URL set to the URL of the + ActionStatus resource
    -
    +
    GET /things/lamp/actions HTTP/1.1
    +            "hljs-keyword">DELETE /things/lamp/actions/fade/123e4567-e89b-12d3-a456-426655 HTTP/1.1
    +Host: mythingserver.com
    Host: mythingserver.com Accept: application/json -
    -
    -

    If a Web Thing receives an HTTP request following - the format above, then upon successfully retreiving the - status of all ongoing action requests to which the - Consumer has permission to access, it MUST send an HTTP response with:

    -
      -
    • Status code set to 200
    • -
    • Content-Type header set to - application/json
    • -
    • A body containing an object, keyed by - Action name, with the value of each - object member being an array of ActionStatus objects - representing the action requests, serialized in JSON. -
    • -
    -
    -

    Each - array in the result object MUST - be sorted in reverse chronological order such that the - most recent action request appears first.

    -
    - -
    HTTP/1.1 200 OK
     "hljs-punctuation">: application/json
    POST /things/lamp/events/overheated HTTP/1.1 -} -
    -
    - -
    -
    -

    11.2 - Identifier

    -
    -

    In order to denote that a given - Web - Thing conforms to the HTTP Webhook Profile, its Thing - Description MUST have a profile - member [wot-thing-description] - with a value of - https://www.w3.org/2022/wot/profile/http-webhook/v1.

    -
    -
    - Note -
    -
    -

    Note that the profile member is an array - that may contain multiple profile entries, which - indicates that a Web Thing conforms to all of the - profiles in that array.

    -
    -
    -
    -
    -
    -

    11.3 - Message Format

    -
    -

    Event notification - messages MUST comply with the - following data schema.

    -
    -
    - Editor's note -
    -

    TODO: Describe data and dataResponse - schemas.

    -
    -
    -
    -
    -

    11.4 Protocol Binding

    -
    -

    This section defines a protocol binding which describes - how a Consumer - and a Web - Thing communicate using Webhook Events.

    -

    A Consumer or Web - Thing conforming to the HTTP Webhook Profile MUST implement this protocol - binding.

    -
    -
    -

    11.4.1 Operations

    -
    -
    -
    -
    11.4.1.1 - subscribeevent
    -
    -
    -

    The URL of an Event resource to be used - when subscribing to an event MUST be obtained from a Thing - Description by locating a - Form inside the corresponding - EventAffordance for which:

    -
      -
    • After defaults have been applied, its - op member contains the value - subscribeevent
    • -
    • After being resolved against a base URL where - applicable, the URI - scheme [RFC3986] - of the value of its href member is - http or https -
    • -
    • Its subprotocol member has a value - of webhook
    • -
    -
    -

    The - resolved value of the href member MUST then be used as the URL of the - Event resource.

    -

    In - order to subscribe to an event, a Consumer MUST provide the listener URL in the - request payload of the subscribe operation - of the Event resource.

    -

    This involves the Consumer sending an HTTP request to - the Web Thing with:

    -
      -
    • Method set to POST
    • -
    • URL set to the URL of the Event - resource
    • -
    • Accept header set to - application/json
    • -
    • A body with a subscription request payload, - serialized in JSON.
    • -
    -

    The subscription payload contains the URI for the - event message listener in the field with the - callbackURI key.

    -
    - -
      POST /things/lamp/events/overheated HTTP/1.1
       Host: mythingserver.com
       Content-Type: application/json
       Accept: application/json
       {
    -    callbackURI: "http://myConsumer.com/myEventListener"
    -}
    -
    -

    If - a Web Thing receives an HTTP request following the format - above and the Consumer has permission to subscribe to the - corresponding event, then it MUST send event messages to the - Consumer as events of the specified type are - emitted.

    -

    This involves the Web Thing initially sending an HTTP - response to the Consumer with:

    -
      -
    • Status code set to 200
    • -
    • Content-Type header set to - application/json
    • -
    • Accept header set to - application/json
    • -
    -
    - -
    HTTP/1.1 200 OK
    +    callbackURI: "http://myConsumer.com/myEventListener"
     }

    1234-4544-1211 -} - -

    Whenever - an event of the specified type occurs, the Web Thing - MUST send event data to the - Consumer using the event payload format defined in - section - ["#sec-http-webhook-profile-protocol-binding-events-notification"].

    -
    -
    -
    -
    11.4.1.2 - unsubscribeevent
    -
    -

    - In order to unsubscribe to an event, a Consumer - MUST provide the - subscriptionID in the data payload of the - unsubscribe operation of the - Event resource.

    -

    This involves the Consumer sending an HTTP request to - the Web Thing with:

    -
      -
    • Method set to DELETE
    • -
    • URL set to the URL of the Event - resource followed by the subscriptionId of - a valid subscription
    • -
    • Accept header set to - application/json
    • -
    -
    -
    - Example - 47: - Unsubscribe using subscriptionId -
    -
    DELETE /things/lamp/events/overheated/1234-4544-1211 HTTP/1.1
     }

    DELETE /things/lamp/events/overheated/1234-4544-1211 HTTP/1.1 Host: mythingserver.com - -

    -
    -
    -
    11.4.1.3 - subscribeallevents
    -
    -
    -

    The URL of an Events resource to be - used when subscribing to all events emitted by a Web - Thing MUST be obtained from a - Thing Description by locating a - Form inside the top level - forms member of a Thing Description - for which:

    -
      -
    • Its op member contains the value - subscribeallevents
    • -
    • After being resolved against a base URL where - applicable, the URI - scheme [RFC3986] - of the value of its href member is - http or https -
    • -
    • Its subprotocol member has a value - of webhook
    • -
    -
    -

    - The resolved value of the href member - MUST then be used as the URL of - the events resource.

    -
    -

    In order to subscribe to all events emitted - by a Web Thing, a Consumer MUST send an HTTP request to the Web - Thing with:

    -
      -
    • Method set to POST
    • -
    • URL set to the URL of the events resource
    • -
    • Accept header set to - application/json
    • -
    • Request Payload contains a - JSON object with a subscription request - payload.
    • -
    -
    -
    - -
    POST /things/lamp/events HTTP/1.1
     "hljs-punctuation">: mythingserver.com
    @@ -8418,35 +5311,6 @@
    { callbackURI: "http://myConsumer.com/myEventListener" -} - -

    - If a Web Thing receives an HTTP request following the - format above, then it MUST send - event messages to the Consumer for all event - types for which it has permission to - subscribe.

    -

    This involves the Web Thing initially sending an HTTP - response to the Consumer with:

    -
      -
    • Status code set to 200
    • -
    • Content-Type header set to - application/json
    • -
    • Accept header set to - application/json
    • -
    • Response payload contains a JSON object with a - subscriptionId.
    • -
    -
    - -
    HTTP/1.1 200 OK
     }

    1234-4544-1211 -} - -

    - Whenever an event occurs, the Web Thing MUST send event data to the Consumer using - the event payload format defined in section Message - Format.

    -

    - If the connection between the Web Thing and the Consumer - drops, the Web Thing MUST - re-establish the connection.

    -

    - Once the connection is re-established the Web Thing - SHOULD, if possible, send any - missed events which occurred since the last successful - event notification.

    -
    -
    -
    -
    11.4.1.4 - unsubscribeallevents
    -
    -

    - In order to unsubscribe from all events, a Consumer - MUST invoke the - unsubscribe operation of the - Event resource.

    -

    This involves the Consumer sending an HTTP request to - the Web Thing with:

    -
      -
    • Method set to DELETE
    • -
    • URL set to the URL of the Event - resource
    • -
    • Accept header set to - application/json
    • -
    -
    -
    - Example - 50: - Unsubscribe all using callbackURI -
    -
    DELETE /things/lamp/events HTTP/1.1
     }

    } anchors - * @param {HTMLElement} panel - * @param {HTMLElement} dfn - * @returns - */ - function createTrapListener(anchors, panel, dfn) { /** * * @param {NodeListOf} anchors @@ -9498,10 +6265,7 @@

    - } - })() - - diff --git a/testing/atrisk.css b/testing/atrisk.css index 7fbec7a..317201e 100644 --- a/testing/atrisk.css +++ b/testing/atrisk.css @@ -46,372 +46,6 @@ #common-constraints-links-media-types-8 { background-color: yellow; } -#common-constraints-links-media-types-6 { - background-color: yellow; -} -#common-constraints-links-media-types-7 { - background-color: yellow; -} -#http-basic-profile-1 { - background-color: yellow; -} -#profile-5-2-thing-protocol-binding-1 { - background-color: yellow; -} -#http-basic-profile-protocol-binding-readallproperties-3 { - background-color: yellow; -} -#http-basic-profile-protocol-bindings-writemultipleproperties-3 { - background-color: yellow; -} -#http-basic-profile-protocol-binding-invokeaction-3 { - background-color: yellow; -} -#http-basic-profile-protocol-binding-invokeaction-7 { - background-color: yellow; -} -#http-basic-profile-protocol-binding-invokeaction-11 { - background-color: yellow; -} -#http-basic-profile-protocol-binding-invokeaction-12 { - background-color: yellow; -} -#http-basic-profile-protocol-binding-invokeaction-13 { - background-color: yellow; -} -#http-basic-profile-protocol-binding-invokeaction-14 { - background-color: yellow; -} -#http-basic-profile-protocol-binding-invokeaction-15 { - background-color: yellow; -} -#http-basic-profile-protocol-binding-invokeaction-16 { - background-color: yellow; -} -#http-basic-profile-protocol-binding-invokeaction-17 { - background-color: yellow; -} -#http-basic-profile-protocol-binding-invokeaction-18 { - background-color: yellow; -} -#http-basic-profile-protocol-binding-invokeaction-19 { - background-color: yellow; -} -#http-basic-profile-protocol-binding-invokeaction-20 { - background-color: yellow; -} -#http-basic-profile-protocol-binding-invokeaction-21 { - background-color: yellow; -} -#http-basic-profile-protocol-binding-queryaction-2 { - background-color: yellow; -} -#http-basic-profile-protocol-binding-queryaction-3 { - background-color: yellow; -} -#http-basic-profile-protocol-binding-cancelaction-2 { - background-color: yellow; -} -#http-basic-profile-protocol-binding-cancelaction-3 { - background-color: yellow; -} -#http-basic-profile-protocol-binding-queryallactions-1 { - background-color: yellow; -} -#http-basic-profile-protocol-binding-queryallactions-3 { - background-color: yellow; -} -#http-basic-profile-protocol-binding-queryallactions-4 { - background-color: yellow; -} -#http-basic-profile-protocol-binding-queryallactions-6a { - background-color: yellow; -} -#http-basic-profile-protocol-binding-queryallactions-6b { - background-color: yellow; -} -#http-sse-profile-1 { - background-color: yellow; -} -#http-sse-profile-identifier-1 { - background-color: yellow; -} -#http-sse-profile-protocol-binding-1 { - background-color: yellow; -} -#http-sse-profile-protocol-binding-observeproperty-1 { - background-color: yellow; -} -#http-sse-profile-protocol-binding-observeproperty-2 { - background-color: yellow; -} -#http-sse-profile-protocol-binding-observeproperty-3 { - background-color: yellow; -} -#http-sse-profile-protocol-binding-observeproperty-4 { - background-color: yellow; -} -#http-sse-profile-protocol-binding-observeproperty-5a { - background-color: yellow; -} -#http-sse-profile-protocol-binding-observeproperty-5b { - background-color: yellow; -} -#http-sse-profile-protocol-binding-observeproperty-5c { - background-color: yellow; -} -#http-sse-profile-protocol-binding-observeproperty-5d { - background-color: yellow; -} -#http-sse-profile-protocol-binding-observeproperty-6a { - background-color: yellow; -} -#http-sse-profile-protocol-binding-observeproperty-6b { - background-color: yellow; -} -#http-sse-profile-protocol-binding-unobserveproperty-1 { - background-color: yellow; -} -#http-sse-profile-protocol-binding-observeallproperties-1 { - background-color: yellow; -} -#http-sse-profile-protocol-binding-observeallproperties-2 { - background-color: yellow; -} -#http-sse-profile-protocol-binding-observeallproperties-3 { - background-color: yellow; -} -#http-sse-profile-protocol-binding-observeallproperties-4 { - background-color: yellow; -} -#http-sse-profile-protocol-binding-observeallproperties-5a { - background-color: yellow; -} -#http-sse-profile-protocol-binding-observeallproperties-5b { - background-color: yellow; -} -#http-sse-profile-protocol-binding-observeallproperties-5c { - background-color: yellow; -} -#http-sse-profile-protocol-binding-observeallproperties-5d { - background-color: yellow; -} -#http-sse-profile-protocol-binding-observeallproperties-5e { - background-color: yellow; -} -#http-sse-profile-protocol-binding-observeallproperties-6a { - background-color: yellow; -} -#http-sse-profile-protocol-binding-observeallproperties-6b { - background-color: yellow; -} -#http-sse-profile-protocol-binding-unobserveallproperties-1 { - background-color: yellow; -} -#http-sse-profile-protocol-binding-subscribeevent-1 { - background-color: yellow; -} -#http-sse-profile-protocol-binding-subscribeevent-3 { - background-color: yellow; -} -#http-sse-profile-protocol-binding-subscribeevent-4 { - background-color: yellow; -} -#http-sse-profile-protocol-binding-subscribeevent-6d { - background-color: yellow; -} -#http-sse-profile-protocol-binding-subscribeevent-6e { - background-color: yellow; -} -#http-sse-profile-protocol-binding-subscribeevent-7a { - background-color: yellow; -} -#http-sse-profile-protocol-binding-subscribeevent-7b { - background-color: yellow; -} -#http-sse-profile-protocol-binding-unsubscribeevent-1 { - background-color: yellow; -} -#http-sse-profile-protocol-binding-subscribeallevents-1 { - background-color: yellow; -} -#http-sse-profile-protocol-binding-subscribeallevents-3b { - background-color: yellow; -} -#http-sse-profile-protocol-binding-subscribeallevents-4 { - background-color: yellow; -} -#http-sse-profile-protocol-binding-subscribeallevents-3 { - background-color: yellow; -} -#http-sse-profile-protocol-binding-subscribeallevents-4a { - background-color: yellow; -} -#http-sse-profile-protocol-binding-subscribeallevents-4b { - background-color: yellow; -} -#http-sse-profile-protocol-binding-subscribeallevents-4c { - background-color: yellow; -} -#http-sse-profile-protocol-binding-subscribeallevents-4d { - background-color: yellow; -} -#http-sse-profile-protocol-binding-subscribeallevents-4e { - background-color: yellow; -} -#http-sse-profile-protocol-binding-subscribeallevents-5a { - background-color: yellow; -} -#http-sse-profile-protocol-binding-subscribeallevents-5b { - background-color: yellow; -} -#http-sse-profile-protocol-binding-unsubscribeallevents-1 { - background-color: yellow; -} -#http-webhook-profile-protocol-binding-general-1 { - background-color: yellow; -} -#http-webhook-profile-protocol-binding-general-3 { - background-color: yellow; -} -#http-webhook-profile-protocol-binding-events-1 { - background-color: yellow; -} -#http-webhook-profile-protocol-binding-events-2 { - background-color: yellow; -} -#http-webhook-profile-1 { - background-color: yellow; -} -#http-webhook-profile-message-format-1 { - background-color: yellow; -} -#http-webhook-profile-protocol-binding-1 { - background-color: yellow; -} -#http-basic-profile-protocol-binding-subscribeevent-1 { - background-color: yellow; -} -#http-webhook-profile-protocol-binding-subscribeevent-3 { - background-color: yellow; -} -#http-webhook-profile-protocol-binding-subscribeevent-4 { - background-color: yellow; -} -#http-webhook-profile-protocol-binding-subscribeevent-5 { - background-color: yellow; -} -#http-webhook-profile-protocol-binding-subscribeevent-6 { - background-color: yellow; -} -#http-webhook-profile-protocol-binding-subscribeevent-4b { - background-color: yellow; -} -#http-webhook-profile-protocol-binding-subscribeallevents-1 { - background-color: yellow; -} -#http-webhook-profile-protocol-binding-subscribeallevents-3 { - background-color: yellow; -} -#http-webhook-profile-protocol-binding-subscribeallevents-4 { - background-color: yellow; -} -#http-webhook-profile-protocol-binding-subscribeallevents-5 { - background-color: yellow; -} -#http-webhook-profile-protocol-binding-subscribeallevents-6 { - background-color: yellow; -} -#http-webhook-profile-protocol-binding-subscribeallevents-7 { - background-color: yellow; -} -#http-webhook-profile-protocol-binding-subscribeallevents-8 { - background-color: yellow; -} -#http-webhook-profile-protocol-binding-unsubscribeallevents-1 { - background-color: yellow; -} -#http-webhook-profile-protocol-binding-event-connections-1 { - background-color: yellow; -} -#http-webhook-profile-protocol-binding-event-connections-2 { - background-color: yellow; -} -#http-webhook-profile-protocol-binding-event-connections-3 { - background-color: yellow; -} -#http-webhook-profile-protocol-binding-event-connections-4 { - background-color: yellow; -} -#http-webhook-profile-protocol-binding--event-connections-5 { - background-color: yellow; -} -#http-webhook-profile-protocol-binding-event-connections-6 { - background-color: yellow; -} -#http-webhook-profile-protocol-binding-event-connections-7 { - background-color: yellow; -} -#http-webhook-profile-protocol-binding--event-connections-8 { - background-color: yellow; -} -#http-webhook-profile-protocol-binding-event-connections-9 { - background-color: yellow; -} -#privacy-considerations-1 { - background-color: yellow; -} -#security-considerations-1 { - background-color: yellow; -} -#profile-abstract-1 { - background-color: yellow; -} -#profile-why-a-basic-profile-1-x { - background-color: yellow; -} -#profiling-mechanism-1 { - background-color: yellow; -} -#common-constraints-a11y-1 { - background-color: yellow; -} -#common-constraints-a11y-2 { - background-color: yellow; -} -#common-constraints-security-2 { - background-color: yellow; -} -#common-constraints-security-6 { - background-color: yellow; -} -#common-constraints-security-7 { - background-color: yellow; -} -#common-constraints-links-1 { - background-color: yellow; -} -#common-constraints-links-3 { - background-color: yellow; -} -#common-constraints-links-media-types-1 { - background-color: yellow; -} -#common-constraints-links-media-types-4 { - background-color: yellow; -} -#common-constraints-links-media-types-5 { - background-color: yellow; -} -#common-constraints-links-media-types-6 { - background-color: yellow; -} -#common-constraints-links-media-types-7 { - background-color: yellow; -} -#common-constraints-links-media-types-8 { - background-color: yellow; -} #common-constraints-errors-3 { background-color: yellow; } diff --git a/testing/atrisk.csv b/testing/atrisk.csv index bf8b70e..c65ef0f 100644 --- a/testing/atrisk.csv +++ b/testing/atrisk.csv @@ -17,8 +17,6 @@ 27,"common-constraints-links-media-types-8","HELP, no results" 30,"common-constraints-errors-3","HELP, pass=1" 33,"common-constraints-errors-6","HELP, pass undefined" -34,"common-constraints-errors-7","HELP, pass=1" -35,"common-constraints-default-language","HELP, pass undefined" 36,"http-basic-profile-1","HELP, pass undefined" 38,"profile-5-2-thing-protocol-binding-1","HELP, pass undefined" 48,"http-basic-profile-protocol-binding-readallproperties-3","HELP, pass=1" @@ -38,11 +36,6 @@ 73,"http-basic-profile-protocol-binding-invokeaction-21","HELP, pass=1" 76,"http-basic-profile-protocol-binding-queryaction-2","HELP, pass=1" 77,"http-basic-profile-protocol-binding-queryaction-3","HELP, pass undefined" -78,"http-basic-profile-protocol-binding-queryaction-5","HELP, pass=1" -79,"http-basic-profile-protocol-binding-queryaction-7a","HELP, pass=1" -80,"http-basic-profile-protocol-binding-queryaction-7b","HELP, pass=1" -81,"http-basic-profile-protocol-binding-cancelaction-1a","HELP, pass=1" -82,"http-basic-profile-protocol-binding-cancelaction-1b","HELP, pass=1" 83,"http-basic-profile-protocol-binding-cancelaction-2","HELP, pass undefined" 84,"http-basic-profile-protocol-binding-cancelaction-3","HELP, pass undefined" 86,"http-basic-profile-protocol-binding-queryallactions-1","HELP, pass undefined" @@ -50,11 +43,11 @@ 88,"http-basic-profile-protocol-binding-queryallactions-4","HELP, pass undefined" 89,"http-basic-profile-protocol-binding-queryallactions-6a","HELP, pass undefined" 90,"http-basic-profile-protocol-binding-queryallactions-6b","HELP, pass undefined" -91,"http-sse-profile-1","HELP, pass undefined" -92,"http-sse-profile-identifier-1","HELP, pass undefined" -93,"http-sse-profile-protocol-binding-1","HELP, pass undefined" -94,"http-sse-profile-protocol-binding-observeproperty-1","HELP, pass undefined" -95,"http-sse-profile-protocol-binding-observeproperty-2","HELP, pass undefined" +91,"http-sse-profile-1","HELP, pass=1" +92,"http-sse-profile-identifier-1","HELP, pass=1" +93,"http-sse-profile-protocol-binding-1","HELP, pass=1" +94,"http-sse-profile-protocol-binding-observeproperty-1","HELP, pass=1" +95,"http-sse-profile-protocol-binding-observeproperty-2","HELP, pass=1" 96,"http-sse-profile-protocol-binding-observeproperty-3","HELP, pass undefined" 97,"http-sse-profile-protocol-binding-observeproperty-4","HELP, pass undefined" 98,"http-sse-profile-protocol-binding-observeproperty-5a","HELP, pass=1" @@ -63,7 +56,7 @@ 101,"http-sse-profile-protocol-binding-observeproperty-5d","HELP, pass=1" 102,"http-sse-profile-protocol-binding-observeproperty-6a","HELP, pass undefined" 103,"http-sse-profile-protocol-binding-observeproperty-6b","HELP, pass undefined" -104,"http-sse-profile-protocol-binding-unobserveproperty-1","HELP, pass undefined" +104,"http-sse-profile-protocol-binding-unobserveproperty-1","HELP, pass=1" 105,"http-sse-profile-protocol-binding-observeallproperties-1","HELP, pass undefined" 106,"http-sse-profile-protocol-binding-observeallproperties-2","HELP, pass undefined" 107,"http-sse-profile-protocol-binding-observeallproperties-3","HELP, pass undefined" @@ -76,18 +69,14 @@ 114,"http-sse-profile-protocol-binding-observeallproperties-6a","HELP, pass undefined" 115,"http-sse-profile-protocol-binding-observeallproperties-6b","HELP, pass undefined" 116,"http-sse-profile-protocol-binding-unobserveallproperties-1","HELP, pass undefined" -117,"http-sse-profile-protocol-binding-subscribeevent-1","HELP, pass undefined" -118,"http-sse-profile-protocol-binding-subscribeevent-3","HELP, pass undefined" +117,"http-sse-profile-protocol-binding-subscribeevent-1","HELP, pass=1" +118,"http-sse-profile-protocol-binding-subscribeevent-3","HELP, pass=1" 119,"http-sse-profile-protocol-binding-subscribeevent-4","HELP, pass undefined" -120,"http-sse-profile-protocol-binding-subscribeevent-5","HELP, pass=1" -121,"http-sse-profile-protocol-binding-subscribeevent-6a","HELP, pass=1" -122,"http-sse-profile-protocol-binding-subscribeevent-6b","HELP, pass=1" -123,"http-sse-profile-protocol-binding-subscribeevent-6c","HELP, pass=1" 124,"http-sse-profile-protocol-binding-subscribeevent-6d","HELP, pass=1" 125,"http-sse-profile-protocol-binding-subscribeevent-6e","HELP, pass undefined" 126,"http-sse-profile-protocol-binding-subscribeevent-7a","HELP, pass undefined" 127,"http-sse-profile-protocol-binding-subscribeevent-7b","HELP, pass undefined" -128,"http-sse-profile-protocol-binding-unsubscribeevent-1","HELP, pass undefined" +128,"http-sse-profile-protocol-binding-unsubscribeevent-1","HELP, pass=1" 129,"http-sse-profile-protocol-binding-subscribeallevents-1","HELP, pass undefined" 130,"http-sse-profile-protocol-binding-subscribeallevents-3b","HELP, pass undefined" 131,"http-sse-profile-protocol-binding-subscribeallevents-4","HELP, pass undefined" @@ -103,7 +92,7 @@ 141,"http-webhook-profile-protocol-binding-general-1","HELP, pass=1" 142,"http-webhook-profile-protocol-binding-general-3","HELP, pass=1" 143,"http-webhook-profile-protocol-binding-events-1","HELP, pass=1" -144,"http-webhook-profile-protocol-binding-events-2","HELP, no results" +144,"http-webhook-profile-protocol-binding-events-2","HELP, pass undefined" 145,"http-webhook-profile-1","HELP, pass=1" 146,"http-webhook-profile-message-format-1","HELP, pass undefined" 147,"http-webhook-profile-protocol-binding-1","HELP, pass undefined" diff --git a/testing/inputs/atrisk.csv b/testing/inputs/atrisk.csv index bf8b70e..c65ef0f 100644 --- a/testing/inputs/atrisk.csv +++ b/testing/inputs/atrisk.csv @@ -17,8 +17,6 @@ 27,"common-constraints-links-media-types-8","HELP, no results" 30,"common-constraints-errors-3","HELP, pass=1" 33,"common-constraints-errors-6","HELP, pass undefined" -34,"common-constraints-errors-7","HELP, pass=1" -35,"common-constraints-default-language","HELP, pass undefined" 36,"http-basic-profile-1","HELP, pass undefined" 38,"profile-5-2-thing-protocol-binding-1","HELP, pass undefined" 48,"http-basic-profile-protocol-binding-readallproperties-3","HELP, pass=1" @@ -38,11 +36,6 @@ 73,"http-basic-profile-protocol-binding-invokeaction-21","HELP, pass=1" 76,"http-basic-profile-protocol-binding-queryaction-2","HELP, pass=1" 77,"http-basic-profile-protocol-binding-queryaction-3","HELP, pass undefined" -78,"http-basic-profile-protocol-binding-queryaction-5","HELP, pass=1" -79,"http-basic-profile-protocol-binding-queryaction-7a","HELP, pass=1" -80,"http-basic-profile-protocol-binding-queryaction-7b","HELP, pass=1" -81,"http-basic-profile-protocol-binding-cancelaction-1a","HELP, pass=1" -82,"http-basic-profile-protocol-binding-cancelaction-1b","HELP, pass=1" 83,"http-basic-profile-protocol-binding-cancelaction-2","HELP, pass undefined" 84,"http-basic-profile-protocol-binding-cancelaction-3","HELP, pass undefined" 86,"http-basic-profile-protocol-binding-queryallactions-1","HELP, pass undefined" @@ -50,11 +43,11 @@ 88,"http-basic-profile-protocol-binding-queryallactions-4","HELP, pass undefined" 89,"http-basic-profile-protocol-binding-queryallactions-6a","HELP, pass undefined" 90,"http-basic-profile-protocol-binding-queryallactions-6b","HELP, pass undefined" -91,"http-sse-profile-1","HELP, pass undefined" -92,"http-sse-profile-identifier-1","HELP, pass undefined" -93,"http-sse-profile-protocol-binding-1","HELP, pass undefined" -94,"http-sse-profile-protocol-binding-observeproperty-1","HELP, pass undefined" -95,"http-sse-profile-protocol-binding-observeproperty-2","HELP, pass undefined" +91,"http-sse-profile-1","HELP, pass=1" +92,"http-sse-profile-identifier-1","HELP, pass=1" +93,"http-sse-profile-protocol-binding-1","HELP, pass=1" +94,"http-sse-profile-protocol-binding-observeproperty-1","HELP, pass=1" +95,"http-sse-profile-protocol-binding-observeproperty-2","HELP, pass=1" 96,"http-sse-profile-protocol-binding-observeproperty-3","HELP, pass undefined" 97,"http-sse-profile-protocol-binding-observeproperty-4","HELP, pass undefined" 98,"http-sse-profile-protocol-binding-observeproperty-5a","HELP, pass=1" @@ -63,7 +56,7 @@ 101,"http-sse-profile-protocol-binding-observeproperty-5d","HELP, pass=1" 102,"http-sse-profile-protocol-binding-observeproperty-6a","HELP, pass undefined" 103,"http-sse-profile-protocol-binding-observeproperty-6b","HELP, pass undefined" -104,"http-sse-profile-protocol-binding-unobserveproperty-1","HELP, pass undefined" +104,"http-sse-profile-protocol-binding-unobserveproperty-1","HELP, pass=1" 105,"http-sse-profile-protocol-binding-observeallproperties-1","HELP, pass undefined" 106,"http-sse-profile-protocol-binding-observeallproperties-2","HELP, pass undefined" 107,"http-sse-profile-protocol-binding-observeallproperties-3","HELP, pass undefined" @@ -76,18 +69,14 @@ 114,"http-sse-profile-protocol-binding-observeallproperties-6a","HELP, pass undefined" 115,"http-sse-profile-protocol-binding-observeallproperties-6b","HELP, pass undefined" 116,"http-sse-profile-protocol-binding-unobserveallproperties-1","HELP, pass undefined" -117,"http-sse-profile-protocol-binding-subscribeevent-1","HELP, pass undefined" -118,"http-sse-profile-protocol-binding-subscribeevent-3","HELP, pass undefined" +117,"http-sse-profile-protocol-binding-subscribeevent-1","HELP, pass=1" +118,"http-sse-profile-protocol-binding-subscribeevent-3","HELP, pass=1" 119,"http-sse-profile-protocol-binding-subscribeevent-4","HELP, pass undefined" -120,"http-sse-profile-protocol-binding-subscribeevent-5","HELP, pass=1" -121,"http-sse-profile-protocol-binding-subscribeevent-6a","HELP, pass=1" -122,"http-sse-profile-protocol-binding-subscribeevent-6b","HELP, pass=1" -123,"http-sse-profile-protocol-binding-subscribeevent-6c","HELP, pass=1" 124,"http-sse-profile-protocol-binding-subscribeevent-6d","HELP, pass=1" 125,"http-sse-profile-protocol-binding-subscribeevent-6e","HELP, pass undefined" 126,"http-sse-profile-protocol-binding-subscribeevent-7a","HELP, pass undefined" 127,"http-sse-profile-protocol-binding-subscribeevent-7b","HELP, pass undefined" -128,"http-sse-profile-protocol-binding-unsubscribeevent-1","HELP, pass undefined" +128,"http-sse-profile-protocol-binding-unsubscribeevent-1","HELP, pass=1" 129,"http-sse-profile-protocol-binding-subscribeallevents-1","HELP, pass undefined" 130,"http-sse-profile-protocol-binding-subscribeallevents-3b","HELP, pass undefined" 131,"http-sse-profile-protocol-binding-subscribeallevents-4","HELP, pass undefined" @@ -103,7 +92,7 @@ 141,"http-webhook-profile-protocol-binding-general-1","HELP, pass=1" 142,"http-webhook-profile-protocol-binding-general-3","HELP, pass=1" 143,"http-webhook-profile-protocol-binding-events-1","HELP, pass=1" -144,"http-webhook-profile-protocol-binding-events-2","HELP, no results" +144,"http-webhook-profile-protocol-binding-events-2","HELP, pass undefined" 145,"http-webhook-profile-1","HELP, pass=1" 146,"http-webhook-profile-message-format-1","HELP, pass undefined" 147,"http-webhook-profile-protocol-binding-1","HELP, pass undefined" diff --git a/testing/report.html b/testing/report.html index 0f6606b..14e8a2f 100644 --- a/testing/report.html +++ b/testing/report.html @@ -636,14 +636,11 @@

    Y In order to denote that a given Web Thing conforms to one or more profiles, its Thing Description MUST include a profile member [[wot-thing-description11]]. - In order to denote that a given Web Thing conforms to one or more profiles, its Thing Description MUST include a profile member [[wot-thing-description11]]. 3 - 3 0 2 5 - 5 5: profiling-mechanism-3 TD @@ -651,14 +648,11 @@

    Y The value of the profile member MUST be set to either a valid URI [[RFC3986]] identifying a single profile, or an array of valid URIs identifying multiple profiles. - The value of the profile member MUST be set to either a valid URI [[RFC3986]] identifying a single profile, or an array of valid URIs identifying multiple profiles. 3 - 3 0 2 5 - 5 6: profiling-mechanism-4 TD @@ -666,14 +660,11 @@

    Y In order to use a profile member in a Thing Description, the @context member MUST contain the anyURI https://www.w3.org/2022/wot/td/v1.1 in order to denote that the document is using version 1.1 of the Thing Description specification. [[wot-thing-description11]]. - In order to use a profile member in a Thing Description, the @context member MUST contain the anyURI https://www.w3.org/2022/wot/td/v1.1 in order to denote that the document is using version 1.1 of the Thing Description specification. [[wot-thing-description11]]. 3 - 3 0 2 5 - 5 7: common-constraints-a11y-1 TD @@ -685,8 +676,6 @@

    0 0 0 - 0 - 0 0 8: common-constraints-a11y-2 @@ -699,8 +688,6 @@

    0 0 0 - 0 - 0 0 9: common-constraints-units @@ -709,14 +696,11 @@

    N It is highly RECOMMENDED to provide a unit, if a value has a physical quantity. - It is highly RECOMMENDED to provide a unit, if a value has a physical quantity. 3 - 3 0 1 4 - 4 10: common-constraints-units-metric TD @@ -724,14 +708,11 @@

    N It is highly RECOMMENDED to use the metric system (SI units) for devices that are used in global deployments. - It is highly RECOMMENDED to use the metric system (SI units) for devices that are used in global deployments. 3 - 3 0 1 4 - 4 11: common-constraints-date-format-1 TD @@ -739,14 +720,11 @@

    Y All date and time values MUST use the date-time format defined in [[RFC3339]]. - All date and time values MUST use the date-time format defined in [[RFC3339]]. 3 - 3 0 0 3 - 3 12: common-constraints-security-1 TD Thing @@ -754,14 +732,11 @@

    N Below is a list of security schemes [[wot-thing-description]] which conformant Web Things MAY use: NoSecurityScheme BasicSecurityScheme OAuth2SecurityScheme with the code or client flow. - Below is a list of security schemes [[wot-thing-description]] which conformant Web Things MAY use: NoSecurityScheme BasicSecurityScheme OAuth2SecurityScheme with the code or client flow. 4 - 4 0 0 4 - 4 13: common-constraints-security-2 Consumer @@ -774,8 +749,6 @@

    0 3 3 - 3 - 3 14: common-constraints-security-3 TD Thing @@ -783,14 +756,11 @@

    N A Thing MAY implement multiple security schemes. - A Thing MAY implement multiple security schemes. 3 - 3 0 2 5 - 5 15: common-constraints-security-6 Consumer @@ -803,9 +773,6 @@

    0 2 2 - 0 - 2 - 2 16: common-constraints-security-7 Thing @@ -818,9 +785,6 @@

    0 2 2 - 0 - 2 - 2 17: common-constraints-discovery-1 Thing @@ -828,7 +792,6 @@

    Y A Web Thing's Thing Description [[wot-thing-description]] MUST be retrievable from a Thing Description Server [[wot-architecture11]] using an HTTP [[HTTP11]] URL provided by a Direct Introduction Mechanism [[wot-discovery]]. - A Web Thing's Thing Description [[wot-thing-description]] MUST be retrievable from a Thing Description Server [[wot-architecture11]] using an HTTP [[HTTP11]] URL provided by a Direct Introduction Mechanism [[wot-discovery]]. 4 0 @@ -846,8 +809,6 @@

    0 3 3 - 3 - 3 19: common-constraints-links-2 TD @@ -867,7 +828,6 @@

    N These other link types MAY be ignored by all profile-compliant consumers. - These other link types MAY be ignored by all profile-compliant consumers. 1 0 @@ -885,8 +845,6 @@

    0 4 4 - 4 - 4 22: common-constraints-links-media-types-2 TD Consumer @@ -908,11 +866,9 @@

    If any of the operations defined in the protocol bindings of HTTP profiles are unsuccessful then the Web Thing MUST send an HTTP response with an HTTP error code which describes the reason for the failure. 5 - 5 0 0 5 - 5 29: common-constraints-errors-2 Thing @@ -937,8 +893,6 @@

    0 4 5 - 4 - 5 31: common-constraints-errors-4 Thing @@ -948,11 +902,9 @@

    A Web Thing MUST NOT respond with a 300 Multiple Choices status code. 4 - 4 0 1 5 - 5 32: common-constraints-errors-5 Thing @@ -962,11 +914,9 @@

    Web Things MAY respond with other valid HTTP error codes (e.g. 418 I'm a teapot). 4 - 4 0 0 4 - 4 33: common-constraints-errors-6 Consumer @@ -979,8 +929,6 @@

    0 2 2 - 2 - 2 34: common-constraints-errors-7 Thing @@ -988,14 +936,11 @@

    Y If an HTTP error response contains a body, the content of that body MUST conform with the Problem Details format [[RFC7807]]. - If an HTTP error response contains a body, the content of that body MUST conform with the Problem Details format [[RFC7807]]. 3 - 3 0 2 5 - 5 35: common-constraints-default-language TD @@ -1003,14 +948,11 @@

    Y One Map contained in an @context Array MUST 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). - One Map contained in an @context Array MUST 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). 2 - 2 0 2 4 - 4 36: http-basic-profile-1 Thing Consumer @@ -1030,14 +972,11 @@

    Y In order to denote that a given Web Thing conforms to the HTTP Basic Profile, its Thing Description MUST have a profile member [[wot-thing-description]] with a value of https://www.w3.org/2022/wot/profile/http-basic/v1. - In order to denote that a given Web Thing conforms to the HTTP Basic Profile, its Thing Description MUST have a profile member [[wot-thing-description]] with a value of https://www.w3.org/2022/wot/profile/http-basic/v1. 3 - 3 0 2 5 - 5 38: profile-5-2-thing-protocol-binding-1 Consumer Thing @@ -1050,8 +989,6 @@

    0 4 4 - 4 - 4 39: http-basic-profile-protocol-binding-readproperty-1 TD @@ -1059,7 +996,6 @@

    Y The URL of a Property resource to be used when reading the value of a property MUST be obtained from a Thing Description by locating a Form inside the corresponding PropertyAffordance for which: After defaults have been applied, its op member contains the value readproperty. After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https - The URL of a Property resource to be used when reading the value of a property MUST be obtained from a Thing Description by locating a Form inside the corresponding PropertyAffordance for which: After defaults have been applied, its op member contains the value readproperty. After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https 3 0 @@ -1108,7 +1044,6 @@

    Y The URL of a Property resource to be used when writing the value of a property MUST be obtained from a Thing Description by locating a Form inside the corresponding PropertyAffordance for which: After defaults have been applied, its op member contains the value writeproperty After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https - The URL of a Property resource to be used when writing the value of a property MUST be obtained from a Thing Description by locating a Form inside the corresponding PropertyAffordance for which: After defaults have been applied, its op member contains the value writeproperty After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https 3 0 @@ -1147,11 +1082,9 @@

    If a Web Thing receives an HTTP request following the format above and the Consumer has permission to write the corresponding property, then upon successfully writing the value of the property it MUST send an HTTP response with: Status code set to 204 3 - 3 0 0 3 - 3 47: http-basic-profile-protocol-binding-readallproperties-1 Consumer @@ -1159,7 +1092,6 @@

    Y The URL of a Properties resource to be used when reading the value of all properties at once MUST be obtained from a Thing Description by locating a Form inside the top level forms member for which: Its op member contains the value readallproperties After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https - The URL of a Properties resource to be used when reading the value of all properties at once MUST be obtained from a Thing Description by locating a Form inside the top level forms member for which: Its op member contains the value readallproperties After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https 3 0 @@ -1244,14 +1176,11 @@

    Y If a Web Thing receives an HTTP request following the format above, then upon successfully writing the values of the requested writable properties it MUST send an HTTP response with: Status code set to 204 - If a Web Thing receives an HTTP request following the format above, then upon successfully writing the values of the requested writable properties it MUST send an HTTP response with: Status code set to 204 2 - 2 0 1 3 - 3 55: http-basic-profile-protocol-binding-invokeaction-1 Consumer @@ -1295,14 +1224,11 @@

    Y If a Web Thing receives an HTTP request following the format above then it MUST respond with one of three response formats: Synchronous Action Response Asynchronous Action Response Error Response - If a Web Thing receives an HTTP request following the format above then it MUST respond with one of three response formats: Synchronous Action Response Asynchronous Action Response Error Response 2 - 2 1 0 3 - 3 59: http-basic-profile-protocol-binding-invokeaction-7 Thing @@ -1315,10 +1241,6 @@

    0 0 1 - 1 - 0 - 0 - 1 60: http-basic-profile-protocol-binding-invokeaction-8 Thing @@ -1326,14 +1248,11 @@

    Y If the synchronous member of the ActionAffordance [[wot-thing-description11]] is set to false then the Web Thing MUST respond with an Asynchronous Action Response. - If the synchronous member of the ActionAffordance [[wot-thing-description11]] is set to false then the Web Thing MUST respond with an Asynchronous Action Response. 2 - 2 1 1 4 - 4 61: http-basic-profile-protocol-binding-invokeaction-9 Thing @@ -1341,14 +1260,11 @@

    N If the synchronous member of the ActionAffordance [[wot-thing-description11]] is undefined then the Web Thing MAY respond with either a Synchronous Action Response or Asynchronous Action Response. - If the synchronous member of the ActionAffordance [[wot-thing-description11]] is undefined then the Web Thing MAY respond with either a Synchronous Action Response or Asynchronous Action Response. 2 - 2 0 1 3 - 3 62: http-basic-profile-protocol-binding-invokeaction-10 Thing @@ -1373,10 +1289,6 @@

    0 0 1 - 1 - 0 - 0 - 1 64: http-basic-profile-protocol-binding-invokeaction-12 Thing @@ -1386,11 +1298,9 @@

    If a Web Thing encounters an error in attempting to execute an action before responding to the invokeaction request, then it MUST send an Error Response. 1 - 1 0 1 2 - 2 65: http-basic-profile-protocol-binding-invokeaction-13 Consumer @@ -1403,8 +1313,6 @@

    0 4 4 - 4 - 4 66: http-basic-profile-protocol-binding-invokeaction-14 Consumer Thing @@ -1417,10 +1325,6 @@

    0 0 1 - 1 - 0 - 0 - 1 67: http-basic-profile-protocol-binding-invokeaction-15 Consumer Thing TD @@ -1431,10 +1335,8 @@

    1 1 - 1 2 4 - 4 68: http-basic-profile-protocol-binding-invokeaction-16 TD @@ -1447,10 +1349,6 @@

    0 0 1 - 1 - 0 - 0 - 1 69: http-basic-profile-protocol-binding-invokeaction-17 TD @@ -1463,9 +1361,6 @@

    0 1 1 - 0 - 1 - 1 70: http-basic-profile-protocol-binding-invokeaction-18 TD Thing @@ -1478,10 +1373,6 @@

    0 0 1 - 1 - 0 - 0 - 1 71: http-basic-profile-protocol-binding-invokeaction-19 TD @@ -1494,10 +1385,6 @@

    0 0 1 - 1 - 0 - 0 - 1 72: http-basic-profile-protocol-binding-invokeaction-20 Thing @@ -1510,10 +1397,6 @@

    0 0 1 - 1 - 0 - 0 - 1 73: http-basic-profile-protocol-binding-invokeaction-21 Thing @@ -1526,10 +1409,6 @@

    0 0 1 - 1 - 0 - 0 - 1 74: http-basic-profile-protocol-binding-queryaction-1a Thing TD @@ -1537,14 +1416,11 @@

    Y A Web Thing which provides Asynchronous Action Responses to an invokeaction operation on an Action MUST also support queryaction operations on that same Action. - A Web Thing which provides Asynchronous Action Responses to an invokeaction operation on an Action MUST also support queryaction operations on that same Action. 2 - 2 1 1 4 - 4 75: http-basic-profile-protocol-binding-queryaction-1b Thing TD @@ -1552,14 +1428,11 @@

    N A Web Thing which only provides Synchronous Action Responses to an invokeaction operation on an Action SHOULD NOT support queryaction operations on that same Action. - A Web Thing which only provides Synchronous Action Responses to an invokeaction operation on an Action SHOULD NOT support queryaction operations on that same Action. 2 - 2 0 1 3 - 3 76: http-basic-profile-protocol-binding-queryaction-2 Consumer TD @@ -1570,10 +1443,8 @@

    1 1 - 1 1 3 - 3 77: http-basic-profile-protocol-binding-queryaction-3 Consumer @@ -1586,8 +1457,6 @@

    0 2 2 - 2 - 2 78: http-basic-profile-protocol-binding-queryaction-5 Thing @@ -1595,14 +1464,11 @@

    Y If a Web Thing receives an HTTP request following the format above and the Consumer has permission to query the corresponding ActionStatus resource, then upon successfully reading the status of the action request it MUST send an HTTP response with: Status code set to 200 Content-Type header set to application/json A body containing an ActionStatus object representing the current status of the action request, serialized in JSON - If a Web Thing receives an HTTP request following the format above and the Consumer has permission to query the corresponding ActionStatus resource, then upon successfully reading the status of the action request it MUST send an HTTP response with: Status code set to 200 Content-Type header set to application/json A body containing an ActionStatus object representing the current status of the action request, serialized in JSON 2 - 2 1 1 4 - 4 79: http-basic-profile-protocol-binding-queryaction-7a Thing @@ -1610,14 +1476,11 @@

    Y If the queried action failed to execute, then the status member of the ActionStatus object MUST be set to "failed". - If the queried action failed to execute, then the status member of the ActionStatus object MUST be set to "failed". 2 - 2 1 1 4 - 4 80: http-basic-profile-protocol-binding-queryaction-7b Thing @@ -1625,14 +1488,11 @@

    N If the queried action failed to execute, then the error member MAY provide additional error information conforming to the Problem Details format [[RFC7807]]. - If the queried action failed to execute, then the error member MAY provide additional error information conforming to the Problem Details format [[RFC7807]]. 2 - 2 0 2 4 - 4 81: http-basic-profile-protocol-binding-cancelaction-1a Thing @@ -1640,14 +1500,11 @@

    N A Web Thing which provides Asynchronous Action Responses to an invokeaction operation on an Action MAY also support cancelaction operations on that same Action. - A Web Thing which provides Asynchronous Action Responses to an invokeaction operation on an Action MAY also support cancelaction operations on that same Action. 2 - 2 0 1 3 - 3 82: http-basic-profile-protocol-binding-cancelaction-1b Thing @@ -1655,14 +1512,11 @@

    N A Web Thing which only provides Synchronous Action Responses to an invokeaction operation on an Action SHOULD NOT support cancelaction operations on that same Action. - A Web Thing which only provides Synchronous Action Responses to an invokeaction operation on an Action SHOULD NOT support cancelaction operations on that same Action. 2 - 2 0 2 4 - 4 83: http-basic-profile-protocol-binding-cancelaction-2 Consumer @@ -1675,8 +1529,6 @@

    0 2 2 - 2 - 2 84: http-basic-profile-protocol-binding-cancelaction-3 Consumer @@ -1689,8 +1541,6 @@

    0 2 2 - 2 - 2 85: http-basic-profile-protocol-binding-cancelaction-5 Thing @@ -1700,11 +1550,9 @@

    If a Web Thing receives an HTTP request following the format above and the Consumer has permission to cancel the corresponding Action request, then upon successfully cancelling Action it MUST send an HTTP response with: Status code set to 204 3 - 3 0 1 4 - 4 86: http-basic-profile-protocol-binding-queryallactions-1 Consumer @@ -1717,8 +1565,6 @@

    0 2 2 - 2 - 2 87: http-basic-profile-protocol-binding-queryallactions-3 Consumer @@ -1731,8 +1577,6 @@

    0 2 2 - 2 - 2 88: http-basic-profile-protocol-binding-queryallactions-4 Consumer @@ -1745,8 +1589,6 @@

    0 2 2 - 2 - 2 89: http-basic-profile-protocol-binding-queryallactions-6a Thing @@ -1759,8 +1601,6 @@

    1 3 4 - 3 - 4 90: http-basic-profile-protocol-binding-queryallactions-6b Thing @@ -1773,8 +1613,6 @@

    1 3 4 - 3 - 4 91: http-sse-profile-1 Thing Consumer TD @@ -1784,11 +1622,9 @@

    In order to conform with the HTTP SSE Profile, Web Things and Consumers MUST also conform with all of the assertions in the Common Constraints section. 1 - 1 0 3 4 - 4 92: http-sse-profile-identifier-1 TD @@ -1798,11 +1634,9 @@

    In order to denote that a given Web Thing conforms to the HTTP SSE Profile, its Thing Description MUST have a profile member [[wot-thing-description]] with a value of https://www.w3.org/2022/wot/profile/http-sse/v1. 1 - 1 0 3 4 - 4 93: http-sse-profile-protocol-binding-1 Consumer Thing @@ -1812,11 +1646,9 @@

    A Consumer or Web Thing conforming to the HTTP SSE Profile MUST implement this protocol binding. 1 - 1 0 3 4 - 4 94: http-sse-profile-protocol-binding-observeproperty-1 Consumer @@ -1826,11 +1658,9 @@

    The URL of a Property resource to be used when observing the value of a property MUST be obtained from a Thing Description by locating a Form inside the corresponding PropertyAffordance for which: Its op member contains the value observeproperty After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https Its subprotocol member has a value of sse 1 - 1 0 1 2 - 2 95: http-sse-profile-protocol-binding-observeproperty-2 Consumer @@ -1840,11 +1670,9 @@

    The resolved value of the href member MUST then be used as the URL of the Property resource. 1 - 1 0 1 2 - 2 96: http-sse-profile-protocol-binding-observeproperty-3 Consumer @@ -1857,8 +1685,6 @@

    0 2 2 - 2 - 2 97: http-sse-profile-protocol-binding-observeproperty-4 Thing @@ -1871,8 +1697,6 @@

    0 3 3 - 3 - 3 98: http-sse-profile-protocol-binding-observeproperty-5a Thing @@ -1882,11 +1706,9 @@

    Whenever the value of the specified property changes while the Web Thing has an open connection with a Consumer, the Web Thing MUST send a property value to the Consumer using the event stream format in the Server-Sent Events [[EVENTSOURCE]] specification. 1 - 1 0 2 3 - 3 99: http-sse-profile-protocol-binding-observeproperty-5b Thing @@ -1896,11 +1718,9 @@

    For each message sent, the Web Thing MUST set the event field to the name of the PropertyAffordance and populate the data field with the property value, serialized in JSON and following the data schema specified in the PropertyAffordance. 1 - 1 0 2 3 - 3 100: http-sse-profile-protocol-binding-observeproperty-5c Thing @@ -1910,11 +1730,9 @@

    The id field SHOULD be set to a unique identifier for the property change, for use when re-establishing a dropped connection (see below). 1 - 1 0 2 3 - 3 101: http-sse-profile-protocol-binding-observeproperty-5d Thing @@ -1924,11 +1742,9 @@

    It is RECOMMENDED that the identifier is a timestamp representing the time at which the property changed 1 - 1 0 2 3 - 3 102: http-sse-profile-protocol-binding-observeproperty-6a Consumer @@ -1941,8 +1757,6 @@

    0 2 2 - 2 - 2 103: http-sse-profile-protocol-binding-observeproperty-6b Thing @@ -1955,8 +1769,6 @@

    0 3 3 - 3 - 3 104: http-sse-profile-protocol-binding-unobserveproperty-1 Consumer @@ -1966,11 +1778,9 @@

    In order to stop observing a property, a Consumer MUST terminate the corresponding Server-Sent Events connection with the Web Thing as specified in the Server-Sent Events specification [[EVENTSOURCE]]. 1 - 1 0 1 2 - 2 105: http-sse-profile-protocol-binding-observeallproperties-1 Consumer TD @@ -2124,11 +1934,9 @@

    The URL of an Event resource to be used when subscribing to an event MUST be obtained from a Thing Description by locating a Form inside the corresponding EventAffordance for which: After defaults have been applied, its op member contains the value subscribeevent After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https Its subprotocol member has a value of sse 1 - 1 0 1 2 - 2 118: http-sse-profile-protocol-binding-subscribeevent-3 Consumer @@ -2138,11 +1946,9 @@

    The resolved value of the href member MUST then be used as the URL of the Event resource. 1 - 1 0 1 2 - 2 119: http-sse-profile-protocol-binding-subscribeevent-4 Consumer @@ -2155,8 +1961,6 @@

    0 2 2 - 2 - 2 120: http-sse-profile-protocol-binding-subscribeevent-5 Thing @@ -2164,14 +1968,11 @@

    Y If a Web Thing receives an HTTP request following the format above and the Consumer has permission to subscribe to the corresponding event, then it MUST follow the Server-Sent Events [[EVENTSOURCE]] specification to maintain an open connection with the Consumer and push event data to the Consumer as events of the specified type are emitted. - If a Web Thing receives an HTTP request following the format above and the Consumer has permission to subscribe to the corresponding event, then it MUST follow the Server-Sent Events [[EVENTSOURCE]] specification to maintain an open connection with the Consumer and push event data to the Consumer as events of the specified type are emitted. 2 - 2 0 1 3 - 3 121: http-sse-profile-protocol-binding-subscribeevent-6a Thing @@ -2179,14 +1980,11 @@

    Y Whenever an event of the specified type occurs while the Web Thing has an open connection with a Consumer, the Web Thing MUST send event data to the Consumer using the event stream format in the Server-Sent Events [[EVENTSOURCE]] specification. - Whenever an event of the specified type occurs while the Web Thing has an open connection with a Consumer, the Web Thing MUST send event data to the Consumer using the event stream format in the Server-Sent Events [[EVENTSOURCE]] specification. 2 - 2 0 1 3 - 3 122: http-sse-profile-protocol-binding-subscribeevent-6b Thing @@ -2194,14 +1992,11 @@

    Y For each message sent, the Web Thing MUST set the event field to the name of the EventAffordance and populate the data field with event data, if any. - For each message sent, the Web Thing MUST set the event field to the name of the EventAffordance and populate the data field with event data, if any. 2 - 2 0 1 3 - 3 123: http-sse-profile-protocol-binding-subscribeevent-6c Thing @@ -2209,14 +2004,11 @@

    Y The event data MUST follow the data schema specified in the EventAffordance and be serialized in JSON. - The event data MUST follow the data schema specified in the EventAffordance and be serialized in JSON. 2 - 2 0 1 3 - 3 124: http-sse-profile-protocol-binding-subscribeevent-6d Thing @@ -2229,8 +2021,6 @@

    0 2 3 - 2 - 3 125: http-sse-profile-protocol-binding-subscribeevent-6e Thing @@ -2243,8 +2033,6 @@

    0 3 3 - 3 - 3 126: http-sse-profile-protocol-binding-subscribeevent-7a Consumer @@ -2257,8 +2045,6 @@

    0 2 2 - 2 - 2 127: http-sse-profile-protocol-binding-subscribeevent-7b Thing @@ -2271,8 +2057,6 @@

    0 3 3 - 3 - 3 128: http-sse-profile-protocol-binding-unsubscribeevent-1 Consumer @@ -2282,11 +2066,9 @@

    In order to unsubscribe from an event, a Consumer MUST terminate the corresponding Server-Sent Events connection with the Web Thing as specified in the Server-Sent Events specification [[EVENTSOURCE]]. 1 - 1 0 1 2 - 2 129: http-sse-profile-protocol-binding-subscribeallevents-1 Consumer @@ -2478,8 +2260,6 @@

    0 0 0 - 0 - 0 0 145: http-webhook-profile-1 @@ -2524,7 +2304,6 @@

    Y The URL of an Event resource to be used when subscribing to an event MUST be obtained from a Thing Description by locating a Form inside the corresponding EventAffordance for which: After defaults have been applied, its op member contains the value subscribeevent After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https Its subprotocol member has a value of webhook - The URL of an Event resource to be used when subscribing to an event MUST be obtained from a Thing Description by locating a Form inside the corresponding EventAffordance for which: After defaults have been applied, its op member contains the value subscribeevent After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https Its subprotocol member has a value of webhook 0 0 @@ -2549,7 +2328,6 @@

    Y In order to subscribe to an event, a Consumer MUST provide the listener URL in the request payload of the subscribe operation of the Event resource. - In order to subscribe to an event, a Consumer MUST provide the listener URL in the request payload of the subscribe operation of the Event resource. 0 0 @@ -2598,7 +2376,6 @@

    Y The URL of an Events resource to be used when subscribing to all events emitted by a Web Thing MUST be obtained from a Thing Description by locating a Form inside the top level forms member of a Thing Description for which: Its op member contains the value subscribeallevents After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https Its subprotocol member has a value of webhook - The URL of an Events resource to be used when subscribing to all events emitted by a Web Thing MUST be obtained from a Thing Description by locating a Form inside the top level forms member of a Thing Description for which: Its op member contains the value subscribeallevents After being resolved against a base URL where applicable, the URI scheme [[RFC3986]] of the value of its href member is http or https Its subprotocol member has a value of webhook 0 0 @@ -2623,7 +2400,6 @@

    Y In order to subscribe to all events emitted by a Web Thing, a Consumer MUST send an HTTP request to the Web Thing with: Method set to POST URL set to the URL of the events resource Accept header set to application/json Request Payload contains a JSON object with a subscription request payload. - In order to subscribe to all events emitted by a Web Thing, a Consumer MUST send an HTTP request to the Web Thing with: Method set to POST URL set to the URL of the events resource Accept header set to application/json Request Payload contains a JSON object with a subscription request payload. 0 0 From 29283c3e442bd6975a8411679caebe93cee55983 Mon Sep 17 00:00:00 2001 From: Michael Lagally Date: Wed, 22 Mar 2023 11:12:33 +0100 Subject: [PATCH 30/33] intermediate rebase w/o identifier section --- index.html | 357 +++++++++++++++++++++++++---------------------------- 1 file changed, 170 insertions(+), 187 deletions(-) diff --git a/index.html b/index.html index d7cf4a9..415871d 100644 --- a/index.html +++ b/index.html @@ -150,19 +150,15 @@
  • In addition, it defines a HTTP Basic Profile of the Thing Description, which contains protocol binding rules for HTTP. -

    The normative HTTP Basic Profile is complemented by two - informative profiles for events: The HTTP SSE Profile -

    The normative HTTP Basic Profile is complemented by two - informative profiles for events: The HTTP SSE Profile +

    The normative HTTP Basic Profile is complemented by two + informative profiles for events: The HTTP SSE Profile and the HTTP Webhook Profile. - - +

    In the current version of this document these event bindings are provided in informative sections, to illustrate how these event mechanisms could be supported in other profiles.

    -

    It is planned that future versions of this document normatively define -

    It is planned that future versions of this document normatively define +

    It is planned that future versions of this document normatively define these event mechanisms.

    @@ -187,8 +183,7 @@ hold only for the HTTP Basic Profile subset.

    Future versions of this document may contain other profiles, - e.g. a profile for digital twins and a profile for resource constrained devices.

    - e.g. a profile for digital twins and a profile for resource constrained devices.

    + e.g. a profile for digital twins and a profile for resource constrained devices.

    Motivation for a Profile

    @@ -280,7 +275,7 @@

    Deployment Scenarios

    -

    Use Cases and Requirements

    +

    Summary of Use Cases and Requirements

    A set of over 30 use cases for the Web of Things were contributed by stakeholders from multiple industries for various application domains. @@ -483,16 +478,121 @@

    Additional Definitions

    Profile
    A technical specification which provides a set of assertions such that - any Consumer which conforms with the those - assertions is out-of-the-box - any Consumer which conforms with the those - assertions is out-of-the-box + any Consumer which conforms with the those + assertions is out-of-the-box interoperable with any Thing which also conforms with those assertions.
    + +
    +

    Profile Requirements

    +

    + The following requirements were identified by the WoT profile task force and are addressed by the + Profile 1.0 specification. +

    +

    Interoperability

    + +

    + This is the most important objective of the profile. + A TD Consumer satisfying the requirements of a profile should be able to process any TD also satisfying the + profile + and should be able to correctly interact with all affordances of the Thing such a TD describes. +

    + + This implies that a profile has three parts: +
      +
    • Restrictions on TDs
    • +
    • Implementation requirements, constraints and behavioral assertions for Consumers
    • +
    • Implementation requirements, constraints and behavioral assertions on Things
    • +
    + +
    + Note: The WoT HTTP Basic Profile does not prevent a TD to have forms for additional protocols, + but these can be ignored by compliant consumers, and could be removed without + affecting profile conformance and compatibility. + This may be useful for consumers that support multiple profiles. +
    + +

    Limit and reduce complexity

    + +

    + Complexity addresses at least the following two things to simplify the development and + reduce the implementation effort: +

    +
      +
    • Implementation complexity on a thing and consumer, e.g. eliminating the need of RDF processing, + but still permitting semantic annotations.
    • +
    • Simplifying thing description to have fewer variations.
    • +
    • Limiting the effort for JSON implementation.
    • +
    + +

    No Ambiguities, select single choice

    + +

    + Get rid of ambiguities, i.e. clarify specifications to define interpretation of a TD and behavior of the thing and + consumer. +

    +

    + Examples are the choice of properties vs. actions, use of PUT or POST for HTTP, observe protocols. +

    + +

    Developer guidance

    + +

    + A profile should help define what needs to be implemented. This requirement also includes behavioral goals and + recommendations about best practice for the implementation of Consumers and Things. +

    +

    Multiple profiles (mechanism)

    + +

    + The mechanism used to indicate that a TD satisfies a profile should be general enough to indicate + the TD satisfies the requirements for multiple profiles. +

    + +

    Composable profiles

    + +

    + It should be possible to combine multiple profiles both for production and consumption: +

    +

    + It should be possible to indicate that a consumer can ingest TDs that satisfy one or more profiles, even if each + TDs + individually only satisfies one profile. For example, a Smart Building may need to use both "constrained" devices + and + "unconstrained" devices. A gateway consuming TDs should be able to ingest TDs designed for both the constrained + and unconstrained + contexts. +

    +

    + A Thing that satisfies all the requirements for multiple TDs (for example, a device using protocols common to two + different usage contexts) should be able to indicate that. +

    + +

    Validatible TDs

    + +

    + Whether or not a TD satisfies the requirements of a given profile should be verifiable with automated tools. + We can use the existing TD JSDON Schema as a basis and reuse the existing tooling (TD-playground) +

    +

    Identification of profiles

    + +

    + There should be a mechanism to identify which profiles a TD satisfies. This mechanism should be intrinsic to a TD, + i.e. be in-band. +

    + +

    Finite set of features and capabilities

    + +

    + A profile should limit the number of options, for example the set of possible protocols, + to a finite set, so that a consumer can consume any TD in a given profile with + a finite and static code base. +

    +
    +

    Profiling Mechanism

    @@ -569,14 +669,12 @@

    Accessibility

    users with disabilities.

    - It is REQUIRED to provide a title that can be automatically rendered in a non-visual way - It is REQUIRED to provide a title that can be automatically rendered in a non-visual way + It is REQUIRED to provide a title that can be automatically rendered in a non-visual way (e.g. using a screen reader) for things that may be used in deployments with users with disabilities.

    - It is highly RECOMMENDED to provide a description that can be automatically rendered in a non-visual way - It is highly RECOMMENDED to provide a description that can be automatically rendered in a non-visual way + It is highly RECOMMENDED to provide a description that can be automatically rendered in a non-visual way (e.g. using a screen reader) for things that may be used in deployments with users with disabilities.

    @@ -584,26 +682,22 @@

    Accessibility

    This is just a baseline set of requirements, which needs additional input from the APA group. It needs to be clarified which TD elements are used by people with disabilities and to which these constraints are applied.
    - - +

    Units

    Authors of Thing Descriptions should be aware that units - that are common in their geographic region are not globally applicable - that are common in their geographic region are not globally applicable + that are common in their geographic region are not globally applicable and may lead to misinterpretation with drastic consequences.

    - It is highly RECOMMENDED to provide a unit, - It is highly RECOMMENDED to provide a unit, + It is highly RECOMMENDED to provide a unit, if a value has a physical quantity.

    - It is highly RECOMMENDED to use the metric system (SI units) - It is highly RECOMMENDED to use the metric system (SI units) + It is highly RECOMMENDED to use the metric system (SI units) for devices that are used in global deployments.

    @@ -613,8 +707,7 @@

    Units

    Date Format

    - All date and time values MUST use the date-time format - All date and time values MUST use the date-time format + All date and time values MUST use the date-time format defined in [[RFC3339]].

    @@ -657,29 +750,24 @@ 

    Security

    - Conformant Consumers MUST support at least all of these security schemes. + Conformant Consumers MUST support all of these security schemes.

    - - +

    A Thing MAY implement multiple security schemes.

    - +

    - Conformant Consumers MUST support security bootstrapping for all - Conformant Consumers MUST support security bootstrapping for all + Conformant Consumers MUST support security bootstrapping for all implemented security schemes, as defined in Security Bootstrapping in the WoT Discovery [[wot-discovery]] specification.

    - - +

    - Conformant Things which require authentication in order to retrieve - Conformant Things which require authentication in order to retrieve + Conformant Things which require authentication in order to retrieve their Thing Description MUST implement security bootstrapping, as - defined in - defined in + defined in Security Bootstrapping in the WoT Discovery [[wot-discovery]] specification.

    @@ -689,8 +777,7 @@

    Security

    Discovery

    - A Web Thing's Thing Description [[wot-thing-description]] MUST be - A Web Thing's Thing Description [[wot-thing-description]] MUST be + A Web Thing's Thing Description [[wot-thing-description]] MUST be retrievable from a Thing Description Server [[wot-architecture11]] using an HTTP @@ -707,8 +794,7 @@

    Links

    Hypermedia links in the HTTP Profiles are significantly constrained to ensure a common interpretation and interoperability between things and consumers.

    - - +

    The following keywords are defined for links in the HTTP profiles and MAY be present in profile-compliant TDs with the constraints defined by this section. @@ -719,8 +805,7 @@

    Links

    These other link types MAY be ignored by all profile-compliant consumers.

    - - +

    These links enable consumers to interpret linked content that is provided by the link target in an unambiguous way. @@ -822,8 +907,7 @@

    Media Types for Link Targets

    The following media types from IANA MAY be used as the link targets of profile compliant TDs with the constraints in this section. - Other media types MAY - Other media types MAY + Other media types MAY be present in a TD, however their heir interpretation is undefined in the context of the HTTP profiles and they MAY be ignored by all profile-compliant consumers. @@ -891,8 +975,7 @@

    Media Types for Link Targets

    - - + If a Consumer encounters a link with "rel": "service-doc" and "type": "text/plain", "type": "text/html" or "type": "text/pdf", and is capable of rendering documents in the provided format, then it SHOULD interpret the link as a @@ -901,8 +984,7 @@

    Media Types for Link Targets

    - - + If a Consumer encounters a link with "rel": "item" and "type": "application/td+json" and is capable of rendering a hierarchical tree of Things, then it should interpret the link as an indication that the target is a sub-Thing of @@ -911,8 +993,7 @@

    Media Types for Link Targets

    - - + If a Consumer encounters a link with "rel": "collection" and "type": "application/td+json" and is capable of rendering a @@ -927,7 +1008,7 @@

    Media Types for Link Targets

    -

    Errors

    +

    Errors

    If any of the operations defined in the protocol bindings of HTTP @@ -946,7 +1027,6 @@

    Errors

  • 403 Forbidden
  • 404 Not Found
  • 500 Internal Server Error
  • -
  • 503 Service Unavailable
  • @@ -983,56 +1063,6 @@

    Default Language

    (e.g., en, de-AT, gsw-CH, zh-Hans, zh-Hant-HK, sl-nedis).
    -
    -

    Identifiers

    -

    - Web resources are identified by uniform resource identifiers (URIs). - The Thing Description defines the field -

    - In deployments of multiple devices in the same application context, things must be distinguished by the consumer. - In these cases, these identifiers must be unique. - Use cases with worldwide deployments typically require globally unique identifiers. -

    -
    -

    Format

    -

    - A common and well defined format for these identifiers enables easy implementation - and simplifies handling across manufacturers through the use of libraries. - It also ensures that there are no name clashes of devices from different manufacturers. - The [[UUID]] format has been developed to satisfy these requirements. -

    -

    - - It is RECOMMENDED to use Universally Unique IDentifier (UUID) [[RFC4122]] as common format for identifers. - -

    - - It is RECOMMENDED to use [[UUIDv4]] as common format for unique identifers, where random identifiers are required. - -

    -
    -
    -

    Mutable and Immutable Identifiers

    -

    - Many use cases require that identifiers do not change during the lifecycle of the thing in the application context. - However there are cases, where the IDs must change due to legal or privacy obligations. - IDs should be changed when a device is offboarded and onboarded on a new system (e.g. for change - of ownership). - In these cases, or when a device is moved to a new usage context, identifiers usually must change. -

    - -

    - In certain use cases where privacy is a factor or legal obligations mandate changing identifiers, - the use of a mutable UUID is RECOMMENDED. -

    - -

    - If possible and allowed by law, required immutable IDs SHOULD be made available through a - property rather than used as the id for the TD itself. -

    -
    @@ -1053,8 +1083,7 @@

    HTTP Basic Profile

    In order to conform with the HTTP Basic Profile, Web Things and Consumers MUST also conform with all of the assertions in the -
    Common Constraints - Common Constraints + Common Constraints section.

    @@ -1210,8 +1239,7 @@
    readproperty
  • URL set to the URL of the Property resource
  • Accept header set to application/json
  • - - +
                   GET /things/lamp/properties/on HTTP/1.1
    @@ -1531,42 +1559,32 @@ 
    invokeaction

    - - If the synchronous member of the - If the synchronous member of the + If the synchronous member of the ActionAffordance - [[wot-thing-description11]] is set to true then the Web - [[wot-thing-description11]] is set to true then the Web + [[wot-thing-description11]] is set to true then the Web Thing MUST respond with a Synchronous Action Response.

    - - If the synchronous member of the - If the synchronous member of the + If the synchronous member of the ActionAffordance - [[wot-thing-description11]] is set to false then the Web - [[wot-thing-description11]] is set to false then the Web + [[wot-thing-description11]] is set to false then the Web Thing MUST respond with an Asynchronous Action Response.

    - - If the synchronous member of the - If the synchronous member of the + If the synchronous member of the ActionAffordance - [[wot-thing-description11]] is undefined then the Web - Thing MAY respond with either a - [[wot-thing-description11]] is undefined then the Web - Thing MAY respond with either a + [[wot-thing-description11]] is undefined then the Web + Thing MAY respond with either a Synchronous Action Response or Asynchronous Action Response. @@ -1654,8 +1672,7 @@

    ActionStatus object
    @@ -1684,10 +1699,8 @@
    ActionStatus object
    @@ -1761,18 +1774,7 @@
    Asynchronous Action Response
    "timeRequested": "2021-11-10T11:43:19.135Z" } -
    -

    - In resource constrained environments, the ActionStatus objects of older completed/failed actions MAY be deleted to make room for newly invoked actions. -

    -
    -
    -

    - A Web Thing SHOULD return a 503 error response if the invocation cannot be accepted because the action is unavailable, - e.g. because the Thing is overloaded. -

    -
    - +
    queryaction
    @@ -2328,10 +2330,8 @@
    observeproperty
    It is RECOMMENDED that the identifier is a timestamp representing the time at which the - property changed (see - Date Format for date format - property changed (see - Date Format for date format + property changed (see + Date Format for date format constraints).

    @@ -2489,10 +2489,8 @@ 
    observeallproperties
    below). It is RECOMMENDED that the identifier is a timestamp - representing the time at which the property changed (see - Date Format for date format - representing the time at which the property changed (see - Date Format for date format + representing the time at which the property changed (see + Date Format for date format constraints).

    @@ -2666,10 +2664,8 @@ 
    subscribeevent
    below). It is RECOMMENDED that the identifier is a timestamp - representing the time at which the event ocurred (see - Date Format for date format - representing the time at which the event ocurred (see - Date Format for date format + representing the time at which the event ocurred (see + Date Format for date format constraints).

    @@ -2907,33 +2903,22 @@ 

    Introduction

    The mechanism is scalable and supports Consumers that receive events from multiple Things. Consumers implement a Webhook listener that is handling the event streams generated by Things. - For Webhook mechanism to function, the Consumer provides a server and client behavior. - The client behavior is used for the initial subscription operation, whereas the server behavior is used to - accept the event streams sent by the Thing. - Thus, interactions can be initiated both by the Thing and the Consumer.

    A Webhook is similar to a callback mechanism in programming languages. Consumers can subscribe to events they are interested in by registering a listener with the event endpoint. When the event condition occurs, the WebThing - is notifying all listeners with a corresponding event message, which is transmitted over HTTP(s). - The event message contains details about the event, such as timestamp, event type, - is notifying all listeners with a corresponding event message, which is transmitted over HTTP(s). - The event message contains details about the event, such as timestamp, event type, + is notifying all listeners with a corresponding event message, which is transmitted over HTTP(s). + The event message contains details about the event, such as timestamp, event type, event source etc. in the data payload.

    - Depending on the deployment scenarios and integration requirements for existing consumers, it may be - Depending on the deployment scenarios and integration requirements for existing consumers, it may be + Depending on the deployment scenarios and integration requirements for existing consumers, it may be required to use specific data payload formats (e.g. Cloud Events). - When a listener receives an event message in a data payload, in many cases it just acknowledges the - When a listener receives an event message in a data payload, in many cases it just acknowledges the + When a listener receives an event message in a data payload, in many cases it just acknowledges the successful reception of the event. - Additionally, it may provide a dataResponse payload, which provides a back-channel that can be used - to communicate further details from the consumer to the WebThing. -

    - Additionally, it may provide a dataResponse payload, which provides a back-channel that can be used - to communicate further details from the consumer to the WebThing. -

    + Additionally, it may provide a dataResponse payload, which provides a back-channel that can be used + to communicate further details from the consumer to the WebThing. +

    Depending on the use case, a single listener for multiple things and multiple event types MAY be used. @@ -3046,8 +3031,7 @@

    Message Format

    TODO: Describe data and dataResponse schemas.

    - - +

    Protocol Binding

    @@ -3118,8 +3102,7 @@

    subscribeevent

    The subscription payload contains the URI for the event message listener - in the field with the callbackURI key. - in the field with the callbackURI key. + in the field with the callbackURI key.

    From 4b1b5fb5c7d33faa8a32a6152d64a8564d0b06df Mon Sep 17 00:00:00 2001 From: Michael Lagally Date: Wed, 22 Mar 2023 11:18:40 +0100 Subject: [PATCH 31/33] fixing rebase problem --- index.html | 252 +++++++++++++++++------------------------------------ 1 file changed, 82 insertions(+), 170 deletions(-) diff --git a/index.html b/index.html index 415871d..87939b1 100644 --- a/index.html +++ b/index.html @@ -150,15 +150,15 @@
  • In addition, it defines a HTTP Basic Profile of the Thing Description, which contains protocol binding rules for HTTP. -

    The normative HTTP Basic Profile is complemented by two - informative profiles for events: The HTTP SSE Profile +

    The normative HTTP Basic Profile is complemented by two + informative profiles for events: The HTTP SSE Profile and the HTTP Webhook Profile. - +

    In the current version of this document these event bindings are provided in informative sections, to illustrate how these event mechanisms could be supported in other profiles.

    -

    It is planned that future versions of this document normatively define +

    It is planned that future versions of this document normatively define these event mechanisms.

    @@ -183,7 +183,7 @@ hold only for the HTTP Basic Profile subset.

    Future versions of this document may contain other profiles, - e.g. a profile for digital twins and a profile for resource constrained devices.

    + e.g. a profile for digital twins and a profile for resource constrained devices.

    Motivation for a Profile

    @@ -275,7 +275,7 @@

    Deployment Scenarios

    -

    Summary of Use Cases and Requirements

    +

    Use Cases and Requirements

    A set of over 30 use cases for the Web of Things were contributed by stakeholders from multiple industries for various application domains. @@ -478,121 +478,14 @@

    Additional Definitions

    Profile
    A technical specification which provides a set of assertions such that - any Consumer which conforms with the those - assertions is out-of-the-box + any Consumer which conforms with the those + assertions is out-of-the-box interoperable with any Thing which also conforms with those assertions.
    - -
    -

    Profile Requirements

    -

    - The following requirements were identified by the WoT profile task force and are addressed by the - Profile 1.0 specification. -

    -

    Interoperability

    - -

    - This is the most important objective of the profile. - A TD Consumer satisfying the requirements of a profile should be able to process any TD also satisfying the - profile - and should be able to correctly interact with all affordances of the Thing such a TD describes. -

    - - This implies that a profile has three parts: -
      -
    • Restrictions on TDs
    • -
    • Implementation requirements, constraints and behavioral assertions for Consumers
    • -
    • Implementation requirements, constraints and behavioral assertions on Things
    • -
    - -
    - Note: The WoT HTTP Basic Profile does not prevent a TD to have forms for additional protocols, - but these can be ignored by compliant consumers, and could be removed without - affecting profile conformance and compatibility. - This may be useful for consumers that support multiple profiles. -
    - -

    Limit and reduce complexity

    - -

    - Complexity addresses at least the following two things to simplify the development and - reduce the implementation effort: -

    -
      -
    • Implementation complexity on a thing and consumer, e.g. eliminating the need of RDF processing, - but still permitting semantic annotations.
    • -
    • Simplifying thing description to have fewer variations.
    • -
    • Limiting the effort for JSON implementation.
    • -
    - -

    No Ambiguities, select single choice

    - -

    - Get rid of ambiguities, i.e. clarify specifications to define interpretation of a TD and behavior of the thing and - consumer. -

    -

    - Examples are the choice of properties vs. actions, use of PUT or POST for HTTP, observe protocols. -

    - -

    Developer guidance

    - -

    - A profile should help define what needs to be implemented. This requirement also includes behavioral goals and - recommendations about best practice for the implementation of Consumers and Things. -

    -

    Multiple profiles (mechanism)

    - -

    - The mechanism used to indicate that a TD satisfies a profile should be general enough to indicate - the TD satisfies the requirements for multiple profiles. -

    - -

    Composable profiles

    - -

    - It should be possible to combine multiple profiles both for production and consumption: -

    -

    - It should be possible to indicate that a consumer can ingest TDs that satisfy one or more profiles, even if each - TDs - individually only satisfies one profile. For example, a Smart Building may need to use both "constrained" devices - and - "unconstrained" devices. A gateway consuming TDs should be able to ingest TDs designed for both the constrained - and unconstrained - contexts. -

    -

    - A Thing that satisfies all the requirements for multiple TDs (for example, a device using protocols common to two - different usage contexts) should be able to indicate that. -

    - -

    Validatible TDs

    - -

    - Whether or not a TD satisfies the requirements of a given profile should be verifiable with automated tools. - We can use the existing TD JSDON Schema as a basis and reuse the existing tooling (TD-playground) -

    -

    Identification of profiles

    - -

    - There should be a mechanism to identify which profiles a TD satisfies. This mechanism should be intrinsic to a TD, - i.e. be in-band. -

    - -

    Finite set of features and capabilities

    - -

    - A profile should limit the number of options, for example the set of possible protocols, - to a finite set, so that a consumer can consume any TD in a given profile with - a finite and static code base. -

    -
    -

    Profiling Mechanism

    @@ -669,12 +562,12 @@

    Accessibility

    users with disabilities.

    - It is REQUIRED to provide a title that can be automatically rendered in a non-visual way + It is REQUIRED to provide a title that can be automatically rendered in a non-visual way (e.g. using a screen reader) for things that may be used in deployments with users with disabilities.

    - It is highly RECOMMENDED to provide a description that can be automatically rendered in a non-visual way + It is highly RECOMMENDED to provide a description that can be automatically rendered in a non-visual way (e.g. using a screen reader) for things that may be used in deployments with users with disabilities.

    @@ -682,22 +575,22 @@

    Accessibility

    This is just a baseline set of requirements, which needs additional input from the APA group. It needs to be clarified which TD elements are used by people with disabilities and to which these constraints are applied.
    - +

    Units

    Authors of Thing Descriptions should be aware that units - that are common in their geographic region are not globally applicable + that are common in their geographic region are not globally applicable and may lead to misinterpretation with drastic consequences.

    - It is highly RECOMMENDED to provide a unit, + It is highly RECOMMENDED to provide a unit, if a value has a physical quantity.

    - It is highly RECOMMENDED to use the metric system (SI units) + It is highly RECOMMENDED to use the metric system (SI units) for devices that are used in global deployments.

    @@ -707,7 +600,7 @@

    Units

    Date Format

    - All date and time values MUST use the date-time format + All date and time values MUST use the date-time format defined in [[RFC3339]].

    @@ -750,24 +643,27 @@ 

    Security

    - Conformant Consumers MUST support all of these security schemes. + Conformant Consumers MUST support at least all of these security schemes.

    - +

    A Thing MAY implement multiple security schemes.

    - +

    + A Thing MUST support at least one of the above security schemes. +

    +

    - Conformant Consumers MUST support security bootstrapping for all + Conformant Consumers MUST support security bootstrapping for all implemented security schemes, as defined in Security Bootstrapping in the WoT Discovery [[wot-discovery]] specification.

    - +

    - Conformant Things which require authentication in order to retrieve + Conformant Things which require authentication in order to retrieve their Thing Description MUST implement security bootstrapping, as - defined in + defined in Security Bootstrapping in the WoT Discovery [[wot-discovery]] specification.

    @@ -777,7 +673,7 @@

    Security

    Discovery

    - A Web Thing's Thing Description [[wot-thing-description]] MUST be + A Web Thing's Thing Description [[wot-thing-description]] MUST be retrievable from a Thing Description Server [[wot-architecture11]] using an HTTP @@ -794,7 +690,7 @@

    Links

    Hypermedia links in the HTTP Profiles are significantly constrained to ensure a common interpretation and interoperability between things and consumers.

    - +

    The following keywords are defined for links in the HTTP profiles and MAY be present in profile-compliant TDs with the constraints defined by this section. @@ -805,7 +701,7 @@

    Links

    These other link types MAY be ignored by all profile-compliant consumers.

    - +

    These links enable consumers to interpret linked content that is provided by the link target in an unambiguous way. @@ -907,7 +803,7 @@

    Media Types for Link Targets

    The following media types from IANA MAY be used as the link targets of profile compliant TDs with the constraints in this section. - Other media types MAY + Other media types MAY be present in a TD, however their heir interpretation is undefined in the context of the HTTP profiles and they MAY be ignored by all profile-compliant consumers.
  • href The [[URL]] of an ActionStatus resource which - can be used by queryaction and - can be used by queryaction and + can be used by queryaction and cancelaction operations, the URI scheme [[RFC3986]] of which MUST resolve to @@ -1670,10 +1687,8 @@
    ActionStatus object
    timeRequested A timestamp indicating the time at which the Thing received - the request to execute the action. (See - Date Format for date format - the request to execute the action. (See - Date Format for date format + the request to execute the action. (See + Date Format for date format constraints). optional A timestamp indicating the time at which the Thing successfully completed executing the action, or failed to - execute the action. (See - Date Format for date format - execute the action. (See - Date Format for date format + execute the action. (See + Date Format for date format constraints). optional
    @@ -975,7 +871,7 @@

    Media Types for Link Targets

    - + If a Consumer encounters a link with "rel": "service-doc" and "type": "text/plain", "type": "text/html" or "type": "text/pdf", and is capable of rendering documents in the provided format, then it SHOULD interpret the link as a @@ -984,7 +880,7 @@

    Media Types for Link Targets

    - + If a Consumer encounters a link with "rel": "item" and "type": "application/td+json" and is capable of rendering a hierarchical tree of Things, then it should interpret the link as an indication that the target is a sub-Thing of @@ -993,7 +889,7 @@

    Media Types for Link Targets

    - + If a Consumer encounters a link with "rel": "collection" and "type": "application/td+json" and is capable of rendering a @@ -1008,7 +904,7 @@

    Media Types for Link Targets

    -

    Errors

    +

    Errors

    If any of the operations defined in the protocol bindings of HTTP @@ -1027,6 +923,7 @@

    Errors

  • 403 Forbidden
  • 404 Not Found
  • 500 Internal Server Error
  • +
  • 503 Service Unavailable
  • @@ -1083,7 +980,7 @@

    HTTP Basic Profile

    In order to conform with the HTTP Basic Profile, Web Things and Consumers MUST also conform with all of the assertions in the - Common Constraints + Common Constraints section.

    @@ -1239,7 +1136,7 @@
    readproperty
  • URL set to the URL of the Property resource
  • Accept header set to application/json
  • - +
                   GET /things/lamp/properties/on HTTP/1.1
    @@ -1559,32 +1456,32 @@ 
    invokeaction

    - - If the synchronous member of the + If the synchronous member of the ActionAffordance - [[wot-thing-description11]] is set to true then the Web + [[wot-thing-description11]] is set to true then the Web Thing MUST respond with a Synchronous Action Response.

    - - If the synchronous member of the + If the synchronous member of the ActionAffordance - [[wot-thing-description11]] is set to false then the Web + [[wot-thing-description11]] is set to false then the Web Thing MUST respond with an Asynchronous Action Response.

    - - If the synchronous member of the + If the synchronous member of the ActionAffordance - [[wot-thing-description11]] is undefined then the Web - Thing MAY respond with either a + [[wot-thing-description11]] is undefined then the Web + Thing MAY respond with either a Synchronous Action Response or Asynchronous Action Response. @@ -1672,7 +1569,7 @@

    ActionStatus object
    @@ -1699,8 +1596,8 @@
    ActionStatus object
    @@ -1774,7 +1671,18 @@
    Asynchronous Action Response
    "timeRequested": "2021-11-10T11:43:19.135Z" } - +
    +

    + In resource constrained environments, the ActionStatus objects of older completed/failed actions MAY be deleted to make room for newly invoked actions. +

    +
    +
    +

    + A Web Thing SHOULD return a 503 error response if the invocation cannot be accepted because the action is unavailable, + e.g. because the Thing is overloaded. +

    +
    +
    queryaction
    @@ -2330,8 +2238,8 @@
    observeproperty
    It is RECOMMENDED that the identifier is a timestamp representing the time at which the - property changed (see - Date Format for date format + property changed (see + Date Format for date format constraints).

    @@ -2489,8 +2397,8 @@ 
    observeallproperties
    below). It is RECOMMENDED that the identifier is a timestamp - representing the time at which the property changed (see - Date Format for date format + representing the time at which the property changed (see + Date Format for date format constraints).

    @@ -2664,8 +2572,8 @@ 
    subscribeevent
    below). It is RECOMMENDED that the identifier is a timestamp - representing the time at which the event ocurred (see - Date Format for date format + representing the time at which the event ocurred (see + Date Format for date format constraints).

    @@ -2903,22 +2811,26 @@ 

    Introduction

    The mechanism is scalable and supports Consumers that receive events from multiple Things. Consumers implement a Webhook listener that is handling the event streams generated by Things. + For Webhook mechanism to function, the Consumer provides a server and client behavior. + The client behavior is used for the initial subscription operation, whereas the server behavior is used to + accept the event streams sent by the Thing. + Thus, interactions can be initiated both by the Thing and the Consumer.

    A Webhook is similar to a callback mechanism in programming languages. Consumers can subscribe to events they are interested in by registering a listener with the event endpoint. When the event condition occurs, the WebThing - is notifying all listeners with a corresponding event message, which is transmitted over HTTP(s). - The event message contains details about the event, such as timestamp, event type, + is notifying all listeners with a corresponding event message, which is transmitted over HTTP(s). + The event message contains details about the event, such as timestamp, event type, event source etc. in the data payload.

    - Depending on the deployment scenarios and integration requirements for existing consumers, it may be + Depending on the deployment scenarios and integration requirements for existing consumers, it may be required to use specific data payload formats (e.g. Cloud Events). - When a listener receives an event message in a data payload, in many cases it just acknowledges the + When a listener receives an event message in a data payload, in many cases it just acknowledges the successful reception of the event. - Additionally, it may provide a dataResponse payload, which provides a back-channel that can be used - to communicate further details from the consumer to the WebThing. -

    + Additionally, it may provide a dataResponse payload, which provides a back-channel that can be used + to communicate further details from the consumer to the WebThing. +

    Depending on the use case, a single listener for multiple things and multiple event types MAY be used. @@ -3031,7 +2943,7 @@

    Message Format

    TODO: Describe data and dataResponse schemas.

    - +

    Protocol Binding

    @@ -3102,7 +3014,7 @@

    subscribeevent

    The subscription payload contains the URI for the event message listener - in the field with the callbackURI key. + in the field with the callbackURI key.

    From 4d3e683da3fd1594c2736c80ca46c15aa41bf11b Mon Sep 17 00:00:00 2001 From: Michael Lagally Date: Wed, 22 Mar 2023 11:19:54 +0100 Subject: [PATCH 32/33] fixing rebase problem --- index.html | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/index.html b/index.html index 87939b1..e88a8c1 100644 --- a/index.html +++ b/index.html @@ -960,6 +960,56 @@

    Default Language

    (e.g., en, de-AT, gsw-CH, zh-Hans, zh-Hant-HK, sl-nedis).
    +
    +

    Identifiers

    +

    + Web resources are identified by uniform resource identifiers (URIs). + The Thing Description defines the field +

    + In deployments of multiple devices in the same application context, things must be distinguished by the consumer. + In these cases, these identifiers must be unique. + Use cases with worldwide deployments typically require globally unique identifiers. +

    +
    +

    Format

    +

    + A common and well defined format for these identifiers enables easy implementation + and simplifies handling across manufacturers through the use of libraries. + It also ensures that there are no name clashes of devices from different manufacturers. + The [[UUID]] format has been developed to satisfy these requirements. +

    +

    + + It is RECOMMENDED to use Universally Unique IDentifier (UUID) [[RFC4122]] as common format for identifers. + +

    + + It is RECOMMENDED to use [[UUIDv4]] as common format for unique identifers, where random identifiers are required. + +

    +
    +
    +

    Mutable and Immutable Identifiers

    +

    + Many use cases require that identifiers do not change during the lifecycle of the thing in the application context. + However there are cases, where the IDs must change due to legal or privacy obligations. + IDs should be changed when a device is offboarded and onboarded on a new system (e.g. for change + of ownership). + In these cases, or when a device is moved to a new usage context, identifiers usually must change. +

    + +

    + In certain use cases where privacy is a factor or legal obligations mandate changing identifiers, + the use of a mutable UUID is RECOMMENDED. +

    + +

    + If possible and allowed by law, required immutable IDs SHOULD be made available through a + property rather than used as the id for the TD itself. +

    +
    From c61cf481867ffa6993acba37799f57d54198d3b4 Mon Sep 17 00:00:00 2001 From: Michael Lagally Date: Wed, 22 Mar 2023 11:36:26 +0100 Subject: [PATCH 33/33] rebase problem --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index e88a8c1..44ee42d 100644 --- a/index.html +++ b/index.html @@ -965,7 +965,7 @@

    Identifiers

    Web resources are identified by uniform resource identifiers (URIs). The Thing Description defines the field

    In deployments of multiple devices in the same application context, things must be distinguished by the consumer.

    href The [[URL]] of an ActionStatus resource which - can be used by queryaction and + can be used by queryaction and cancelaction operations, the URI scheme [[RFC3986]] of which MUST resolve to @@ -1687,8 +1584,8 @@
    ActionStatus object
    timeRequested A timestamp indicating the time at which the Thing received - the request to execute the action. (See - Date Format for date format + the request to execute the action. (See + Date Format for date format constraints). optional A timestamp indicating the time at which the Thing successfully completed executing the action, or failed to - execute the action. (See - Date Format for date format + execute the action. (See + Date Format for date format constraints). optional